Canal Slack de OpenClaw
Conecta OpenClaw a Slack usando Socket Mode (por defecto) o la API de Eventos HTTP. Esta integración de nivel empresarial permite que tu asistente de IA opere en espacios de trabajo de Slack — gestionando DMs, conversaciones en canales, reacciones, hilos y comandos slash. Socket Mode se conecta vía WebSocket sin necesidad de URL pública; el modo HTTP usa la API de Eventos de Slack para despliegues accesibles públicamente.
Slack Funciones compatibles
Mensajes de texto
Compatible
Medios y archivos
Compatible
Reacciones
Compatible
Hilos
Compatible
Mensajes de voz
No compatible
Chat grupal
Compatible
Slack Requisitos previos
- Un espacio de trabajo de Slack con privilegios de administrador (para instalar apps personalizadas)
- Una App de Slack creada en api.slack.com/apps
- App Token (xapp-...) con el scope connections:write (para Socket Mode)
- Bot Token (xoxb-...) obtenido después de instalar la app en tu espacio de trabajo
- OpenClaw Gateway en funcionamiento y configurado
Slack Configuración rápida
Crear App de Slack y habilitar Socket Mode
Ve a api.slack.com/apps y haz clic en 'Create New App' → 'From scratch'. Dale un nombre y selecciona tu espacio de trabajo. Navega a 'Socket Mode' en la barra lateral y habilítalo. Genera un App-Level Token con el scope 'connections:write' — esto te dará el token xapp-...
Configurar scopes de OAuth e instalar en el espacio de trabajo
Ve a 'OAuth & Permissions', añade los Bot Token Scopes requeridos (chat:write, channels:history, channels:read, im:write, im:history, im:read, users:read, reactions:read, reactions:write, files:write, etc.). Haz clic en 'Install to Workspace' y autoriza. Copia el Bot User OAuth Token (xoxb-...). Luego ve a 'Event Subscriptions', habilita los eventos y suscríbete a: message.channels, message.groups, message.im, message.mpim, app_mention, reaction_added, reaction_removed.
Añadir configuración, iniciar Gateway e invitar al bot
Añade la configuración del canal Slack a ~/.openclaw/openclaw.json con tu appToken y botToken. Inicia el Gateway — se conectará a Slack vía Socket Mode. Invita al bot a tus canales objetivo escribiendo '/invite @NombreDelBot' en Slack. Envía un mensaje para probar.
Slack Ejemplo de configuración
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-1-YOUR_APP_TOKEN",
"botToken": "xoxb-YOUR_BOT_TOKEN"
}
}
}Slack Documentación Detallada
Descripción de la arquitectura
Creación de tu App de Slack
Seguridad de DM (emparejamiento)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"dm": {
"policy": "pairing",
"allowFrom": ["U01ABCDEF", "usuario@empresa.com"]
}
}
}
}Configuración de canales (política de grupo)
{
"channels": {
"slack": {
"groupPolicy": "allowlist",
"channels": {
"C01ABCDEF": {
"allow": true,
"requireMention": true,
"users": ["U01ABCDEF"],
"skills": ["search", "docs"],
"systemPrompt": "Mantén las respuestas cortas y técnicas."
},
"#general": {
"allow": true,
"requireMention": true
}
}
}
}
}Hilos de respuesta
{
"channels": {
"slack": {
"replyToMode": "off",
"replyToModeByChatType": {
"direct": "all",
"group": "first",
"channel": "off"
}
}
}
}Token de usuario (opcional)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"userToken": "xoxp-...",
"userTokenReadOnly": true
}
}
}Comandos slash y App Home
{
"channels": {
"slack": {
"slashCommand": {
"enabled": true,
"name": "openclaw",
"sessionPrefix": "slack:slash",
"ephemeral": true
}
}
}
}Permisos y scopes
Modo HTTP (API de Eventos)
{
"channels": {
"slack": {
"enabled": true,
"mode": "http",
"botToken": "xoxb-...",
"signingSecret": "tu-signing-secret",
"webhookPath": "/slack/events"
}
}
}Configuración avanzada
{
"channels": {
"slack": {
"historyLimit": 50,
"textChunkLimit": 4000,
"chunkMode": "newline",
"mediaMaxMb": 20,
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
}
}
}
}Slack Referencia de Configuración
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Habilitar o deshabilitar el canal Slack |
| mode | string | "socket" | Modo de conexión. Opciones: socket (Socket Mode, por defecto), http (API de Eventos) |
| appToken | string | "" | Token de nivel de app de Slack (xapp-...) para Socket Mode. También se puede usar la variable de entorno SLACK_APP_TOKEN |
| botToken | string | "" | Token OAuth de usuario bot de Slack (xoxb-...). También se puede usar la variable de entorno SLACK_BOT_TOKEN |
| userToken | string | "" | Token de usuario de Slack opcional (xoxp-...) para acceso de lectura mejorado |
| userTokenReadOnly | boolean | true | Restringir el User Token a operaciones de solo lectura. Establecer en false para permitir escrituras como el usuario que instaló la app |
| signingSecret | string | "" | Signing Secret para verificación de solicitudes en modo HTTP (de Basic Information → App Credentials) |
| webhookPath | string | "/slack/events" | Ruta del endpoint webhook para modo HTTP |
| dm.policy | string | "pairing" | Política de control de acceso de DM. Opciones: pairing (aprobación basada en código), open (cualquiera puede enviar DM) |
| dm.allowFrom | string[] | [] | Usuarios permitidos para enviar DM al bot. Soporta IDs de usuario, @nombres de usuario, correos electrónicos y comodín (*) |
| dm.enabled | boolean | true | Si se aceptan mensajes directos |
| dm.groupEnabled | boolean | false | Habilitar manejo de DMs grupales (MPIM) |
| dm.groupChannels | string[] | [] | IDs de canales de DM grupal permitidos |
| groupPolicy | string | "open" | Política de manejo de canales. Opciones: open (todos los canales), disabled (sin canales), allowlist (solo configurados) |
| channels.<id>.allow | boolean | true | Permitir o denegar este canal en modo allowlist |
| channels.<id>.requireMention | boolean | false | Si el bot necesita @mención para responder en este canal |
| channels.<id>.users | string[] | [] | Lista de usuarios permitidos para este canal (IDs, @nombres de usuario o correos) |
| channels.<id>.skills | string[] | [] | Restringir habilidades disponibles en este canal (vacío = todas las habilidades) |
| channels.<id>.systemPrompt | string | "" | Prompt del sistema de IA personalizado para este canal |
| channels.<id>.allowBots | boolean | false | Procesar mensajes de otros bots en este canal |
| replyToMode | string | "off" | Modo de hilos de respuesta. Opciones: off (canal principal), first (primer respuesta en hilo), all (todas las respuestas en hilo) |
| replyToModeByChatType | object | {} | Anulaciones de hilos por tipo de chat. Claves: direct, group, channel. Valores: off, first, all |
| reactionNotifications | string | "off" | Qué reacciones activan notificaciones del agente. Opciones: off, own, all |
| historyLimit | number | 50 | Número de mensajes recientes a incluir como contexto de la IA. Establecer en 0 para deshabilitar |
| textChunkLimit | number | 4000 | Máximo de caracteres por fragmento de mensaje para respuestas largas de IA |
| chunkMode | string | "split" | Cómo dividir respuestas largas. Opciones: split (límite estricto), newline (límites de párrafo) |
| mediaMaxMb | number | 20 | Tamaño máximo de archivo multimedia en megabytes |
| slashCommand.enabled | boolean | true | Habilitar manejo de comandos slash |
| slashCommand.name | string | "openclaw" | Nombre del comando slash (sin /) |
| slashCommand.ephemeral | boolean | true | Si las respuestas de comandos slash son visibles solo para quien los invocó |
Habilitar o deshabilitar el canal Slack
Modo de conexión. Opciones: socket (Socket Mode, por defecto), http (API de Eventos)
Token de nivel de app de Slack (xapp-...) para Socket Mode. También se puede usar la variable de entorno SLACK_APP_TOKEN
Token OAuth de usuario bot de Slack (xoxb-...). También se puede usar la variable de entorno SLACK_BOT_TOKEN
Token de usuario de Slack opcional (xoxp-...) para acceso de lectura mejorado
Restringir el User Token a operaciones de solo lectura. Establecer en false para permitir escrituras como el usuario que instaló la app
Signing Secret para verificación de solicitudes en modo HTTP (de Basic Information → App Credentials)
Ruta del endpoint webhook para modo HTTP
Política de control de acceso de DM. Opciones: pairing (aprobación basada en código), open (cualquiera puede enviar DM)
Usuarios permitidos para enviar DM al bot. Soporta IDs de usuario, @nombres de usuario, correos electrónicos y comodín (*)
Si se aceptan mensajes directos
Habilitar manejo de DMs grupales (MPIM)
IDs de canales de DM grupal permitidos
Política de manejo de canales. Opciones: open (todos los canales), disabled (sin canales), allowlist (solo configurados)
Permitir o denegar este canal en modo allowlist
Si el bot necesita @mención para responder en este canal
Lista de usuarios permitidos para este canal (IDs, @nombres de usuario o correos)
Restringir habilidades disponibles en este canal (vacío = todas las habilidades)
Prompt del sistema de IA personalizado para este canal
Procesar mensajes de otros bots en este canal
Modo de hilos de respuesta. Opciones: off (canal principal), first (primer respuesta en hilo), all (todas las respuestas en hilo)
Anulaciones de hilos por tipo de chat. Claves: direct, group, channel. Valores: off, first, all
Qué reacciones activan notificaciones del agente. Opciones: off, own, all
Número de mensajes recientes a incluir como contexto de la IA. Establecer en 0 para deshabilitar
Máximo de caracteres por fragmento de mensaje para respuestas largas de IA
Cómo dividir respuestas largas. Opciones: split (límite estricto), newline (límites de párrafo)
Tamaño máximo de archivo multimedia en megabytes
Habilitar manejo de comandos slash
Nombre del comando slash (sin /)
Si las respuestas de comandos slash son visibles solo para quien los invocó
Slack Preguntas Frecuentes
Slack Solución de Problemas
El canal está bloqueado por groupPolicy, o el bot no está en la lista de permitidos, o el bot no ha sido invitado al canal.
La política de DM está configurada como 'pairing' y el remitente no ha sido aprobado, o la pestaña Messages no está habilitada en App Home.
El App Token (xapp-...) es inválido o ha expirado, o hay un problema de red entre tu servidor y Slack.
Al Bot Token le faltan scopes de OAuth requeridos, o el token ha sido revocado/regenerado.
El comando slash no fue creado en el portal de la API de Slack, o la URL de solicitud está mal configurada (modo HTTP).
Las respuestas largas de IA que exceden el textChunkLimit de OpenClaw (4.000 caracteres por defecto) se fragmentan automáticamente en múltiples mensajes. Nota: los límites propios de Slack son 3.000 caracteres por section block y 40.000 caracteres por campo text del mensaje.