Zum Inhalt springen

Überblick über Messaging-Provider

Greentic unterstützt mehrere Messaging-Plattformen über Messaging-Provider. Jeder Provider ist ein WASM-Komponentenpaket, das Folgendes übernimmt:

  • Ingress - Nachrichten von der Plattform empfangen
  • Egress - Nachrichten an die Plattform senden
  • Operationen - Plattformspezifische Funktionen (Buttons, Karten, Threads)
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 Call
External Platform

Alle Provider normalisieren Nachrichten auf ein gemeinsames 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>,
}

Dadurch können Ihre Flows plattformübergreifend ohne Änderungen arbeiten.

greentic.demo.yaml
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"
answers.json
{
"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"
}
}

Nachrichten fließen über NATS mit tenant-spezifischen Subjects:

SubjectRichtung
greentic.messaging.ingress.{env}.{tenant}.{team}.{channel}Eingehend
greentic.messaging.egress.{env}.{tenant}.{team}.{channel}Ausgehend

Alle Provider unterstützen grundlegende Textnachrichten:

- id: reply
type: reply
config:
message: "Hello! How can I help?"

Die meisten Provider unterstützen Rich Content:

- id: send_card
type: adaptive-card
config:
card: "cards/welcome.json"

Interaktive Elemente (providerabhängig):

- id: ask_choice
type: reply
config:
message: "What would you like to do?"
buttons:
- label: "Get Help"
action: "help"
- label: "Contact Support"
action: "support"

Unterstützung für Dateien und Medien:

- id: send_file
type: reply
config:
message: "Here's your report"
attachments:
- type: file
url: "https://example.com/report.pdf"
name: "report.pdf"

Schreiben Sie Flows, die kanalübergreifend funktionieren:

flows/on_message.ygtc
name: universal_handler
version: "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: greet
FunktionSlackTeamsTelegramWhatsAppWebChatWebexEmail
TextJaJaJaJaJaJaJa
Rich CardsJaJaTeilweiseJaJaJaNein
ButtonsJaJaJaJaJaJaNein
DateienJaJaJaJaJaJaJa
ThreadsJaJaJaNeinNeinJaJa
ReaktionenJaJaNeinJaNeinNeinNein

Wählen Sie einen Provider für den Einstieg:

  • Telegram - Einfachste Einrichtung, ideal zum Testen
  • Slack - Voll ausgestattete Workspace-Integration
  • WebChat - In Ihre Website einbetten