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.

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 respostas em streaming via AI Card, 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, 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, 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. Recomendação: iniciantes devem usar a versão @soimy (mais documentação disponível); para multi-agente ou 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) 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 • disabled — Funcionalidade de DM desativada **Política de grupo (groupPolicy)**: • open — Qualquer membro do grupo pode acionar o bot com @menção • disabled — Mensagens de grupo completamente ignoradas 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, recomendado por padrão • **AI Card (streaming)** — Efeito de digitação similar ao ChatGPT, mensagem atualizada progressivamente no cartão 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, imagens, áudio (reconhecimento automático de voz), vídeo, arquivos **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, arquivos 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

Com a versão @dingtalk-real-ai do plugin, você pode configurar roteamento multi-agente para 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. 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" } } }
  ]
}
O roteamento multi-agente é suportado apenas pela versão @dingtalk-real-ai, não pela versão @soimy.

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 channels add — Adicionar canal interativamente • openclaw plugins list — Ver plugins instalados • openclaw plugins update @soimy/dingtalk — Atualizar plugin DingTalk • openclaw doctor — Diagnóstico completo

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), disabled (desativado)

groupPolicy
Type: stringDefault: "open"

Política de chat em grupo. Opções: open (aberto), disabled (desativado)

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)

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.