Saltar al contenido
pcreative Commerce

Avisos y chat por Telegram

Un aviso en el móvil con cada pedido, y poder preguntarle a la tienda desde el mismo sitio.

Un aviso en el móvil con cada pedido, y poder preguntarle a la tienda desde el mismo sitio.

Es opcional: sin configurar, no existe.

Montarlo

1 · Crea el bot. Escribe a @BotFather, /newbot, y guarda el token que te da.

2 · Saca tu chat_id. Escribe cualquier cosa a tu bot y abre https://api.telegram.org/bot<TOKEN>/getUpdates. Sale en message.chat.id.

3 · Ponlo en el .env:

TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_IDS=111111,222222
TELEGRAM_WEBHOOK_SECRET=<algo largo y aleatorio>
TELEGRAM_WEBHOOK_URL=https://tu-tienda/telegram/webhook

Con Docker (docker-compose.full.yml) el backend lee el .env entero, así que estas variables le llegan como cualquier otra: ponlas ahí y reinicia el contenedor.

4 · Da de alta el webhook:

npm run pcc -- ejecutar ./src/scripts/telegram-alta.ts

Te manda un mensaje de prueba si ha ido bien.

Los avisos

El bot escribe a todos los chats de la lista cuando:

CuándoQué dice
Entra un pedidoPedido nº124 — 47.9 EUR y, debajo, el correo del cliente
Se prepara un pedidoPedido nº124 preparado (3 uds): listo para enviar
Se cancela un pedidoPedido nº124 CANCELADO, con (estaba cobrado) si lo estaba, o · devueltos 47.9 EUR si se devolvió el dinero
Quedan pocos códigosQuedan 2 códigos de «Juego · Europa». Cuando se acaben, nadie podrá comprarlo. (solo en variantes con umbral de aviso, mira vender claves)

Cada aviso sale una sola vez por pedido, aunque el evento se reintente.

El idioma de los avisos

Los avisos los disparan eventos, fuera de cualquier petición, así que no hay un «idioma de quien pregunta». Se elige una vez, en el .env:

TELEGRAM_IDIOMA=es     # o en

Sin ponerlo, o con un idioma del que no hay textos, salen en inglés. El mismo ajuste vale para las respuestas fijas del bot («No he sabido qué contestar», «No he podido consultarlo: …»), para el mensaje de prueba del paso 4 y para lo que contesta el copiloto cuando le preguntas algo por Telegram.

Hablar con la tienda

Escríbele al bot con tus palabras y responde con datos reales: ventas, stock, pedidos, clientes. Es el mismo copiloto del panel.

Por Telegram solo consulta, no toca nada. En el panel una propuesta de cambio se revisa con sus valores delante y se aprueba con el ratón; en el móvil se confirma con el pulgar, andando por la calle y sin leerla.

Quién puede usarlo

Telegram no permite hacer un bot privado. No es una limitación de esto: los bots son públicos por diseño y no hay ningún ajuste en BotFather para ocultarlos ni para restringirlos. Cuidado con /setprivacy, que confunde por el nombre — solo decide si el bot ve todos los mensajes dentro de un grupo.

Por eso el control está aquí: solo se atiende a los chat_id de la lista. A cualquier otro no se le contesta nada, ni siquiera «no tienes permiso», porque eso ya le confirma que el bot existe y que hay una tienda detrás. Se queda mirando un chat mudo.

Sin esa lista, un desconocido que encuentre el bot podría preguntarle por tus pedidos y llevarse nombres, direcciones y teléfonos de tus clientes.

Añadir a alguien después

Con el webhook activo, getUpdates deja de funcionar — los mensajes van a un sitio o al otro, nunca a los dos. Así que para dar de alta a una segunda persona:

  1. Que escriba al bot. No le contestará: todavía no está autorizada.
  2. Su chat_id queda en el registro del servidor: telegram: mensaje de un chat NO autorizado — chat_id=… (@usuario)
  3. Añádelo a TELEGRAM_CHAT_IDS y reinicia.

El secreto del webhook

La ruta es pública: la puede llamar cualquiera que adivine la URL. Telegram devuelve TELEGRAM_WEBHOOK_SECRET en una cabecera y lo que no la traiga se descarta.

Sin secreto configurado, la ruta rechaza todo. Es deliberado: una ruta abierta que ejecuta la IA con los datos de tu tienda no puede quedarse viva por un olvido en el .env.

Un nombre que no delate

@mitienda_bot lo encuentra cualquiera que busque tu marca. Un nombre sin relación con la tienda evita que den con él por casualidad — pero eso suma a la lista blanca, no la sustituye. La lista es lo que de verdad protege.

Si algo falla

Un aviso que no sale no impide que el pedido siga su curso: se apunta en el registro y ya está. Vender es lo importante; avisar, lo cómodo.

Para ver cómo está el webhook: https://api.telegram.org/bot<TOKEN>/getWebhookInfo — trae el último error, si lo hubo.