OpenClaw

Canal DingTalk de OpenClaw

Empresarial
Medio

Conecta OpenClaw a DingTalk (钉钉) mediante un plugin de la comunidad. Esta integración utiliza el modo Stream de DingTalk (conexión larga WebSocket), sin necesidad de IP pública ni dominio. Soporta mensajes directos, chats grupales, texto/imágenes/voz/video/archivos, y respuestas en streaming con AI Card. Instala el plugin, crea una aplicación interna de DingTalk, introduce tus credenciales y listo.

El canal de DingTalk se integra mediante un plugin comunitario de terceros, no es un canal oficial integrado de OpenClaw. Recomendamos usar el plugin @soimy/dingtalk, mantenido activamente por la comunidad y de funcionamiento estable. Si encuentras problemas, repórtalos en el repositorio GitHub del plugin.

Info rápida
DificultadMedio
CategoríaEmpresarial
Funciones compatibles4 / 6

DingTalk Funciones compatibles

Mensajes de texto

Compatible

Medios y archivos

Compatible

Reacciones

No compatible

Hilos

No compatible

Mensajes de voz

Compatible

Chat grupal

Compatible

DingTalk Requisitos previos

  • Permisos de administrador de organización DingTalk o permisos de desarrollo de aplicaciones
  • Plugin de DingTalk instalado: openclaw plugins install @soimy/dingtalk
  • OpenClaw Gateway ejecutándose y configurado
  • Node.js 18+ instalado en tu servidor

DingTalk Configuración rápida

1

Instalar el plugin de DingTalk

Ejecuta 'openclaw plugins install @soimy/dingtalk' en tu terminal para instalar el plugin comunitario de DingTalk. Si necesitas respuestas en streaming con AI Card y enrutamiento multi-agente, también puedes optar por el plugin '@dingtalk-real-ai/dingtalk-connector'.

2

Crear una aplicación interna de DingTalk

Inicia sesión en la plataforma abierta de DingTalk (open-dev.dingtalk.com) y crea una aplicación interna de empresa. En la página de credenciales, copia el ClientID (AppKey) y ClientSecret (AppSecret). En las capacidades de la app, añade la capacidad de bot y selecciona el modo Stream como modo de recepción de mensajes.

3

Configurar permisos y publicar

En la gestión de permisos, otorga los permisos necesarios: Card.Instance.Write, Card.Streaming.Write, envío de mensajes del bot, carga de archivos multimedia, etc. Una vez completado, publica la aplicación y espera la aprobación.

4

Configurar OpenClaw y probar

Añade la configuración del canal DingTalk en ~/.openclaw/openclaw.json con clientId y clientSecret. Ejecuta 'openclaw gateway restart' para reiniciar el Gateway y envía un mensaje de prueba al bot en DingTalk.

DingTalk Ejemplo de configuración

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

DingTalk Guía de Integración

Descripción de la arquitectura

OpenClaw se conecta a DingTalk a través del modo Stream (conexión larga WebSocket) de la plataforma abierta de DingTalk. A diferencia de los Webhooks tradicionales, el modo Stream permite que el Gateway inicie activamente una conexión WebSocket con los servidores de DingTalk, recibiendo eventos en tiempo real sin necesidad de IP pública ni dominio. Flujo de mensajes: El usuario envía un mensaje en DingTalk → Plataforma abierta DingTalk → Push Stream al Gateway → OpenClaw procesa con IA → Respuesta vía API Bot DingTalk → Mensaje entregado en DingTalk. Esta arquitectura es ideal para despliegues autoalojados detrás de NAT o firewalls corporativos. El Gateway gestiona automáticamente la conexión y maneja las reconexiones con backoff exponencial.
El modo Stream no requiere IP pública ni certificado SSL — funciona en redes corporativas y domésticas.
El plugin de DingTalk es mantenido por la comunidad e instalado por separado del núcleo de OpenClaw, manteniendo el Gateway ligero.

Selección de plugin

Hay dos plugins comunitarios disponibles para conectar DingTalk: • @soimy/dingtalk — El plugin más popular, mantenido activamente por la comunidad. Soporta formatos de respuesta Markdown y AI Card, enrutamiento multi-agente, citación de mensajes, sistema de aprendizaje y retroalimentación, y cubre la gran mayoría de casos de uso. • @dingtalk-real-ai/dingtalk-connector — Proyecto vinculado oficialmente a DingTalk, enfocado en respuestas streaming con AI Card. Soporta enrutamiento multi-agente y modo asíncrono, requiere OpenClaw v0.7.7+. Ambos plugins usan el modo Stream y ambos soportan enrutamiento multi-agente. La versión @soimy es rica en funcionalidades con más documentación — la mejor opción para la mayoría de usuarios. Elige @dingtalk-real-ai si necesitas procesamiento asíncrono.
terminal
# Instalar versión @soimy (recomendada)
openclaw plugins install @soimy/dingtalk

# O instalar versión @dingtalk-real-ai
openclaw plugins install @dingtalk-real-ai/dingtalk-connector

Creación de la app DingTalk y obtención de credenciales

Configurar la integración DingTalk requiere crear una aplicación en la plataforma abierta: 1. Inicia sesión en open-dev.dingtalk.com y accede a la consola de desarrollador. 2. Haz clic en "Crear aplicación", selecciona "Desarrollo interno de empresa" → tipo "Bot". 3. Introduce el nombre y descripción de la app. Una vez creada, copia el ClientID (AppKey, formato dingXXX) y el ClientSecret (AppSecret) en la página de "Credenciales e información básica". 4. En la configuración del bot, selecciona **modo Stream** como modo de recepción de mensajes (no modo HTTP). 5. En la gestión de permisos, añade los permisos necesarios: - qyapi_robot_sendmsg (envío de mensajes del bot) - Card.Instance.Write (escritura de instancia de tarjeta) - Card.Streaming.Write (escritura de tarjeta streaming) - mediaId.download y mediaId.upload (carga/descarga de archivos multimedia) 6. Publica la aplicación y espera la aprobación del administrador de la organización.
terminal
# Vía variables de entorno
export DINGTALK_CLIENT_ID="dingXXXXXX"
export DINGTALK_CLIENT_SECRET="your_app_secret"

# O vía CLI
openclaw channels add
Mantén tu ClientSecret seguro. Nunca lo subas al control de versiones. Usa variables de entorno en producción. Si se compromete, restablécelo inmediatamente en la consola de la plataforma abierta de DingTalk.

Políticas de mensajes directos y chats grupales

El plugin de DingTalk soporta políticas de mensajes flexibles: **Política de DM (dmPolicy)**: • open — Cualquier persona que envíe un mensaje directo al bot recibe respuesta • pairing — Modo de emparejamiento • allowlist — Solo los usuarios en la lista permitida pueden enviar DM **Política de grupo (groupPolicy)**: • open — Cualquier miembro del grupo puede activar el bot con @mención • allowlist — Solo responder en grupos de la lista permitida En chats grupales, se requiere @mención del bot por defecto para evitar respuestas innecesarias en grupos activos.
openclaw.json
{
  "channels": {
    "dingtalk": {
      "dmPolicy": "open",
      "groupPolicy": "open"
    }
  }
}
En chats grupales, basta con @mencionar el nombre del bot para activarlo, sin configuración adicional.
El aislamiento de sesiones es por conversación — diferentes chats tienen contextos independientes. Las sesiones se reinician automáticamente tras 30 minutos de inactividad.

Formatos de respuesta y streaming con AI Card

El plugin de DingTalk soporta múltiples formatos de respuesta: • **Texto** — Respuestas de texto plano básicas • **Markdown** — Contenido formateado con títulos, listas y enlaces, con conversión automática de tablas para mejor legibilidad (recomendado por defecto) • **AI Card (streaming)** — Efecto de máquina de escribir similar a ChatGPT, el mensaje se actualiza progresivamente en una tarjeta AI Card tiene dos modos de streaming: Buffering por bloques (predeterminado, ~1-1.5s primer token, menos llamadas API) y Streaming real (cardRealTimeStream: true, ~300ms primer token, 2-3x más llamadas API). En modo tarjeta, usa /reasoning stream para mostrar el razonamiento de la IA y /verbose on para mostrar resultados de herramientas. El streaming con AI Card ofrece la mejor experiencia de usuario — los mensajes se actualizan in situ sin generar múltiples mensajes. Requiere permisos de Card en la aplicación DingTalk.
openclaw.json
{
  "channels": {
    "dingtalk": {
      "messageType": "markdown",
      "streaming": true
    }
  }
}
El streaming con AI Card requiere los permisos Card.Instance.Write y Card.Streaming.Write.
Si no necesitas el efecto streaming, establece messageType en markdown y desactiva streaming.

Tipos de mensajes y soporte multimedia

El plugin de DingTalk para OpenClaw maneja múltiples tipos de mensajes: **Entrada (recepción):** Texto, texto enriquecido, imágenes, audio (con reconocimiento automático de voz), video, archivos, tarjetas de documentos de DingTalk y tarjetas de archivos de Drive. La citación de mensajes está soportada (texto, imágenes, texto enriquecido, archivos, video, audio, tarjetas AI). **Análisis de archivos:** .docx, .pdf, .txt, .md, .json, .xlsx, .pptx, .zip y más — los archivos se extraen automáticamente como texto y se analizan por la IA. **Salida (envío):** Texto, Markdown, AI Card, imágenes, audio (incluyendo voz nativa vía asVoice=true), video y archivos. Nota: no se soporta la mezcla de imágenes y texto — las imágenes deben enviarse por separado. Los mensajes de voz se convierten automáticamente a texto antes de enviarse a la IA — no se necesita configuración adicional.
Antes de enviar archivos grandes, asegúrate de que la aplicación DingTalk tiene permisos de carga de medios.
Los mensajes de voz se reconocen automáticamente como texto, con soporte para chino e inglés.

Enrutamiento multi-agente

Ambos plugins de DingTalk soportan enrutamiento multi-agente para que diferentes agentes IA manejen diferentes tipos de conversaciones. Por ejemplo, los mensajes directos van al asistente general y ciertos chats grupales van a un agente especializado. La versión @soimy también soporta vincular múltiples bots de DingTalk a diferentes agentes mediante channels.dingtalk.accounts, con cada agente usando un directorio de workspace independiente. Mediante la configuración de bindings en OpenClaw, puedes controlar con precisión la asignación de agentes para cada conversación.
openclaw.json
{
  "bindings": [
    { "agentId": "main", "match": { "channel": "dingtalk", "peer": { "kind": "direct" } } },
    { "agentId": "tech-support", "match": { "channel": "dingtalk", "peer": { "kind": "group" } } }
  ]
}
Ambos plugins soportan enrutamiento multi-agente. La versión @soimy también soporta vincular múltiples bots mediante la configuración de accounts.

Comandos útiles

OpenClaw proporciona varios comandos para gestionar tu bot de DingTalk: • openclaw gateway status — Verificar el estado de conexión del Gateway • openclaw gateway restart — Reiniciar el servicio Gateway • openclaw logs --follow — Ver logs en tiempo real • openclaw logs | grep dingtalk — Filtrar logs de DingTalk • openclaw channels add — Añadir canal interactivamente • openclaw plugins list — Ver plugins instalados • openclaw plugins update @soimy/dingtalk — Actualizar el plugin de DingTalk • openclaw doctor — Diagnóstico completo • bash scripts/dingtalk-connection-check.sh — Script de diagnóstico de conexión DingTalk

DingTalk Referencia de Configuración

enabled
Type: booleanDefault: true

Activar o desactivar el canal DingTalk

clientId
Type: stringDefault: ""

ClientID (AppKey) de la aplicación DingTalk, formato dingXXX, obtenido de la plataforma abierta de DingTalk

clientSecret
Type: stringDefault: ""

ClientSecret (AppSecret) de la aplicación DingTalk, obtenido de la plataforma abierta de DingTalk

robotCode
Type: stringDefault: ""

Código de identificación único del bot, obtenido de la página de configuración del bot en la plataforma abierta de DingTalk

corpId
Type: stringDefault: ""

CorpId de la empresa, formato dingXXX, obtenido de la consola de administración de DingTalk

agentId
Type: stringDefault: ""

AgentId de la aplicación, obtenido de la plataforma abierta de DingTalk

dmPolicy
Type: stringDefault: "open"

Política de mensajes directos. Opciones: open (cualquiera puede enviar DM), pairing (modo emparejamiento), allowlist (solo usuarios en lista permitida)

groupPolicy
Type: stringDefault: "open"

Política de chat grupal. Opciones: open (responder al ser @mencionado), allowlist (responder solo en grupos de la lista permitida)

messageType
Type: stringDefault: "markdown"

Formato de respuesta. Opciones: text (texto plano), markdown, card (AI Card)

streaming
Type: booleanDefault: true

Activar respuestas en streaming con AI Card (efecto máquina de escribir)

cardRealTimeStream
Type: booleanDefault: false

Activar modo streaming real (~300ms de latencia del primer token, mayor uso de API). El predeterminado es buffering por bloques (~1-1.5s de latencia, menor uso de API)

mediaMaxMb
Type: numberDefault:

Límite de tamaño de archivos multimedia en MB

ackReaction
Type: stringDefault:

Reacción enviada al recibir un mensaje como confirmación

debug
Type: booleanDefault: false

Activar modo debug para logs detallados de conexión y mensajes

DingTalk Preguntas Frecuentes

DingTalk Solución de Problemas

El bot no responde en absoluto

La aplicación puede no estar publicada, el modo Stream no está activado, ClientID o ClientSecret son incorrectos, o el plugin no está correctamente instalado.

Verifica paso a paso: 1) Confirma que la app está publicada y aprobada; 2) Asegúrate de que el modo de recepción de mensajes es Stream; 3) Verifica ClientID y ClientSecret; 4) Ejecuta openclaw plugins list para confirmar la instalación del plugin; 5) Verifica el estado de conexión con openclaw gateway status.
Se reciben mensajes pero la IA no responde

Posible problema de compatibilidad tras actualizar OpenClaw, o la API Key del modelo IA no está configurada.

Verifica que la API Key del modelo IA está correctamente configurada. Actualiza el plugin de DingTalk: openclaw plugins update @soimy/dingtalk. Revisa openclaw logs --follow para mensajes de error detallados. Consulta
La conexión Stream se desconecta frecuentemente

Inestabilidad de red o problemas conocidos de pérdida de mensajes en el modo Stream de DingTalk.

El Gateway gestiona las reconexiones automáticamente (backoff exponencial). Si las desconexiones son frecuentes, verifica la estabilidad de la red del servidor y asegúrate de que el firewall permite conexiones WebSocket salientes. Activa el modo debug para logs de conexión detallados.
No se puede acceder a archivos de grupo o de DingTalk Drive

Las APIs de archivos de grupo y DingTalk Drive pueden requerir verificación empresarial. Las organizaciones no verificadas pueden no tener acceso a estas funciones.

Verifica si tu organización ha completado la verificación empresarial. Si no está verificada, ciertas APIs avanzadas de archivos no estarán disponibles. Puedes evitar esta limitación enviando archivos directamente en lugar de compartirlos a través de DingTalk Drive.
El streaming con AI Card no funciona

Faltan permisos de Card o la configuración de messageType es incorrecta.

Confirma que los permisos Card.Instance.Write y Card.Streaming.Write están otorgados en la plataforma abierta de DingTalk. Verifica que streaming está en true en la configuración. Después de cambios en permisos, es necesario republicar la aplicación.