Skip to content

Messaging Channels

RsClaw supports 13 messaging channels plus a custom webhook handler.

Supported Channels

#ChannelProtocolNotes
1WeChat Personalilink long-pollQR scan login. Voice STT, image/file/video, SILK decode.
2Feishu / LarkWebSocketOAuth scan or appId + appSecret. Event dedup, rich text.
3WeComAI Bot WebSocketbotId + secret. Auto-reconnect, markdown replies.
4QQ BotWebSocket GatewayappId + appSecret. Group/C2C/Guild, sandbox mode.
5DingTalkStream Mode WSappKey + appSecret. DM + group, voice transcription.
6TelegramHTTP long-pollbotToken. DM + group (@mention), voice/image/file/video.
7MatrixHTTP /synchomeserver + accessToken. Optional E2EE.
8DiscordGateway WebSocketBot token. Guild/DM, reaction notifications, streaming edits.
9SlackSocket Mode WSbotToken + appToken. No public URL needed.
10WhatsAppWebhook (Cloud API)Meta Cloud API. Webhook verification.
11Signalsignal-cli JSON-RPCPhone number + signal-cli. End-to-end encrypted.
12LINEWebhookchannelAccessToken + channelSecret.
13ZaloWebhookaccessToken + oaSecret. Official Account API.
--Custom WebhookPOSTSend JSON to /hooks/{name}.

Common Features

All channels support:

  • DM/Group policy: open, pairing, allowlist, or disabled
  • Pairing codes: 6-character, 1-hour TTL
  • Text chunking: code-fence protection, auto-split long messages
  • Message retry: exponential backoff
  • Streaming modes: off, partial, block, progress
  • File upload: two-layer confirmation (size + token)
  • Health monitoring: connection status tracking

Adding a Channel

bash
# Interactive
rsclaw configure --section channels

# Or manually in config
json5
{
  channels: {
    telegram: {
      botToken: "${TELEGRAM_BOT_TOKEN}",
    },
    feishu: {
      appId: "cli_xxxx",
      appSecret: "${FEISHU_APP_SECRET}",
    },
  },
}

WeChat Login

bash
rsclaw channels login wechat
# Scan the QR code with WeChat

DM Pairing

When dmPolicy is set to "pairing" (recommended default), new users must enter a 6-character pairing code (1-hour TTL):

bash
# Generate a pairing code
rsclaw pairing pair

# List active pairings
rsclaw pairing list

# Revoke a pairing
rsclaw pairing revoke <device-id>

Users send the pairing code as their first message. Once paired, no further pairing is needed.

Environment Variables

All string values in channel config support ${VAR} substitution:

json5
{
  channels: {
    telegram: {
      botToken: "${TELEGRAM_BOT_TOKEN}",
      dmPolicy: "pairing",
    },
  },
}

Released under MIT / Apache-2.0 License