## 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
6.2 KiB
Markdown
118 lines
6.2 KiB
Markdown
> [README](../../../../README.ja.md) に戻る
|
||
|
||
# 企業WeChat AIボット
|
||
|
||
企業WeChat AIボット(AI Bot)は、企業WeChatが公式に提供するAI会話連携方式です。プライベートチャットとグループチャットの両方をサポートし、ストリーミングレスポンスプロトコルを内蔵しており、タイムアウト後に `response_url` を通じて最終返信をプッシュする機能もサポートしています。
|
||
|
||
## 他のWeCom チャンネルとの比較
|
||
|
||
| 機能 | WeCom Bot | WeCom App | **WeCom AI Bot** |
|
||
|------|-----------|-----------|-----------------|
|
||
| プライベートチャット | ✅ | ✅ | ✅ |
|
||
| グループチャット | ✅ | ❌ | ✅ |
|
||
| ストリーミング出力 | ❌ | ❌ | ✅ |
|
||
| タイムアウト時のプッシュ | ❌ | ✅ | ✅ |
|
||
| 設定の複雑さ | 低 | 高 | 中 |
|
||
|
||
## 設定
|
||
|
||
```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
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
| フィールド | 型 | 必須 | 説明 |
|
||
| ---------------- | ------ | ---- | -------------------------------------------------- |
|
||
| token | string | はい | コールバック検証トークン。AIボット管理ページで設定 |
|
||
| encoding_aes_key | string | はい | 43文字のAESキー。AIボット管理ページでランダム生成 |
|
||
| webhook_path | string | いいえ | Webhookパス(デフォルト:/webhook/wecom-aibot) |
|
||
| allow_from | array | いいえ | ユーザーIDの許可リスト。空配列は全ユーザーを許可 |
|
||
| welcome_message | string | いいえ | ユーザーがチャットを開いたときに送信するウェルカムメッセージ。空白の場合は送信しない |
|
||
| reply_timeout | int | いいえ | 返信タイムアウト(秒、デフォルト:5) |
|
||
| max_steps | int | いいえ | エージェントの最大実行ステップ数(デフォルト:10) |
|
||
|
||
## セットアップ手順
|
||
|
||
1. [企業WeChat管理コンソール](https://work.weixin.qq.com/wework_admin) にログイン
|
||
2. 「アプリ管理」→「AIボット」に進み、AIボットを作成または選択
|
||
3. AIボット設定ページで「メッセージ受信」情報を入力:
|
||
- **URL**:`http://<your-server-ip>:18790/webhook/wecom-aibot`
|
||
- **Token**:ランダム生成またはカスタム
|
||
- **EncodingAESKey**:「ランダム生成」をクリックして43文字のキーを取得
|
||
4. TokenとEncodingAESKeyをPicoClawの設定ファイルに入力し、サービスを起動してから管理コンソールに戻って保存(企業WeChatが検証リクエストを送信します)
|
||
|
||
> [!TIP]
|
||
> サーバーは企業WeChatのサーバーからアクセス可能である必要があります。イントラネットやローカル開発環境の場合は、[ngrok](https://ngrok.com) またはfrpを使用してトンネリングしてください。
|
||
|
||
## ストリーミングレスポンスプロトコル
|
||
|
||
WeCom AIボットは「ストリーミングプル」プロトコルを使用しており、通常のWebhookの一回限りの返信とは異なります:
|
||
|
||
```
|
||
ユーザーがメッセージを送信
|
||
│
|
||
▼
|
||
PicoClawが即座に {finish: false} を返す(エージェントが処理開始)
|
||
│
|
||
▼
|
||
企業WeChatが約1秒ごとに {msgtype: "stream", stream: {id: "..."}} でプル
|
||
│
|
||
├─ エージェント未完了 → {finish: false} を返す(待機継続)
|
||
│
|
||
└─ エージェント完了 → {finish: true, content: "返信内容"} を返す
|
||
```
|
||
|
||
**タイムアウト処理**(タスクが30秒を超える場合):
|
||
|
||
エージェントの処理時間が約30秒を超えた場合(企業WeChatの最大ポーリングウィンドウは6分)、PicoClawは:
|
||
|
||
1. 即座にストリームを閉じ、ユーザーに「⏳ 正在处理中,请稍候,结果将稍后发送。」と表示
|
||
2. エージェントはバックグラウンドで処理を継続
|
||
3. エージェント完了後、メッセージに含まれる `response_url` を通じて最終返信をユーザーにプッシュ
|
||
|
||
> `response_url` は企業WeChatが発行し、有効期限は1時間、使用は1回限りで、暗号化不要。マークダウンメッセージ本文をそのままPOSTするだけです。
|
||
|
||
## ウェルカムメッセージ
|
||
|
||
`welcome_message` を設定すると、ユーザーがAIボットとのチャットウィンドウを開いたとき(`enter_chat` イベント)に、PicoClawが自動的にそのメッセージを返信します。空白の場合は無視されます。
|
||
|
||
```json
|
||
"welcome_message": "你好!我是 PicoClaw AI 助手,有什么可以帮你?"
|
||
```
|
||
|
||
## よくある質問
|
||
|
||
### コールバックURL検証の失敗
|
||
|
||
- サーバーのファイアウォールで該当ポートが開放されているか確認(デフォルト18790)
|
||
- `token` と `encoding_aes_key` が正しく入力されているか確認
|
||
- PicoClawのログに企業WeChatからのGETリクエストが届いているか確認
|
||
|
||
### メッセージに返信がない
|
||
|
||
- `allow_from` が誤って送信者を制限していないか確認
|
||
- ログに `context canceled` またはエージェントエラーが出ていないか確認
|
||
- エージェント設定(`model_name` など)が正しいか確認
|
||
|
||
### 長時間タスクで最終プッシュが届かない
|
||
|
||
- メッセージコールバックに `response_url` が含まれているか確認(新バージョンの企業WeChat AIボットのみ対応)
|
||
- サーバーが外部ネットワークへのアウトバウンドリクエストを送信できるか確認(`response_url` へのPOSTが必要)
|
||
- ログのキーワード `response_url mode` と `Sending reply via response_url` を確認
|
||
|
||
## 参考ドキュメント
|
||
|
||
- [企業WeChat AIボット連携ドキュメント](https://developer.work.weixin.qq.com/document/path/100719)
|
||
- [ストリーミングレスポンスプロトコルの説明](https://developer.work.weixin.qq.com/document/path/100719)
|
||
- [response_url によるプロアクティブ返信](https://developer.work.weixin.qq.com/document/path/101138)
|