Resumen de Providers de Mensajería
Introducción
Sección titulada «Introducción»Greentic soporta múltiples plataformas de mensajería mediante Providers de Mensajería. Cada provider es un pack de componentes WASM que se encarga de:
- Ingress - Recibir mensajes de la plataforma
- Egress - Enviar mensajes a la plataforma
- Operations - Funcionalidades específicas de la plataforma (botones, cards, hilos)
Providers disponibles
Sección titulada «Providers disponibles» Slack Conéctate a workspaces de Slack con soporte completo para apps
Microsoft Teams Integra canales y chats de Microsoft Teams
Telegram Crea bots de Telegram con botones y teclados inline
WhatsApp Conéctate a la WhatsApp Business API
WebChat Inserta un widget de chat en tu sitio web
Webex Integra Cisco Webex Teams
Correo electrónico Envía y recibe correos electrónicos como mensajes
Arquitectura
Sección titulada «Arquitectura»External Platform (Slack/Teams/Telegram) │ ▼ Webhook┌─────────────────────────────────────────┐│ Ingress Component ││ (Parse platform-specific format) │└─────────────────────────────────────────┘ │ ▼ Normalized Message┌─────────────────────────────────────────┐│ NATS Bus ││ greentic.messaging.ingress.{tenant}... │└─────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────┐│ Flow Executor ││ (Process with your flows) │└─────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────┐│ NATS Bus ││ greentic.messaging.egress.{tenant}... │└─────────────────────────────────────────┘ │ ▼ Platform-specific format┌─────────────────────────────────────────┐│ Egress Component ││ (Format for platform API) │└─────────────────────────────────────────┘ │ ▼ API CallExternal PlatformNormalización de mensajes
Sección titulada «Normalización de mensajes»Todos los providers normalizan los mensajes a un formato común:
pub struct NormalizedMessage { pub id: String, pub channel_id: String, pub sender_id: String, pub sender_name: Option<String>, pub content: String, pub timestamp: u64, pub reply_to: Option<String>, pub attachments: Vec<Attachment>, pub metadata: Option<Value>,}Esto permite que tus flows funcionen en cualquier plataforma de mensajería sin modificaciones.
Configuración del provider
Sección titulada «Configuración del provider»En el bundle
Sección titulada «En el bundle»providers: messaging-telegram: pack: "providers/messaging/messaging-telegram.gtpack" setup_flow: "setup_default" verify_flow: "verify_webhooks"
messaging-slack: pack: "providers/messaging/messaging-slack.gtpack" setup_flow: "setup_default"Respuestas de configuración
Sección titulada «Respuestas de configuración»{ "messaging-telegram": { "enabled": true, "public_base_url": "https://example.ngrok-free.app", "bot_token": "123456789:ABCdefGHI..." }, "messaging-slack": { "enabled": true, "public_base_url": "https://example.ngrok-free.app", "bot_token": "xoxb-xxx-xxx", "slack_app_id": "A07XXX" }}Subjects de NATS
Sección titulada «Subjects de NATS»Los mensajes fluyen por NATS con subjects con alcance por tenant:
| Subject | Dirección |
|---|---|
greentic.messaging.ingress.{env}.{tenant}.{team}.{channel} | Entrante |
greentic.messaging.egress.{env}.{tenant}.{team}.{channel} | Saliente |
Funcionalidades comunes
Sección titulada «Funcionalidades comunes»Mensajes de texto
Sección titulada «Mensajes de texto»Todos los providers soportan mensajes de texto básicos:
- id: reply type: reply config: message: "Hello! How can I help?"Contenido enriquecido
Sección titulada «Contenido enriquecido»La mayoría de los providers soportan contenido enriquecido:
- id: send_card type: adaptive-card config: card: "cards/welcome.json"Botones/acciones
Sección titulada «Botones/acciones»Elementos interactivos (dependen del provider):
- id: ask_choice type: reply config: message: "What would you like to do?" buttons: - label: "Get Help" action: "help" - label: "Contact Support" action: "support"Adjuntos
Sección titulada «Adjuntos»Soporte para archivos y medios:
- id: send_file type: reply config: message: "Here's your report" attachments: - type: file url: "https://example.com/report.pdf" name: "report.pdf"Flows multicanal
Sección titulada «Flows multicanal»Escribe flows que funcionen en varios canales:
name: universal_handlerversion: "1.0"
nodes: - id: greet type: reply config: # Works on any platform message: "Hello! I'm your assistant." next: ask_intent
- id: ask_intent type: reply config: message: "How can I help you today?" # Buttons render differently per platform buttons: - label: "Get Started" action: "start" - label: "Help" action: "help"
triggers: - type: message pattern: "hello|hi" target: greetComparación de providers
Sección titulada «Comparación de providers»| Funcionalidad | Slack | Teams | Telegram | WebChat | Webex | Correo | |
|---|---|---|---|---|---|---|---|
| Texto | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Cards enriquecidas | Sí | Sí | Parcial | Sí | Sí | Sí | No |
| Botones | Sí | Sí | Sí | Sí | Sí | Sí | No |
| Archivos | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Hilos | Sí | Sí | Sí | No | No | Sí | Sí |
| Reacciones | Sí | Sí | No | Sí | No | No | No |
Próximos pasos
Sección titulada «Próximos pasos»Elige un provider para comenzar: