Añadir un canal
Los siete canales existentes (whatsapp, instagram, messenger, telegram, webchat, email,
x) siguen la misma forma. Estos son los puntos que hay que tocar; usa telegram como plantilla,
que es el más pequeño y el más completo a la vez.
1. El código del canal
Añade el código nuevo a ChannelCode en shared/src/types.ts. Eso propaga el tipo a los dos lados
y hace que TypeScript te señale casi todos los sitios que faltan por tocar.
2. El módulo del backend
En backend/src/channels/<canal>/:
- Controlador con el webhook entrante. Verificación de la firma o del token, si el proveedor la ofrece.
- Normalización a
MessageEnvelope. Es el contrato: si un canal mete aquí un formato propio, el problema se propaga a todo lo demás. - Dispatcher de salida, que traduce del formato interno al del proveedor. Aquí es donde se degradan las capacidades: los botones interactivos que WhatsApp soporta y Telegram no, por ejemplo, tienen que convertirse en una lista numerada.
Decide desde el principio si el canal responde de forma síncrona en el webhook (como WhatsApp
y Telegram) o encolando. Hoy encolar en inbound no funciona: no hay consumidor. Ver
Visión general.
3. La base de datos
Los canales se guardan por cuenta de canal en las tablas de canales. Si el canal necesita credenciales propias, añádelas al esquema con una migración y nunca las guardes en claro.
4. Contactos
El canal tiene que resolver la identidad del remitente contra contacts, para que la misma persona
escribiendo por dos canales sea un solo contacto. Esa lógica está centralizada en el módulo de
contactos; no la reimplementes en el canal.
5. El frontend
En frontend/src/sections/bot/:
- Un diálogo de asistente
<canal>-wizard-dialog.tsx, siguiendo el patrón de pasos de los existentes. - La fila del canal en la tabla de
bot-edit-view.tsx, con su botón de acción. - Las traducciones en
frontend/src/locales/langs/*/common.json, bajobot.<canal>Wizard.*.
6. Variables de entorno
Añade lo que necesite a .env.example, con un comentario encima explicando qué es: ese
comentario es lo que se publica en la
referencia de variables.
7. Documentación
Dos sitios, en el mismo commit que el código:
- El manual de usuario, una página en la sección de canales que explique el asistente paso a paso.
- Esta documentación, si el canal tiene alguna particularidad técnica que merezca contarse.
Lista de comprobación
-
ChannelCodeactualizado enshared/ - Webhook entrante con verificación de firma
- Normalización a
MessageEnvelope - Dispatcher de salida con degradación de capacidades
- Resolución de contacto entre canales
- Migración si hace falta esquema nuevo
- Asistente en el panel y fila en la tabla de canales
- Traducciones
- Variables en
.env.examplecomentadas - Página en el manual de usuario