OpenClaw

Canal DingTalk do OpenClaw

Empresarial
Médio

Conecte o OpenClaw ao DingTalk (钉钉) através de um plugin comunitário. Esta integração usa o modo Stream do DingTalk (conexão longa WebSocket), sem necessidade de IP público ou domínio. Suporta mensagens diretas, chats em grupo, texto/imagem/áudio/vídeo/arquivos e respostas em streaming via AI Card. Instale o plugin, crie um app empresarial interno no DingTalk, insira as credenciais e está pronto.

O canal DingTalk é integrado através de um plugin comunitário de terceiros, não é um canal oficial embutido do OpenClaw. Recomendamos usar o plugin @soimy/dingtalk, mantido ativamente pela comunidade e com funcionamento estável. Se encontrar problemas, reporte no repositório GitHub do plugin.

Info rápida
DificuldadeMédio
CategoriaEmpresarial
Recursos suportados4 / 6

DingTalk Recursos suportados

Mensagens de texto

Suportado

Mídia e arquivos

Suportado

Reações

Não suportado

Threads

Não suportado

Mensagens de voz

Suportado

Chat em grupo

Suportado

DingTalk Pré-requisitos

  • Permissão de administrador ou desenvolvedor na organização DingTalk
  • O plugin DingTalk instalado: openclaw plugins install @soimy/dingtalk
  • OpenClaw Gateway em execução e configurado
  • Node.js 18+ instalado no seu servidor

DingTalk Configuração rápida

1

Instalar o plugin DingTalk

Execute 'openclaw plugins install @soimy/dingtalk' no terminal para instalar o plugin comunitário DingTalk. Para processamento assíncrono e outros recursos avançados, você também pode escolher o plugin '@dingtalk-real-ai/dingtalk-connector'.

2

Criar um app empresarial interno no DingTalk

Acesse a plataforma aberta do DingTalk (open-dev.dingtalk.com) e crie um app empresarial interno. Na página de credenciais do app, obtenha o ClientID (AppKey) e o ClientSecret (AppSecret). Em capacidades do app, adicione a capacidade de 'Bot' e selecione o modo Stream para recebimento de mensagens.

3

Configurar permissões e publicar

Na gestão de permissões, conceda as permissões necessárias: Card.Instance.Write, Card.Streaming.Write, envio de mensagens pelo bot, upload de mídia, ConvFile.Space.Read, Storage.File.Read, etc. Após concluir, publique o app e aguarde a aprovação.

4

Configurar o OpenClaw e testar

Adicione a configuração do canal DingTalk em ~/.openclaw/openclaw.json, preenchendo clientId e clientSecret. Execute 'openclaw gateway restart' para reiniciar o Gateway e envie uma mensagem ao bot no DingTalk para testar.

DingTalk Exemplo de configuração

config.json
{
  "channels": {
    "dingtalk": {
      "enabled": true,
      "clientId": "dingXXXXXX",
      "clientSecret": "your-app-secret",
      "robotCode": "dingXXXXXX",
      "corpId": "dingXXXXXX",
      "dmPolicy": "open",
      "groupPolicy": "open",
      "messageType": "markdown"
    }
  }
}

DingTalk Guia de Integração

Visão geral da arquitetura

O OpenClaw se conecta ao DingTalk pelo modo Stream (conexão longa WebSocket) da plataforma aberta. Diferente dos webhooks tradicionais, no modo Stream o Gateway inicia ativamente uma conexão WebSocket com os servidores do DingTalk, recebendo eventos em tempo real, sem necessidade de IP público ou domínio. Fluxo de mensagens: Usuário envia mensagem no DingTalk → Plataforma aberta DingTalk → Push Stream para o Gateway → OpenClaw processa com IA → Resposta via API Bot DingTalk → Mensagem entregue no DingTalk. Esta arquitetura é ideal para implantações auto-hospedadas atrás de NAT ou firewalls corporativos. O Gateway mantém automaticamente a conexão e gerencia reconexões (estratégia de recuo exponencial).
O modo Stream não requer IP público nem certificado SSL. Funciona em redes corporativas e domésticas.
O plugin DingTalk é mantido pela comunidade e instalado separadamente do núcleo do OpenClaw, mantendo o Gateway leve.

Escolha de plugin

Existem dois plugins comunitários populares para integração com o DingTalk: • @soimy/dingtalk — O plugin mais popular, mantido ativamente pela comunidade. Suporta formatos de resposta Markdown e AI Card, roteamento multi-agente, citação de mensagens, sistema Learning & Feedback, com funcionalidades completas e estáveis. • @dingtalk-real-ai/dingtalk-connector — Projeto associado ao DingTalk oficial, focado em respostas em streaming via AI Card, com suporte a roteamento multi-agente e modo assíncrono. Requer OpenClaw v0.7.7+. Ambos os plugins usam o modo Stream para conexão, com experiência central idêntica. Ambos suportam roteamento multi-agente. A versão @soimy tem funcionalidades completas e mais documentação, ideal para a maioria dos usuários; para processamento assíncrono, use a versão @dingtalk-real-ai.
terminal
# Instalar versão @soimy (recomendada)
openclaw plugins install @soimy/dingtalk

# Ou instalar versão @dingtalk-real-ai
openclaw plugins install @dingtalk-real-ai/dingtalk-connector

Criação do app DingTalk e obtenção de credenciais

A configuração requer a criação de um app na plataforma aberta do DingTalk: 1. Acesse a plataforma aberta do DingTalk em open-dev.dingtalk.com e entre no painel do desenvolvedor. 2. Clique em 'Criar app', selecione 'Desenvolvimento interno empresarial' → tipo 'Bot'. 3. Preencha o nome e descrição do app. Após a criação, copie o ClientID (AppKey, formato dingXXX) e o ClientSecret (AppSecret) na página 'Credenciais e informações básicas'. 4. Em 'Configuração do bot', selecione **modo Stream** para recebimento de mensagens (não modo HTTP). 5. Na gestão de permissões, adicione as permissões necessárias: - qyapi_robot_sendmsg (envio de mensagens pelo bot) - Card.Instance.Write (escrita de instância de cartão) - Card.Streaming.Write (escrita de cartão em streaming) - mediaId.download e mediaId.upload (upload e download de mídia) - ConvFile.Space.Read (leitura do espaço de arquivos de grupo) - Storage.File.Read (leitura de arquivos do DingPan) 6. Publique o app e aguarde a aprovação do administrador da organização.
terminal
# Via variáveis de ambiente
export DINGTALK_CLIENT_ID="dingXXXXXX"
export DINGTALK_CLIENT_SECRET="your_app_secret"

# Ou via CLI
openclaw channels add
Mantenha seu ClientSecret seguro. Nunca faça commit no controle de versão. Use variáveis de ambiente em produção. Se comprometido, redefina imediatamente no console da plataforma aberta do DingTalk.

Políticas de DM e chat em grupo

O plugin DingTalk suporta configuração flexível de políticas de mensagens: **Política de DM (dmPolicy)**: • open — Qualquer pessoa que enviar DM ao bot recebe resposta • pairing — Modo de pareamento • allowlist — Somente usuários na lista de permissão podem enviar DM **Política de grupo (groupPolicy)**: • open — Qualquer membro do grupo pode acionar o bot com @menção • allowlist — Responde apenas em grupos na lista de permissão Por padrão, em chats de grupo é necessário @mencionar o bot para acionar uma resposta, evitando responder a cada mensagem em grupos ativos.
openclaw.json
{
  "channels": {
    "dingtalk": {
      "dmPolicy": "open",
      "groupPolicy": "open"
    }
  }
}
@mencione o nome do bot no grupo para acionar uma resposta, sem configuração adicional.
As sessões são isoladas por conversa, com contexto independente para cada chat. Sessões são redefinidas automaticamente após 30 minutos de inatividade.

Formato de resposta e streaming via AI Card

O plugin DingTalk suporta vários formatos de resposta: • **Texto (text)** — Resposta em texto simples, o mais básico • **Markdown** — Suporta títulos, listas, links e conteúdo formatado, com conversão automática de tabelas para melhor legibilidade, recomendado por padrão • **AI Card (streaming)** — Efeito de digitação similar ao ChatGPT, mensagem atualizada progressivamente no cartão O AI Card tem dois modos de streaming: Block buffering (padrão, primeiro token ~1-1.5s, menos chamadas de API) e True streaming (cardRealTimeStream: true, primeiro token ~300ms, 2-3x mais chamadas de API). No modo Card, use /reasoning stream para mostrar o processo de raciocínio e /verbose on para mostrar resultados de ferramentas. O streaming via AI Card oferece a melhor experiência do usuário — a mensagem é atualizada no local, sem gerar múltiplas mensagens. Requer permissões Card na aplicação DingTalk.
openclaw.json
{
  "channels": {
    "dingtalk": {
      "messageType": "markdown",
      "streaming": true
    }
  }
}
O streaming via AI Card requer as permissões Card.Instance.Write e Card.Streaming.Write.
Se não precisar do efeito de streaming, defina messageType como markdown e desative streaming.

Tipos de mensagem e suporte a mídia

O plugin DingTalk do OpenClaw processa vários tipos de mensagem: **Recebimento**: Texto, rich text, imagens, áudio (reconhecimento automático de voz), vídeo, arquivos, cartões de documentos DingTalk, cartões de arquivos DingPan. Suporta citação de mensagens (pode citar texto, imagens, rich text, arquivos, vídeo, áudio e mensagens de AI Card). **Análise de arquivos**: Formatos .docx, .pdf, .txt, .md, .json, .xlsx, .pptx, .zip podem ser lidos e analisados pela IA. **Envio**: Texto, Markdown, AI Card, imagens, áudio (incluindo voz nativa asVoice=true), vídeo, arquivos. Nota: não suporta envio misto de texto e imagens, imagens devem ser enviadas separadamente. Mensagens de áudio são automaticamente convertidas em texto antes de serem processadas pela IA, sem configuração adicional.
Certifique-se de que o app DingTalk tem permissões de upload de mídia antes de enviar arquivos grandes.
Mensagens de áudio são automaticamente convertidas em texto, com suporte para chinês e inglês.

Roteamento multi-agente

Ambos os plugins DingTalk suportam roteamento multi-agente, permitindo que diferentes agentes IA processem diferentes tipos de conversa. Por exemplo, DMs podem usar um assistente geral enquanto grupos específicos usam um agente especializado. A versão @soimy também suporta a vinculação de múltiplos bots DingTalk a diferentes agentes através de channels.dingtalk.accounts, com cada agente usando um diretório de trabalho independente. Através da configuração de bindings do OpenClaw, você tem controle granular sobre a atribuição de agentes para cada conversa.
openclaw.json
{
  "bindings": [
    { "agentId": "main", "match": { "channel": "dingtalk", "peer": { "kind": "direct" } } },
    { "agentId": "tech-support", "match": { "channel": "dingtalk", "peer": { "kind": "group" } } }
  ]
}
Ambos os plugins suportam roteamento multi-agente. A versão @soimy também suporta vinculação de múltiplos bots através da configuração accounts.

Sistema de aprendizado e feedback

A versão @soimy possui um sistema de aprendizado e feedback integrado que captura o feedback dos usuários e cria regras compartilháveis: • /learn global — Injetar regra global • /learn here — Injetar regra para a sessão atual • /learn target — Injetar regra de nível de alvo O sistema captura feedback explícito (curtir/não curtir) e sinais implícitos de insatisfação para gerar sugestões de regras. Visualize e gerencie através do painel de depuração em http://127.0.0.1:18895.

Diagnóstico de conexão

O plugin inclui um script de diagnóstico de conexão para solução rápida de problemas de conexão: • bash scripts/dingtalk-connection-check.sh --config ~/.openclaw/openclaw.json Este script verifica o status de publicação do app, a configuração do modo Stream, a validade das credenciais e outros problemas comuns. Entradas de log com o prefixo [DingTalk][ErrorPayload] contêm informações detalhadas de erros.

Comandos úteis

O OpenClaw fornece vários comandos para gerenciar o bot DingTalk: • openclaw gateway status — Verificar status de conexão do Gateway • openclaw gateway restart — Reiniciar serviço Gateway • openclaw logs --follow — Ver logs em tempo real • openclaw logs | grep dingtalk — Filtrar logs do DingTalk • openclaw channels add — Adicionar canal interativamente • openclaw plugins list — Ver plugins instalados • openclaw plugins update @soimy/dingtalk — Atualizar plugin DingTalk • openclaw doctor — Diagnóstico completo • bash scripts/dingtalk-connection-check.sh — Script de diagnóstico de conexão DingTalk

DingTalk Referência de Configuração

enabled
Type: booleanDefault: true

Ativar ou desativar o canal DingTalk

clientId
Type: stringDefault: ""

ClientID (AppKey) do app DingTalk, formato dingXXX, obtido na plataforma aberta do DingTalk

clientSecret
Type: stringDefault: ""

ClientSecret (AppSecret) do app DingTalk, obtido na plataforma aberta do DingTalk

robotCode
Type: stringDefault: ""

Código identificador único do bot, obtido na página de configuração do bot na plataforma aberta

corpId
Type: stringDefault: ""

CorpId da empresa, formato dingXXX, obtido no painel de administração do DingTalk

agentId
Type: stringDefault: ""

AgentId do app, obtido na plataforma aberta do DingTalk

dmPolicy
Type: stringDefault: "open"

Política de DM. Opções: open (aberto), pairing (pareamento), allowlist (lista de permissão)

groupPolicy
Type: stringDefault: "open"

Política de chat em grupo. Opções: open (aberto), allowlist (lista de permissão)

messageType
Type: stringDefault: "markdown"

Formato de mensagem de resposta. Opções: text (texto simples), markdown, card (AI Card)

streaming
Type: booleanDefault: true

Ativar respostas em streaming via AI Card (efeito de digitação)

cardRealTimeStream
Type: booleanDefault: false

Ativar modo true streaming (~300ms de latência do primeiro token, mais chamadas de API). O padrão é block buffering (~1-1.5s de latência, menos chamadas de API)

mediaMaxMb
Type: numberDefault:

Limite de tamanho de arquivo de mídia (MB)

ackReaction
Type: stringDefault:

Reação de confirmação enviada ao receber uma mensagem

debug
Type: booleanDefault: false

Ativar modo de depuração com logs detalhados de conexão e mensagens

DingTalk Perguntas Frequentes

DingTalk Solução de Problemas

Bot não responde

O app pode não estar publicado, o modo Stream pode não estar ativado, o ClientID ou ClientSecret pode estar incorreto, ou o plugin pode não estar instalado corretamente.

Verifique passo a passo: 1) Confirme que o app está publicado e aprovado; 2) Confirme que o modo de recebimento de mensagens é Stream; 3) Verifique o ClientID e ClientSecret; 4) Execute openclaw plugins list para confirmar que o plugin está instalado; 5) Execute openclaw gateway status para verificar o status da conexão.
Recebe mensagens mas a IA não responde

Possível problema de compatibilidade após atualização do OpenClaw, ou API Key do modelo IA não configurada.

Verifique se a API Key do modelo IA está configurada corretamente. Tente atualizar o plugin DingTalk: openclaw plugins update @soimy/dingtalk. Verifique openclaw logs --follow para erros detalhados. Consulte
Conexão Stream desconecta frequentemente

Instabilidade de rede ou problema conhecido de perda de mensagens no modo Stream do DingTalk.

O Gateway gerencia automaticamente a reconexão (estratégia de recuo exponencial). Se as desconexões forem frequentes, verifique a estabilidade da rede do servidor e certifique-se de que o firewall permite conexões WebSocket de saída. Ative o modo debug para logs detalhados de conexão.
Arquivos de grupo ou arquivos do DingPan não podem ser acessados

APIs de arquivos de grupo e DingPan podem exigir certificação empresarial. Organizações não certificadas podem não ter acesso a esses recursos.

Verifique se a organização completou a certificação empresarial. Se não, algumas APIs avançadas de arquivos não estarão disponíveis. Você pode contornar essa limitação enviando arquivos diretamente (em vez de compartilhar pelo DingPan).
Streaming via AI Card não funciona

Faltam permissões relacionadas ao Card, ou messageType está configurado incorretamente.

Confirme que as permissões Card.Instance.Write e Card.Streaming.Write foram concedidas na plataforma aberta do DingTalk. Verifique se streaming está definido como true na configuração. Após alterar permissões, é necessário republicar o app.