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.

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, 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, completo y estable. • @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, la experiencia principal es idéntica. Recomendación: principiantes usen la versión @soimy (más documentación), quienes necesiten multi-agente o procesamiento asíncrono usen la versión @dingtalk-real-ai.
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 • disabled — La funcionalidad de DM está desactivada **Política de grupo (groupPolicy)**: • open — Cualquier miembro del grupo puede activar el bot con @mención • disabled — Los mensajes grupales se ignoran completamente 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** — Soporta títulos, listas, enlaces y otros formatos, recomendado por defecto • **AI Card (streaming)** — Efecto de máquina de escribir similar a ChatGPT, el mensaje se actualiza progresivamente en una tarjeta 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 mensaje y soporte de medios

El plugin de DingTalk para OpenClaw maneja múltiples tipos de mensajes: **Recepción**: Texto, imágenes, voz (reconocimiento automático de voz), video, archivos **Procesamiento de archivos**: .docx, .pdf, .txt, .md, .json, .xlsx, .pptx, .zip y otros formatos pueden ser leídos y analizados por la IA **Envío**: Texto, Markdown, AI Card, imágenes, archivos 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

Con la versión @dingtalk-real-ai del plugin, puedes configurar 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. 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" } } }
  ]
}
El enrutamiento multi-agente solo es soportado por la versión @dingtalk-real-ai, no por la versión @soimy.

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 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

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

groupPolicy
Type: stringDefault: "open"

Política de chat grupal. Opciones: open (abierto), disabled (desactivado)

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)

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.