Saltar al contenido principal

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, bajo bot.<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​

  • ChannelCode actualizado en shared/
  • 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.example comentadas
  • Página en el manual de usuario