Chapter 5: Messaging Channel Integration
🎯 Learning Objective: Configure Telegram/Discord/WhatsApp and other channels, understand multi-channel routing, and implement cross-platform message management
🌐 Channel Architecture Overview
OpenClaw supports multiple messaging channels, allowing AI assistants to serve users on their preferred platforms.
Supported Channel Types
- 📱 Instant Messaging: Telegram, WhatsApp, Discord, Slack
- 💬 Enterprise Messaging: Microsoft Teams, Feishu/Lark, WeCom
- 🌍 Other Platforms: iMessage, Signal, Matrix, Web UI
🏗️ Gateway Routing Mechanism
5.1 Architecture Design
┌─────────────────────────────────────────┐
│ User Message Sources │
├─────────────┬─────────────┬─────────────┤
│ Telegram │ Discord │ WhatsApp │
│ Bot API │ Bot API │ Business API │
└─────────────┴─────────────┴─────────────┘
│
▼
┌─────────────────────────────────────────┐
│ OpenClaw Gateway │
├─────────────────────────────────────────┤
│ • Account Management │
│ • Message Routing │
│ • Agent Bindings │
│ • Auth & Permissions │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ Agent Distribution │
├─────────────┬─────────────┬─────────────┤
│ Agent-1 │ Agent-2 │ Agent-3 │
│ (Personal) │ (Customer) │ (Support) │
└─────────────┴─────────────┴─────────────┘
5.2 Core Concepts
Account
- Represents a specific Bot account (e.g., a Telegram Bot Token)
- Each Account connects to only one channel type
- Responsible for receiving and sending messages
Agent
- The AI entity that processes messages
- One Agent can serve multiple Accounts
- Contains independent memory, skills, and configuration
Binding
- Defines which messages are routed to which Agent
- Supports routing by user ID, group ID, keywords, etc.
- Configurable priority and fallback rules
📱 Telegram Integration
5.3 Creating a Telegram Bot
Step 1: Create a Bot via BotFather
1. Search for @BotFather in Telegram
2. Send /newbot
3. Enter the Bot name: "My AI Assistant"
4. Enter the Bot username: "my_ai_assistant_bot"
5. Get the Bot Token: 123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
Step 2: Configure Bot Permissions
Send to @BotFather:
/setprivacy - Disable (allow reading all group messages)
/setjoingroups - Enable (allow adding to groups)
/setcommands - Set Bot commands
Step 3: Configure OpenClaw
{
"telegram": {
"accounts": [
{
"accountId": "main-assistant",
"botToken": "123456789:ABCdefGHIjklMNOpqrSTUvwxYZ",
"name": "Main Assistant",
"enabled": true,
"pollInterval": 2000
}
]
},
"bindings": [
{
"accountId": "main-assistant",
"agentId": "main",
"dmPolicy": "allowlist",
"allowFrom": ["7996447774"], // User ID allowlist
"priority": 1
}
]
}
5.4 Advanced Telegram Features
Inline Button Support
# Send a message with buttons
message action="send"
target="@user123"
message="Please choose an action:"
buttons='[
[{"text": "View Status", "callback_data": "status"}],
[{"text": "Restart Service", "callback_data": "restart"}]
]'
File Handling
# Send a file
message action="send"
target="@user123"
message="Report generated"
media="/path/to/report.pdf"
filename="System_Report.pdf"
Group Management
# Send a message in a group
message action="send"
target="-1001234567890" // Group ID (negative number)
message="Group status update"
# Reply to a specific message
message action="send"
target="@user123"
replyTo="message_id_123"
message="This is a reply"
💬 Discord Integration
5.5 Discord Bot Configuration
Create a Discord Application
1. Visit https://discord.com/developers/applications
2. Click "New Application"
3. Enter the application name
4. Create a Bot on the "Bot" page
5. Copy the Bot Token
6. Set permissions: Send Messages, Read Message History, Use Slash Commands
Configure OpenClaw
{
"discord": {
"accounts": [
{
"accountId": "discord-bot",
"botToken": "your_discord_bot_token_here",
"name": "Discord Assistant",
"enabled": true,
"guildId": "your_guild_id" // Optional: restrict to a specific server
}
]
},
"bindings": [
{
"accountId": "discord-bot",
"agentId": "main",
"dmPolicy": "allowlist",
"allowFrom": ["user_id_1", "user_id_2"]
}
]
}
5.6 Discord-Specific Features
Slash Command Support
# Register a slash command
message action="send"
channel="discord"
target="guild_id"
type="slash_command"
name="status"
description="View system status"
Embeds
message action="send"
channel="discord"
target="channel_id"
embed='{
"title": "System Status Report",
"description": "All services running normally",
"color": 3066993,
"fields": [
{"name": "CPU", "value": "45%", "inline": true},
{"name": "Memory", "value": "2.1GB", "inline": true}
]
}'
📲 WhatsApp Business Integration
5.7 WhatsApp Business API
Apply for a Business Account
1. Apply for WhatsApp Business API access
2. Obtain the Phone Number ID and Access Token
3. Configure the Webhook to receive messages
OpenClaw Configuration
{
"whatsapp": {
"accounts": [
{
"accountId": "business-wa",
"phoneNumberId": "your_phone_number_id",
"accessToken": "your_access_token",
"verifyToken": "your_verify_token",
"name": "Business WhatsApp",
"enabled": true
}
]
}
}
🏢 Enterprise Channel Integration
5.9 Slack Integration
Create a Slack App
1. Visit https://api.slack.com/apps
2. Create a new application
3. Configure OAuth permissions: chat:write, channels:read, users:read
4. Install to the workspace to get the Token
Socket Mode Configuration
{
"slack": {
"accounts": [
{
"accountId": "company-slack",
"botToken": "xoxb-your-bot-token",
"appToken": "xapp-your-app-token",
"socketMode": true,
"name": "Company Slack Assistant",
"enabled": true
}
]
}
}
5.10 Microsoft Teams
{
"teams": {
"accounts": [
{
"accountId": "teams-bot",
"appId": "your_app_id",
"appPassword": "your_app_password",
"name": "Teams Assistant",
"enabled": true
}
]
}
}
🔀 Multi-Channel Routing Strategies
5.11 Advanced Routing Configuration
User-Based Intelligent Routing
{
"bindings": [
{
"accountId": "telegram-main",
"agentId": "personal-assistant",
"dmPolicy": "allowlist",
"allowFrom": ["owner_user_id"],
"priority": 1,
"description": "Owner's personal assistant"
},
{
"accountId": "telegram-support",
"agentId": "customer-service",
"dmPolicy": "open",
"keywords": ["help", "support", "issue"],
"priority": 2,
"description": "Customer service bot"
},
{
"accountId": "*", // Wildcard: all accounts
"agentId": "fallback",
"priority": 999,
"description": "Fallback handler"
}
]
}
Content-Based Routing
{
"bindings": [
{
"accountId": "discord-bot",
"agentId": "tech-support",
"channels": ["tech-help"], // Restrict to specific channels
"keywords": ["bug", "error", "crash"],
"priority": 1
},
{
"accountId": "discord-bot",
"agentId": "general-chat",
"channels": ["general", "random"],
"priority": 2
}
]
}
5.12 Cross-Channel Message Sync
Message Bridge Configuration
{
"bridges": [
{
"name": "admin-sync",
"enabled": true,
"sources": [
{"account": "telegram-main", "userId": "admin_id"},
{"account": "discord-bot", "userId": "admin_discord_id"}
],
"targets": [
{"account": "slack-company", "channel": "admin-alerts"}
],
"filters": ["urgent", "alert", "critical"]
}
]
}
🛡️ Security and Permission Management
5.13 Security Best Practices
Secure Token Storage
# Environment variable approach
export TELEGRAM_BOT_TOKEN="123456789:ABCdef..."
export DISCORD_BOT_TOKEN="your_discord_token"
# Reference in configuration files
{
"telegram": {
"accounts": [
{
"accountId": "main",
"botToken": "${TELEGRAM_BOT_TOKEN}", // Environment variable reference
"name": "Main Assistant"
}
]
}
}
Tiered Permission Control
{
"security": {
"userRoles": {
"admin": {
"users": ["admin_user_id"],
"permissions": ["all"]
},
"moderator": {
"users": ["mod_user_id_1", "mod_user_id_2"],
"permissions": ["read", "moderate", "basic_commands"]
},
"user": {
"users": ["*"], // All users
"permissions": ["read", "basic_commands"]
}
},
"rateLimiting": {
"maxMessagesPerMinute": 30,
"maxCommandsPerHour": 100
}
}
}
5.14 Monitoring and Logging
Message Flow Monitoring
# View message statistics
openclaw status --channels
# Real-time log monitoring
openclaw logs --follow --filter "channel=telegram"
# Filter error logs
openclaw logs --level error --since "1h"
🔧 Troubleshooting
5.15 Common Issues
Issue 1: Bot Not Responding
# Check Bot status
openclaw status --detailed
# Verify Token validity
curl "https://api.telegram.org/bot${BOT_TOKEN}/getMe"
# Check network connectivity
openclaw doctor --check connectivity
Issue 2: Incorrect Message Routing
# View routing rules
openclaw config get bindings
# Test routing logic
openclaw agent --simulate --from "user_id" --message "test"
# Run in debug mode
openclaw gateway --debug --verbose
📋 Chapter Summary
Key Takeaways
- Multi-Channel Support: Telegram, Discord, WhatsApp, and other major platforms
- Intelligent Routing: Flexible routing based on user, content, and time
- Security: Token protection, tiered permissions, rate limiting
- Operations: Health checks, logging, fault diagnosis
Implementation Tips
- Deploy incrementally: Start with a single channel, then expand
- Security first: Strictly configure permissions and access control
- Monitor proactively: Build comprehensive monitoring and alerting
- User experience: Maintain a consistent cross-channel experience
🔗 Related Resources:
📌 This article is written by the AI team at TechsFree
🔗 Read more → Check out TechsFree Tech Blog for more articles on AI, multi-agent systems, and automation!
🌐 Website | 📖 Tech Blog | 💼 Our Services
Top comments (0)