OpenClaw

Canal Slack de OpenClaw

Empresarial
Medio

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.

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

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

1

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

2

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.

3

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

config.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-YOUR_APP_TOKEN",
      "botToken": "xoxb-YOUR_BOT_TOKEN"
    }
  }
}

Slack Documentación Detallada

Descripción de la arquitectura

OpenClaw se conecta a Slack a través de dos modos compatibles: • Socket Mode (por defecto) — Usa una conexión WebSocket iniciada desde tu servidor a Slack. No se necesita URL pública ni configuración de firewall. Ideal para desarrollo, despliegues internos y entornos detrás de NATs. • Modo HTTP (API de Eventos) — Slack envía eventos al endpoint HTTPS de tu servidor. Requiere una URL accesible públicamente. Mejor para despliegues de producción de alta disponibilidad con balanceadores de carga. En ambos modos, el bot recibe eventos en tiempo real (mensajes, reacciones, menciones) y responde a través de la API de Slack. El enrutamiento de sesiones depende del contexto: los DMs usan la sesión principal del agente, las conversaciones en canales crean sesiones aisladas por canal (agent:<agentId>:slack:channel:<channelId>), y los comandos slash obtienen sesiones por usuario.
Socket Mode es recomendado para la mayoría de configuraciones autoalojadas — funciona detrás de firewalls y NATs sin ninguna configuración de red.
Puedes establecer los tokens mediante variables de entorno: SLACK_APP_TOKEN y SLACK_BOT_TOKEN, o en tu archivo de configuración.

Creación de tu App de Slack

Configurar una app de Slack requiere configurar varios componentes en el portal de la API de Slack: 1. Ve a api.slack.com/apps y haz clic en 'Create New App' → 'From scratch' 2. Nombra tu app y selecciona el espacio de trabajo objetivo 3. Habilita Socket Mode (Settings → Socket Mode → Enable). Genera un App-Level Token con el scope connections:write 4. Añade Bot Token Scopes en OAuth & Permissions: • chat:write, im:write — Enviar y gestionar mensajes • channels:history, groups:history, im:history, mpim:history — Leer historial de mensajes • channels:read, groups:read, im:read, mpim:read — Leer información de conversaciones • users:read — Buscar perfiles de usuarios • reactions:read, reactions:write — Reaccionar a mensajes • pins:read, pins:write — Gestionar mensajes fijados • emoji:read — Listar emoji personalizados • files:write — Subir archivos 5. Instala la app en tu espacio de trabajo y copia el Bot Token (xoxb-...) 6. Habilita Event Subscriptions y suscríbete a eventos del bot: • message.channels, message.groups, message.im, message.mpim • app_mention • reaction_added, reaction_removed • member_joined_channel, member_left_channel • channel_rename, pin_added, pin_removed 7. Opcionalmente, crea un comando slash /openclaw en Slash Commands 8. Habilita la pestaña Messages en App Home para soporte de DMs Consejo: Puedes usar el manifiesto de app proporcionado para auto-configurar todos los scopes y eventos de una vez durante la creación de la app.
Mantén tus tokens en secreto. El App Token (xapp-...) y el Bot Token (xoxb-...) otorgan control total sobre tu app. Si se comprometen, regenera los tokens inmediatamente en el portal de la API de Slack.
La opción de manifiesto durante la creación de la app puede configurar todos los scopes, eventos y funciones requeridos en un solo paso.
Asegúrate de habilitar Event Subscriptions y suscribirte a los eventos de bot requeridos. Sin esto, el bot se conectará pero no recibirá ningún mensaje.

Seguridad de DM (emparejamiento)

Las políticas de DM de Slack controlan quién puede interactuar con tu asistente de IA en mensajes directos. OpenClaw soporta dos modos: • pairing (por defecto) — Los remitentes desconocidos de DM reciben un código de emparejamiento con tiempo limitado (expira después de 1 hora). Apruébalos mediante 'openclaw pairing approve slack <código>' en tu terminal. Una vez aprobados, pueden chatear libremente. Máximo 3 solicitudes de emparejamiento pendientes por canal. • open — Cualquiera que envíe un DM al bot recibe respuesta. Requiere dm.allowFrom=["*"] para funcionar. Usar con precaución en espacios de trabajo grandes. Las entradas de la lista de permitidos soportan múltiples formatos: • IDs de usuario de Slack (ej., "U01ABCDEF") • Referencias @username • Direcciones de correo electrónico También puedes verificar los emparejamientos pendientes con 'openclaw pairing list slack'.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "dm": {
        "policy": "pairing",
        "allowFrom": ["U01ABCDEF", "usuario@empresa.com"]
      }
    }
  }
}
Usa la política de emparejamiento para espacios de trabajo con muchos usuarios para prevenir el uso no autorizado de la IA. Cada código de emparejamiento expira después de 1 hora.
En modo open, establece allowFrom en ["*"] para permitir a todos los usuarios, o especifica IDs de usuario/emails individuales para restringir el acceso.

Configuración de canales (política de grupo)

Las políticas de canales controlan en qué canales de Slack opera el bot y cómo se comporta: groupPolicy de nivel superior: • open — El bot responde en todos los canales a los que es invitado • disabled — El bot ignora todos los mensajes de canales • allowlist — El bot solo responde en canales configurados explícitamente La configuración por canal permite ajustar el comportamiento para canales individuales: • allow — Habilitar/deshabilitar el canal en modo allowlist • requireMention — Si el bot necesita ser @mencionado para responder • users — Lista de usuarios permitidos para este canal específico • skills — Restringir qué habilidades/herramientas están disponibles en este canal • systemPrompt — Instrucciones de IA personalizadas para este canal • allowBots — Si se procesan mensajes de otros bots (por defecto: false) • enabled — Habilitar/deshabilitar el canal completamente
openclaw.json
{
  "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
        }
      }
    }
  }
}
Las claves de canal pueden ser IDs de canal (C01ABCDEF) o nombres de canal (#general). Los IDs son más fiables ya que sobreviven a los cambios de nombre de canal.
Usa el systemPrompt por canal para dar a la IA diferentes personalidades o instrucciones para diferentes canales — ej., técnico en #ingenieria, casual en #general.

Hilos de respuesta

OpenClaw soporta hilos de respuesta flexibles en Slack, controlando si el bot responde en el canal principal o crea hilos. replyToMode global: • off (por defecto) — Responde en el canal principal. Solo crea hilos cuando el mensaje activador ya está en un hilo. • first — La primera respuesta va a un hilo, las respuestas posteriores van al canal principal. • all — Todas las respuestas se envían como respuestas en hilo. Anulaciones por tipo de chat mediante replyToModeByChatType: • direct — Conversaciones de DM 1:1 • group — Conversaciones de DM grupal / MPIM • channel — Canales estándar de Slack Control manual de hilos mediante etiquetas de respuesta: • [[reply_to_current]] — Responder al mensaje que activó el bot • [[reply_to:<message_id>]] — Responder a un ID de mensaje específico
openclaw.json
{
  "channels": {
    "slack": {
      "replyToMode": "off",
      "replyToModeByChatType": {
        "direct": "all",
        "group": "first",
        "channel": "off"
      }
    }
  }
}
Para canales con mucho tráfico, usa replyToMode: 'all' para mantener las conversaciones organizadas en hilos y evitar saturar el canal principal.
Las anulaciones por tipo de chat te permiten crear hilos en DMs pero mantener las respuestas en línea en canales, o viceversa.

Token de usuario (opcional)

Además del Bot Token, puedes configurar opcionalmente un User Token (xoxp-...) para acceso de lectura mejorado. El User Token proporciona datos más ricos para historial, mensajes fijados, reacciones, emoji personalizados e información de miembros. Prioridad de uso de tokens: • Operaciones de lectura — Se prefiere el User Token; recurre al Bot Token si no está disponible • Operaciones de escritura — Siempre se usa el Bot Token por defecto El flag userTokenReadOnly (por defecto: true) asegura que el User Token nunca se use para operaciones de escritura. Establécelo en false solo si deseas que la IA actúe como el usuario (requiere scopes de escritura adicionales en el User Token). Para añadir un User Token, configura los scopes de token de usuario en OAuth & Permissions bajo 'User Token Scopes' — típicamente scopes de solo lectura como channels:history, channels:read, users:read, reactions:read, pins:read, emoji:read, search:read.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "userToken": "xoxp-...",
      "userTokenReadOnly": true
    }
  }
}
Establecer userTokenReadOnly en false permite que la IA realice operaciones de escritura (enviar mensajes, añadir reacciones, fijar mensajes) como el usuario que instaló la app en lugar del bot. Solo habilítalo si comprendes las implicaciones de seguridad.

Comandos slash y App Home

OpenClaw soporta comandos slash de Slack y configuración de App Home: Comandos slash: Crea un comando /openclaw en el portal de la API de Slack bajo 'Slash Commands'. En Socket Mode, no se necesita URL de solicitud — Slack enruta el comando a través de la conexión WebSocket. Si usas comandos nativos, crea comandos slash adicionales según sea necesario. App Home: Habilita la 'pestaña Messages' bajo App Home para permitir que los usuarios envíen DMs al bot directamente desde su página de app. Esto proporciona una interfaz limpia y dedicada para conversaciones 1:1. Enrutamiento de sesiones: • DMs → sesión principal (agent:main:main) • Mensajes de canal → agent:<agentId>:slack:channel:<channelId> • Comandos slash → agent:<agentId>:slack:slash:<userId> Destinos de entrega para cron/CLI: • user:<userId> — Enviar un DM a un usuario específico • channel:<channelId> — Publicar en un canal específico
openclaw.json
{
  "channels": {
    "slack": {
      "slashCommand": {
        "enabled": true,
        "name": "openclaw",
        "sessionPrefix": "slack:slash",
        "ephemeral": true
      }
    }
  }
}
Las respuestas efímeras de comandos slash solo son visibles para el usuario que invocó el comando. Establece ephemeral: false para hacer las respuestas visibles para todos en el canal.
La pestaña Messages en App Home debe estar habilitada para la funcionalidad de DMs — sin ella, los usuarios no pueden iniciar conversaciones con el bot.

Permisos y scopes

Slack usa scopes de OAuth para controlar lo que tu app puede hacer. Estos son los scopes requeridos y opcionales: Scopes requeridos del Bot Token: • chat:write — Enviar, actualizar y eliminar mensajes • im:write — Abrir conversaciones de DM • channels:history, groups:history, im:history, mpim:history — Leer historial de mensajes • channels:read, groups:read, im:read, mpim:read — Leer información de conversaciones • users:read — Buscar perfiles de usuarios • reactions:read, reactions:write — Leer y añadir reacciones • pins:read, pins:write — Gestionar mensajes fijados • emoji:read — Listar emoji personalizados del espacio de trabajo • files:write — Subir archivos y medios Scopes opcionales del User Token (solo lectura): • channels:history, groups:history, im:history, mpim:history — Acceso mejorado al historial • channels:read, groups:read, im:read, mpim:read — Información mejorada de conversaciones • users:read — Búsqueda de perfiles de usuarios • reactions:read, pins:read, emoji:read — Leer reacciones, fijados, emoji • search:read — Buscar mensajes y archivos
Comienza solo con los scopes del Bot Token. Añade el User Token y sus scopes solo si necesitas capacidades de lectura mejoradas (como search:read).
El manifiesto de app proporcionado incluye todos los scopes recomendados — úsalo durante la creación de la app para la configuración más rápida.

Modo HTTP (API de Eventos)

Si tu Gateway es accesible públicamente vía HTTPS, puedes usar el modo HTTP en lugar de Socket Mode. En modo HTTP, Slack envía eventos directamente al endpoint de tu servidor. Pasos de configuración: 1. Crea la app de Slack pero NO habilites Socket Mode 2. Obtén el Signing Secret de 'Basic Information' → 'App Credentials' 3. Instala la app para obtener el Bot Token 4. En 'Event Subscriptions', establece la Request URL a: https://tu-host-gateway/slack/events 5. En 'Interactivity & Shortcuts', establece la misma Request URL 6. En 'Slash Commands', establece la Request URL al mismo endpoint El modo HTTP no requiere un App Token — usa el Signing Secret para verificar que las solicitudes entrantes son genuinamente de Slack.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "mode": "http",
      "botToken": "xoxb-...",
      "signingSecret": "tu-signing-secret",
      "webhookPath": "/slack/events"
    }
  }
}
Para el modo HTTP, los tres endpoints (Events, Interactivity, Slash Commands) deben apuntar a la misma URL: https://tu-host/slack/events.
Usa el Signing Secret (no el App Token) para el modo HTTP. El Signing Secret verifica la autenticidad de las solicitudes mediante firmas HMAC-SHA256.
El modo HTTP requiere un certificado SSL válido y un endpoint accesible públicamente. Asegúrate de que tu servidor sea alcanzable desde los rangos de IP de Slack.

Configuración avanzada

OpenClaw proporciona varias configuraciones avanzadas para ajustar el comportamiento de Slack: Historial y contexto: • historyLimit (por defecto: 50) — Número de mensajes recientes incluidos en el contexto de la IA. Establécelo en 0 para deshabilitar la inyección de historial. Texto y medios: • textChunkLimit (por defecto: 4000) — Máximo de caracteres por fragmento de mensaje para respuestas largas • chunkMode: "newline" — Dividir en límites de párrafo en lugar de límites estrictos de caracteres • mediaMaxMb (por defecto: 20) — Tamaño máximo de archivo multimedia en megabytes Puertas de acceso a acciones de herramientas: Controla qué operaciones de Slack puede realizar el agente: • reactions: true — Reaccionar y listar reacciones • messages: true — Leer, enviar, editar y eliminar mensajes • pins: true — Fijar, desfijar y listar mensajes fijados • memberInfo: true — Buscar información de miembros del espacio de trabajo • emojiList: true — Listar emoji personalizados del espacio de trabajo Notas de seguridad: • Las operaciones de escritura usan el Bot Token por defecto, manteniendo el aislamiento de permisos a nivel de aplicación • Cuando userTokenReadOnly es false y hay un User Token configurado, las escrituras pueden usar el User Token (actuando como el usuario que instaló la app) • Al habilitar allowBots en un canal, combínalo con requireMention y listas de usuarios permitidos para prevenir bucles de respuesta entre bots
openclaw.json
{
  "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

enabled
Type: booleanDefault: true

Habilitar o deshabilitar el canal Slack

mode
Type: stringDefault: "socket"

Modo de conexión. Opciones: socket (Socket Mode, por defecto), http (API de Eventos)

appToken
Type: stringDefault: ""

Token de nivel de app de Slack (xapp-...) para Socket Mode. También se puede usar la variable de entorno SLACK_APP_TOKEN

botToken
Type: stringDefault: ""

Token OAuth de usuario bot de Slack (xoxb-...). También se puede usar la variable de entorno SLACK_BOT_TOKEN

userToken
Type: stringDefault: ""

Token de usuario de Slack opcional (xoxp-...) para acceso de lectura mejorado

userTokenReadOnly
Type: booleanDefault: true

Restringir el User Token a operaciones de solo lectura. Establecer en false para permitir escrituras como el usuario que instaló la app

signingSecret
Type: stringDefault: ""

Signing Secret para verificación de solicitudes en modo HTTP (de Basic Information → App Credentials)

webhookPath
Type: stringDefault: "/slack/events"

Ruta del endpoint webhook para modo HTTP

dm.policy
Type: stringDefault: "pairing"

Política de control de acceso de DM. Opciones: pairing (aprobación basada en código), open (cualquiera puede enviar DM)

dm.allowFrom
Type: string[]Default: []

Usuarios permitidos para enviar DM al bot. Soporta IDs de usuario, @nombres de usuario, correos electrónicos y comodín (*)

dm.enabled
Type: booleanDefault: true

Si se aceptan mensajes directos

dm.groupEnabled
Type: booleanDefault: false

Habilitar manejo de DMs grupales (MPIM)

dm.groupChannels
Type: string[]Default: []

IDs de canales de DM grupal permitidos

groupPolicy
Type: stringDefault: "open"

Política de manejo de canales. Opciones: open (todos los canales), disabled (sin canales), allowlist (solo configurados)

channels.<id>.allow
Type: booleanDefault: true

Permitir o denegar este canal en modo allowlist

channels.<id>.requireMention
Type: booleanDefault: false

Si el bot necesita @mención para responder en este canal

channels.<id>.users
Type: string[]Default: []

Lista de usuarios permitidos para este canal (IDs, @nombres de usuario o correos)

channels.<id>.skills
Type: string[]Default: []

Restringir habilidades disponibles en este canal (vacío = todas las habilidades)

channels.<id>.systemPrompt
Type: stringDefault: ""

Prompt del sistema de IA personalizado para este canal

channels.<id>.allowBots
Type: booleanDefault: false

Procesar mensajes de otros bots en este canal

replyToMode
Type: stringDefault: "off"

Modo de hilos de respuesta. Opciones: off (canal principal), first (primer respuesta en hilo), all (todas las respuestas en hilo)

replyToModeByChatType
Type: objectDefault: {}

Anulaciones de hilos por tipo de chat. Claves: direct, group, channel. Valores: off, first, all

reactionNotifications
Type: stringDefault: "off"

Qué reacciones activan notificaciones del agente. Opciones: off, own, all

historyLimit
Type: numberDefault: 50

Número de mensajes recientes a incluir como contexto de la IA. Establecer en 0 para deshabilitar

textChunkLimit
Type: numberDefault: 4000

Máximo de caracteres por fragmento de mensaje para respuestas largas de IA

chunkMode
Type: stringDefault: "split"

Cómo dividir respuestas largas. Opciones: split (límite estricto), newline (límites de párrafo)

mediaMaxMb
Type: numberDefault: 20

Tamaño máximo de archivo multimedia en megabytes

slashCommand.enabled
Type: booleanDefault: true

Habilitar manejo de comandos slash

slashCommand.name
Type: stringDefault: "openclaw"

Nombre del comando slash (sin /)

slashCommand.ephemeral
Type: booleanDefault: true

Si las respuestas de comandos slash son visibles solo para quien los invocó

Slack Preguntas Frecuentes

Slack Solución de Problemas

El bot no responde en los canales

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.

Verifica tu configuración de groupPolicy. Si usas 'allowlist', asegúrate de que el ID o nombre del canal esté configurado con 'allow: true'. Verifica que el bot haya sido invitado al canal (/invite @NombreDelBot). Revisa los logs del Gateway buscando mensajes de 'blocked by group policy'.
Los DMs al bot son ignorados

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.

Si usas el modo pairing, verifica los emparejamientos pendientes con 'openclaw pairing list slack' y aprueba mediante 'openclaw pairing approve slack <código>'. Habilita la pestaña Messages en App Home (portal de API de Slack → App Home → Show Tab). Verifica que dm.policy no esté configurado como 'disabled'.
La conexión de Socket Mode falla o se desconecta continuamente

El App Token (xapp-...) es inválido o ha expirado, o hay un problema de red entre tu servidor y Slack.

Verifica que tu App Token sea correcto y tenga el scope connections:write. Regenera el App Token en el portal de la API de Slack si es necesario. Revisa los logs del Gateway buscando errores de conexión WebSocket. Asegúrate de que tu servidor tenga acceso estable a internet hacia wss://wss-primary.slack.com.
Errores de API (missing_scope o invalid_auth)

Al Bot Token le faltan scopes de OAuth requeridos, o el token ha sido revocado/regenerado.

Ve a OAuth & Permissions en el portal de la API de Slack y verifica que todos los scopes requeridos estén añadidos. Si se añadieron scopes recientemente, reinstala la app en tu espacio de trabajo para aplicar los nuevos permisos. Verifica que el token en tu configuración coincida con el token actual en el portal.
Los comandos slash muestran 'dispatch_failed' o no aparecen

El comando slash no fue creado en el portal de la API de Slack, o la URL de solicitud está mal configurada (modo HTTP).

Crea el comando /openclaw bajo Slash Commands en el portal de la API. Para Socket Mode, no se necesita URL. Para el modo HTTP, establece la Request URL a https://tu-host/slack/events. Después de añadir el comando, puede que necesites reinstalar la app en el espacio de trabajo.
Los mensajes se truncan o se envían en múltiples fragmentos

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.

Este es el comportamiento esperado. Ajusta textChunkLimit para controlar el tamaño del fragmento (por defecto: 4000). Establece chunkMode en 'newline' para dividir en límites de párrafo para una fragmentación más natural. Considera instruir a la IA para mantener las respuestas concisas mediante systemPrompt.