Lewati ke konten

Ringkasan Provider Messaging

Greentic mendukung beberapa platform messaging melalui Messaging Providers. Setiap provider adalah pack komponen WASM yang menangani:

  • Ingress - Menerima pesan dari platform
  • Egress - Mengirim pesan ke platform
  • Operations - Fitur spesifik platform seperti tombol, card, thread, penanganan file, dan setup webhook

Katalog saat ini mencakup pack messaging untuk Slack, Microsoft Teams, Telegram, WhatsApp, WebChat, WebChat GUI, Webex, SMTP Email, Microsoft Graph Email, HTTP, dan WebSocket.

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 Call
External Platform

Semua provider menormalisasi pesan ke format umum:

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>,
}

Ini memungkinkan flow Anda bekerja di berbagai platform messaging tanpa modifikasi.

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"
}
}

Semua provider mendukung pesan teks dasar:

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

Sebagian besar provider mendukung konten kaya:

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

Elemen interaktif (bergantung pada 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"

Dukungan file dan media:

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

Tulis flow yang bekerja lintas channel:

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."
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: greet
FiturSlackTeamsTelegramWhatsAppWebChatWebexEmail
TeksYaYaYaYaYaYaYa
Rich CardYaYaSebagianYaYaYaTidak
TombolYaYaYaYaYaYaTidak
FileYaYaYaYaYaYaYa
ThreadYaYaYaTidakTidakYaYa
ReaksiYaYaTidakYaTidakTidakTidak

Pilih provider untuk mulai:

  • Telegram - Setup paling mudah, bagus untuk pengujian
  • Slack - Integrasi workspace yang lengkap
  • WebChat - Sematkan di situs web Anda