Canal DingTalk de OpenClaw
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.
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
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'.
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.
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.
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
{
"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
Selección de plugin
# Instalar versión @soimy (recomendada)
openclaw plugins install @soimy/dingtalk
# O instalar versión @dingtalk-real-ai
openclaw plugins install @dingtalk-real-ai/dingtalk-connectorCreación de la app DingTalk y obtención de credenciales
# Vía variables de entorno
export DINGTALK_CLIENT_ID="dingXXXXXX"
export DINGTALK_CLIENT_SECRET="your_app_secret"
# O vía CLI
openclaw channels addPolíticas de mensajes directos y chats grupales
{
"channels": {
"dingtalk": {
"dmPolicy": "open",
"groupPolicy": "open"
}
}
}Formatos de respuesta y streaming con AI Card
{
"channels": {
"dingtalk": {
"messageType": "markdown",
"streaming": true
}
}
}Tipos de mensaje y soporte de medios
Enrutamiento multi-agente
{
"bindings": [
{ "agentId": "main", "match": { "channel": "dingtalk", "peer": { "kind": "direct" } } },
{ "agentId": "tech-support", "match": { "channel": "dingtalk", "peer": { "kind": "group" } } }
]
}Comandos útiles
DingTalk Referencia de Configuración
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Activar o desactivar el canal DingTalk |
| clientId | string | "" | ClientID (AppKey) de la aplicación DingTalk, formato dingXXX, obtenido de la plataforma abierta de DingTalk |
| clientSecret | string | "" | ClientSecret (AppSecret) de la aplicación DingTalk, obtenido de la plataforma abierta de DingTalk |
| robotCode | string | "" | 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 | string | "" | CorpId de la empresa, formato dingXXX, obtenido de la consola de administración de DingTalk |
| agentId | string | "" | AgentId de la aplicación, obtenido de la plataforma abierta de DingTalk |
| dmPolicy | string | "open" | Política de mensajes directos. Opciones: open (abierto), disabled (desactivado) |
| groupPolicy | string | "open" | Política de chat grupal. Opciones: open (abierto), disabled (desactivado) |
| messageType | string | "markdown" | Formato de respuesta. Opciones: text (texto plano), markdown, card (AI Card) |
| streaming | boolean | true | Activar respuestas en streaming con AI Card (efecto máquina de escribir) |
| debug | boolean | false | Activar modo debug para logs detallados de conexión y mensajes |
Activar o desactivar el canal DingTalk
ClientID (AppKey) de la aplicación DingTalk, formato dingXXX, obtenido de la plataforma abierta de DingTalk
ClientSecret (AppSecret) de la aplicación DingTalk, obtenido de la plataforma abierta de DingTalk
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 de la empresa, formato dingXXX, obtenido de la consola de administración de DingTalk
AgentId de la aplicación, obtenido de la plataforma abierta de DingTalk
Política de mensajes directos. Opciones: open (abierto), disabled (desactivado)
Política de chat grupal. Opciones: open (abierto), disabled (desactivado)
Formato de respuesta. Opciones: text (texto plano), markdown, card (AI Card)
Activar respuestas en streaming con AI Card (efecto máquina de escribir)
Activar modo debug para logs detallados de conexión y mensajes
DingTalk Preguntas Frecuentes
DingTalk Solución de Problemas
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.
Posible problema de compatibilidad tras actualizar OpenClaw, o la API Key del modelo IA no está configurada.
Inestabilidad de red o problemas conocidos de pérdida de mensajes en el modo Stream de DingTalk.
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.
Faltan permisos de Card o la configuración de messageType es incorrecta.