## 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
5.6 KiB
Markdown
118 lines
5.6 KiB
Markdown
> Voltar ao [README](../../../../README.pt-br.md)
|
|
|
|
# WeCom AI Bot
|
|
|
|
O WeCom AI Bot é uma forma oficial de integração de conversas com IA fornecida pelo WeCom. Suporta conversas privadas e em grupo, possui um protocolo de resposta em streaming integrado e suporta o envio proativo da resposta final via `response_url` após um timeout.
|
|
|
|
## Comparação com outros canais WeCom
|
|
|
|
| Recurso | WeCom Bot | WeCom App | **WeCom AI Bot** |
|
|
|---------|-----------|-----------|-----------------|
|
|
| Chat privado | ✅ | ✅ | ✅ |
|
|
| Chat em grupo | ✅ | ❌ | ✅ |
|
|
| Saída em streaming | ❌ | ❌ | ✅ |
|
|
| Push proativo em timeout | ❌ | ✅ | ✅ |
|
|
| Complexidade de configuração | Baixa | Alta | Média |
|
|
|
|
## Configuração
|
|
|
|
```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
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
| Campo | Tipo | Obrigatório | Descrição |
|
|
| ---------------- | ------ | ----------- | -------------------------------------------------- |
|
|
| token | string | Sim | Token de verificação de callback, configurado na página de gerenciamento do AI Bot |
|
|
| encoding_aes_key | string | Sim | Chave AES de 43 caracteres, gerada aleatoriamente na página de gerenciamento do AI Bot |
|
|
| webhook_path | string | Não | Caminho do webhook (padrão: /webhook/wecom-aibot) |
|
|
| allow_from | array | Não | Lista de permissão de IDs de usuários; array vazio permite todos os usuários |
|
|
| welcome_message | string | Não | Mensagem de boas-vindas enviada quando o usuário abre o chat; deixe vazio para desativar |
|
|
| reply_timeout | int | Não | Timeout de resposta em segundos (padrão: 5) |
|
|
| max_steps | int | Não | Número máximo de etapas de execução do agente (padrão: 10) |
|
|
|
|
## Configuração passo a passo
|
|
|
|
1. Faça login no [Console de Administração do WeCom](https://work.weixin.qq.com/wework_admin)
|
|
2. Acesse "Gerenciamento de Apps" → "AI Bot", depois crie ou selecione um AI Bot
|
|
3. Na página de configuração do AI Bot, preencha as informações de "Recebimento de Mensagens":
|
|
- **URL**: `http://<your-server-ip>:18790/webhook/wecom-aibot`
|
|
- **Token**: Gerado aleatoriamente ou personalizado
|
|
- **EncodingAESKey**: Clique em "Gerar Aleatoriamente" para obter uma chave de 43 caracteres
|
|
4. Insira o Token e o EncodingAESKey no arquivo de configuração do PicoClaw, inicie o serviço e volte ao console de administração para salvar (o WeCom enviará uma requisição de verificação)
|
|
|
|
> [!TIP]
|
|
> O servidor precisa ser acessível pelos servidores do WeCom. Se estiver em uma intranet ou desenvolvendo localmente, use [ngrok](https://ngrok.com) ou frp para tunelamento.
|
|
|
|
## Protocolo de resposta em streaming
|
|
|
|
O WeCom AI Bot usa um protocolo de "pull em streaming", diferente da resposta única de um webhook padrão:
|
|
|
|
```
|
|
Usuário envia uma mensagem
|
|
│
|
|
▼
|
|
PicoClaw retorna imediatamente {finish: false} (Agente começa a processar)
|
|
│
|
|
▼
|
|
WeCom faz pull aproximadamente a cada 1 segundo com {msgtype: "stream", stream: {id: "..."}}
|
|
│
|
|
├─ Agente não concluído → retorna {finish: false} (continuar aguardando)
|
|
│
|
|
└─ Agente concluído → retorna {finish: true, content: "conteúdo da resposta"}
|
|
```
|
|
|
|
**Tratamento de timeout** (tarefa excede 30 segundos):
|
|
|
|
Se o processamento do agente demorar mais de aproximadamente 30 segundos (a janela máxima de polling do WeCom é de 6 minutos), o PicoClaw irá:
|
|
|
|
1. Fechar imediatamente o stream e exibir ao usuário: "⏳ 正在处理中,请稍候,结果将稍后发送。"
|
|
2. O agente continua executando em segundo plano
|
|
3. Após a conclusão do agente, a resposta final é enviada proativamente ao usuário via `response_url` incluído na mensagem
|
|
|
|
> `response_url` é emitido pelo WeCom, válido por 1 hora, pode ser usado apenas uma vez, sem necessidade de criptografia — basta fazer um POST com o corpo da mensagem em markdown diretamente.
|
|
|
|
## Mensagem de boas-vindas
|
|
|
|
Quando `welcome_message` está configurado, o PicoClaw responde automaticamente com essa mensagem quando um usuário abre a janela de chat com o AI Bot (evento `enter_chat`). Deixe vazio para ignorar silenciosamente.
|
|
|
|
```json
|
|
"welcome_message": "你好!我是 PicoClaw AI 助手,有什么可以帮你?"
|
|
```
|
|
|
|
## Perguntas frequentes
|
|
|
|
### Falha na verificação da URL de callback
|
|
|
|
- Confirme que o firewall do servidor tem a porta correspondente aberta (padrão 18790)
|
|
- Confirme que `token` e `encoding_aes_key` estão preenchidos corretamente
|
|
- Verifique os logs do PicoClaw para ver se uma requisição GET do WeCom foi recebida
|
|
|
|
### Mensagens sem resposta
|
|
|
|
- Verifique se `allow_from` está restringindo acidentalmente o remetente
|
|
- Procure por `context canceled` ou erros do agente nos logs
|
|
- Confirme que a configuração do agente (ex.: `model_name`) está correta
|
|
|
|
### Nenhum push final recebido para tarefas longas
|
|
|
|
- Confirme que o callback da mensagem inclui `response_url` (suportado apenas pelo novo WeCom AI Bot)
|
|
- Confirme que o servidor consegue fazer requisições de saída (precisa fazer POST para `response_url`)
|
|
- Verifique nos logs as palavras-chave `response_url mode` e `Sending reply via response_url`
|
|
|
|
## Referências
|
|
|
|
- [Documentação de integração do WeCom AI Bot](https://developer.work.weixin.qq.com/document/path/100719)
|
|
- [Descrição do protocolo de resposta em streaming](https://developer.work.weixin.qq.com/document/path/100719)
|
|
- [Resposta proativa via response_url](https://developer.work.weixin.qq.com/document/path/101138)
|