Messaging Extensions Overview
Introduction
Section intitulée « Introduction »Greentic supports multiple messaging platforms through messaging extension packs. Each extension is a WASM pack that handles:
- Ingress - Receiving messages from the platform
- Egress - Sending messages to the platform
- Operations - Platform-specific features such as buttons, cards, threads, file handling, and webhook setup
The current catalog includes Slack, Microsoft Teams, Telegram, WhatsApp, WebChat, WebChat GUI, Webex, and Email messaging packs.
Available Providers
Section intitulée « Available Providers »Architecture
Section intitulée « Architecture »External Platform (Slack/Teams/Telegram) │ ▼ Webhook┌─────────────────────────────────────────┐│ Ingress Component ││ (Parse platform-specific format) │└─────────────────────────────────────────┘ │ ▼ Normalized Message┌─────────────────────────────────────────┐│ Runtime Router ││ greentic.messaging.ingress.{tenant}... │└─────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────┐│ Flow Executor ││ (Process with your flows) │└─────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────┐│ Runtime Router ││ greentic.messaging.egress.{tenant}... │└─────────────────────────────────────────┘ │ ▼ Platform-specific format┌─────────────────────────────────────────┐│ Egress Component ││ (Format for platform API) │└─────────────────────────────────────────┘ │ ▼ API CallExternal PlatformMessage Normalization
Section intitulée « Message Normalization »All providers normalize messages to a common format:
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>,}This allows your flows to work across any messaging platform without modification.
Extension Configuration
Section intitulée « Extension Configuration »Messaging extensions are normally selected with gtc wizard, which writes the bundle metadata and pack references for you. The built-in catalog uses OCI references such as:
oci://ghcr.io/greenticai/packs/messaging/messaging-slack:latestoci://ghcr.io/greenticai/packs/messaging/messaging-teams:latestoci://ghcr.io/greenticai/packs/messaging/messaging-telegram:latestoci://ghcr.io/greenticai/packs/messaging/messaging-whatsapp:latestoci://ghcr.io/greenticai/packs/messaging/messaging-webchat:latestoci://ghcr.io/greenticai/packs/messaging/messaging-webchat-gui:latestoci://ghcr.io/greenticai/packs/messaging/messaging-webex:latestoci://ghcr.io/greenticai/packs/messaging/messaging-email:latestSetup Answers
Section intitulée « Setup Answers »Run gtc setup ./my-bundle interactively, or provide an answers file that matches the wizard schema:
{ "messaging-telegram": { "enabled": true, "public_base_url": "https://example.ngrok-free.app", "telegram_bot_token": "123456789:ABCdefGHI..." }, "messaging-slack": { "enabled": true, "public_base_url": "https://example.ngrok-free.app", "slack_bot_token": "xoxb-xxx-xxx", "slack_app_id": "A07XXX" }}Common Features
Section intitulée « Common Features »Text Messages
Section intitulée « Text Messages »All providers support basic text messages:
- id: reply type: reply config: message: "Hello! How can I help?"Rich Content
Section intitulée « Rich Content »Most providers support rich content:
- id: send_card type: adaptive-card config: card: "cards/welcome.json"Buttons/Actions
Section intitulée « Buttons/Actions »Interactive elements (provider-dependent):
- id: ask_choice type: reply config: message: "What would you like to do?" buttons: - label: "Get Help" action: "help" - label: "Contact Support" action: "support"Attachments
Section intitulée « Attachments »File and media support:
- id: send_file type: reply config: message: "Here's your report" attachments: - type: file url: "https://example.com/report.pdf" name: "report.pdf"Multi-Channel Flows
Section intitulée « Multi-Channel Flows »Write flows that work across channels:
name: universal_handlerversion: "1.0"
nodes: - id: greet type: reply config: # Works on any platform message: "Hello! I'm your assistant." to: 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: greetProvider Comparison
Section intitulée « Provider Comparison »| Feature | Slack | Teams | Telegram | WebChat | Webex | ||
|---|---|---|---|---|---|---|---|
| Text | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Native rich layout | Block Kit | Adaptive Cards | Inline/reply keyboards | Interactive messages/templates | Adaptive Cards | Adaptive Cards | HTML |
| Adaptive Card handling | Transformed | Native | Transformed | Transformed | Native | Native subset | Transformed to HTML |
| Buttons | Yes | Yes | Yes | Yes | Yes | Yes | Links/forms |
| Files | Yes | Yes | Yes | Yes | Yes | Yes | Attachments |
| Threads/replies | Threads | Conversations/replies | Reply-to/topics only | No | Conversation history | Threads/spaces | Email headers |
| Reactions | Platform-dependent | Platform-dependent | No | No | No | No | No |
Next Steps
Section intitulée « Next Steps »Choose a provider to get started: