## Config field fixes (cross-verified against Go source) - MaixCam: server_address → host + port - IRC: use_tls → tls, channels_to_join → channels (all 6 languages) - WeCom AI Bot: callback port 18791 → 18790 - credential_encryption: base_url → api_base, add required model field, remove incorrect passphrase-only mode docs - providers.md: agents.defaults.model → model_name (×4), remove non-existent session.backlog_limit - migration guide, troubleshooting: agents.defaults.model → model_name - ANTIGRAVITY_AUTH: fix file path, Go 1.21 → 1.25, model → model_name - spawn-tasks: fix truncated file, add Heartbeat introduction - tools_configuration: add Tavily/SearXNG/GLMSearch, exec allow_remote/ timeout_seconds/custom_allow_patterns, cron allow_command, skills github/search_cache, clawhub timeout/max_zip_size/max_response_size - configuration: fix builtin skills path (build-time embedded, not cwd), HEARTBEAT.md marked auto-generated ## Broken link fixes (15 total) - chat-apps.md: WeCom/Matrix links with wrong relative paths - providers.md: migration link with extra docs/ prefix - hardware-compatibility.md: README links with wrong depth (all 5 langs) - chat-apps.md: WhatsApp dead links → anchor links (zh/ja) ## Getting-started accuracy - README (all 6 langs): add picoclaw.io as recommended download, add missing picoclaw model CLI command - docker.md: clarify first-run trigger condition (all 6 langs) - configuration.md: fix builtin skills path description (all 6 langs) ## QQ channel - Add quick setup via q.qq.com/qqbot/openclaw (one-click bot creation) - Add manual setup as fallback (all 6 languages) ## Feishu channel - Update setup flow: WebSocket/SDK mode, no webhook URL needed - Preserve Lark international domain note (all 6 languages) ## chat-apps.md - Add Feishu, Slack, IRC, OneBot detail sections (all 6 languages) - Add MaixCam section to ja/fr/pt-br/vi - Fix all channel doc links to point to correct language version ## New translations (25 files, 5 docs × 5 languages) debug.md, credential_encryption.md, hardware-compatibility.md, ANTIGRAVITY_AUTH.md, ANTIGRAVITY_USAGE.md → zh/ja/fr/pt-br/vi ## Channel docs (6 languages each, 60 new files) telegram, discord, qq, feishu, maixcam, dingtalk, line, slack, onebot, wecom/wecom_aibot, wecom/wecom_app, wecom/wecom_bot Co-authored-by: BeaconCat <BeaconCat@users.noreply.github.com>
118 lines
4.9 KiB
Markdown
118 lines
4.9 KiB
Markdown
> Back to [README](../../../../README.md)
|
|
|
|
# WeCom AI Bot
|
|
|
|
The WeCom AI Bot is an official AI conversation integration provided by WeCom. It supports both private and group chats, has a built-in streaming response protocol, and supports proactively pushing the final reply via `response_url` after a timeout.
|
|
|
|
## Comparison with Other WeCom Channels
|
|
|
|
| Feature | WeCom Bot | WeCom App | **WeCom AI Bot** |
|
|
|---------|-----------|-----------|-----------------|
|
|
| Private Chat | ✅ | ✅ | ✅ |
|
|
| Group Chat | ✅ | ❌ | ✅ |
|
|
| Streaming Output | ❌ | ❌ | ✅ |
|
|
| Proactive Push on Timeout | ❌ | ✅ | ✅ |
|
|
| Configuration Complexity | Low | High | Medium |
|
|
|
|
## Configuration
|
|
|
|
```json
|
|
{
|
|
"channels": {
|
|
"wecom_aibot": {
|
|
"enabled": true,
|
|
"token": "YOUR_TOKEN",
|
|
"encoding_aes_key": "YOUR_43_CHAR_ENCODING_AES_KEY",
|
|
"webhook_path": "/webhook/wecom-aibot",
|
|
"allow_from": [],
|
|
"welcome_message": "你好!有什么可以帮助你的吗?",
|
|
"max_steps": 10
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
| Field | Type | Required | Description |
|
|
| ---------------- | ------ | -------- | -------------------------------------------------- |
|
|
| token | string | Yes | Callback verification token, configured on the AI Bot management page |
|
|
| encoding_aes_key | string | Yes | 43-character AES key, randomly generated on the AI Bot management page |
|
|
| webhook_path | string | No | Webhook path (default: /webhook/wecom-aibot) |
|
|
| allow_from | array | No | User ID allowlist; empty array allows all users |
|
|
| welcome_message | string | No | Welcome message sent when a user opens the chat; leave empty to disable |
|
|
| reply_timeout | int | No | Reply timeout in seconds (default: 5) |
|
|
| max_steps | int | No | Maximum agent execution steps (default: 10) |
|
|
|
|
## Setup
|
|
|
|
1. Log in to the [WeCom Admin Console](https://work.weixin.qq.com/wework_admin)
|
|
2. Go to "App Management" → "AI Bot", then create or select an AI Bot
|
|
3. On the AI Bot configuration page, fill in the "Message Reception" details:
|
|
- **URL**: `http://<your-server-ip>:18790/webhook/wecom-aibot`
|
|
- **Token**: Randomly generated or custom
|
|
- **EncodingAESKey**: Click "Random Generate" to get a 43-character key
|
|
4. Enter the Token and EncodingAESKey into the PicoClaw config file, start the service, then return to the admin console to save (WeCom will send a verification request)
|
|
|
|
> [!TIP]
|
|
> The server must be accessible by WeCom's servers. If you are on an intranet or developing locally, use [ngrok](https://ngrok.com) or frp for tunneling.
|
|
|
|
## Streaming Response Protocol
|
|
|
|
WeCom AI Bot uses a "streaming pull" protocol, which differs from the one-shot reply of a standard webhook:
|
|
|
|
```
|
|
User sends a message
|
|
│
|
|
▼
|
|
PicoClaw immediately returns {finish: false} (Agent starts processing)
|
|
│
|
|
▼
|
|
WeCom pulls approximately every 1 second with {msgtype: "stream", stream: {id: "..."}}
|
|
│
|
|
├─ Agent not done → returns {finish: false} (keep waiting)
|
|
│
|
|
└─ Agent done → returns {finish: true, content: "reply content"}
|
|
```
|
|
|
|
**Timeout Handling** (task exceeds 30 seconds):
|
|
|
|
If the Agent takes longer than approximately 30 seconds (WeCom's maximum polling window is 6 minutes), PicoClaw will:
|
|
|
|
1. Immediately close the stream and show the user: "⏳ 正在处理中,请稍候,结果将稍后发送。"
|
|
2. The Agent continues running in the background
|
|
3. Once the Agent finishes, the final reply is proactively pushed to the user via the `response_url` included in the message
|
|
|
|
> `response_url` is issued by WeCom, valid for 1 hour, can only be used once, requires no encryption — just POST the markdown message body directly.
|
|
|
|
## Welcome Message
|
|
|
|
When `welcome_message` is configured, PicoClaw will automatically reply with it when a user opens the chat window with the AI Bot (`enter_chat` event). Leave it empty to silently ignore the event.
|
|
|
|
```json
|
|
"welcome_message": "你好!我是 PicoClaw AI 助手,有什么可以帮你?"
|
|
```
|
|
|
|
## FAQ
|
|
|
|
### Callback URL Verification Failed
|
|
|
|
- Confirm the server firewall has the relevant port open (default 18790)
|
|
- Confirm `token` and `encoding_aes_key` are entered correctly
|
|
- Check PicoClaw logs to see if a GET request from WeCom was received
|
|
|
|
### Messages Not Getting a Reply
|
|
|
|
- Check whether `allow_from` is accidentally restricting the sender
|
|
- Look for `context canceled` or Agent errors in the logs
|
|
- Confirm the Agent configuration (e.g., `model_name`) is correct
|
|
|
|
### No Final Push Received for Long-Running Tasks
|
|
|
|
- Confirm the message callback includes `response_url` (only supported by the newer WeCom AI Bot)
|
|
- Confirm the server can make outbound requests (needs to POST to `response_url`)
|
|
- Check logs for keywords `response_url mode` and `Sending reply via response_url`
|
|
|
|
## Reference
|
|
|
|
- [WeCom AI Bot Integration Docs](https://developer.work.weixin.qq.com/document/path/100719)
|
|
- [Streaming Response Protocol](https://developer.work.weixin.qq.com/document/path/100719)
|
|
- [Proactive Reply via response_url](https://developer.work.weixin.qq.com/document/path/101138)
|