ENΒ·ESΒ·DEΒ·PTΒ·FR
⌘K

Integracion con Slack

Conecta aidaemon a tu workspace de Slack via Socket Mode para mensajeria en tiempo real.

Binarios Precompilados
Si instalaste via el script de una linea o Homebrew, el soporte de Slack ya esta incluido. Solo configura config.toml a continuacion. El feature flag solo es necesario al compilar desde el codigo fuente.

Crear una Aplicacion de Slack

  1. Ve a api.slack.com/apps y haz clic en Create New App
  2. Elige From scratch, dale un nombre (ej., "aidaemon") y selecciona tu workspace
  3. En Socket Mode, habilitalo y genera un App-Level Token con el scope connections:write — este es tu app_token (xapp-...)
  4. En OAuth & Permissions, agrega estos Bot Token Scopes:
    • channels:read — listar miembros en canales publicos
    • chat:write — enviar mensajes
    • files:read — descargar archivos enviados por usuarios
    • files:write — subir archivos a Slack
    • groups:read — listar miembros en canales privados (necesario para resolver nombres de usuarios en canales privados)
    • im:read — leer metadatos de mensajes directos (requerido para transferencias de archivos en mensajes directos)
    • reactions:write — agregar reacciones de estado (reloj de arena durante el procesamiento)
    • users:read — resolver informacion de usuarios
  5. En Event Subscriptions, habilita los eventos y suscribete a:
    • message.channels — mensajes en canales publicos
    • message.groups — mensajes en canales privados
    • message.im — mensajes directos
  6. En App Home, desplazate hasta Show Tabs y habilita el Messages Tab. Marca "Allow users to send Slash commands and messages from the messages tab" — sin esto, los usuarios no pueden enviar mensajes directos al bot.
  7. Instala la aplicacion en tu workspace — copia el Bot User OAuth Token (xoxb-...)

Configuracion

config.toml
[slack]
enabled = true
app_token = "xapp-1-..."
bot_token = "xoxb-..."
allowed_user_ids = ["U123456789"]
use_threads = true
KeyTypeDefaultDescription
enabledboolfalseHabilitar el canal de Slack
app_tokenstringToken de nivel de aplicacion para Socket Mode (xapp-...). Soporta "keychain" y ${ENV}.
bot_tokenstringToken OAuth de usuario del bot (xoxb-...). Soporta "keychain" y ${ENV}.
allowed_user_idsarray[]IDs de usuarios de Slack permitidos para interactuar. Vacio = sin restriccion.
use_threadsbooltrueResponder en hilos por defecto. Cada hilo obtiene su propio contexto de sesion.

Encontrar tu ID de Usuario de Slack

Haz clic en tu perfil en Slack, luego haz clic en MoreCopy member ID. El formato es U seguido de caracteres alfanumericos (ej., U0123ABCDEF).

Caracteristicas

  • Socket Mode — conexion WebSocket en tiempo real, no se requiere URL publica
  • Respuestas en hilos — conversaciones en hilos configurables con contexto de sesion por hilo
  • Transferencia de archivos — envia y recibe archivos a traves de Slack
  • Aprobaciones con Block Kit — botones interactivos para aprobacion de comandos de terminal
  • Comandos slash — mismos comandos que Telegram (/cost, /model, /tasks, etc.)
  • Reacciones de estado — emoji de reloj de arena mientras se procesa, se elimina al completar
  • Conversion de Markdown — markdown estandar convertido automaticamente al formato mrkdwn de Slack
  • Division de mensajes — respuestas largas divididas para respetar el limite de 39KB de mensajes de Slack
  • Auto-reconexion — backoff exponencial en caso de fallo de conexion (5s → 60s maximo)

Modelo de Sesiones

Las sesiones de Slack se identifican por canal e hilo:

  • Mensaje en canal: slack:{channel_id}
  • Mensaje en hilo: slack:{channel_id}:{thread_ts} (cuando use_threads esta habilitado)

Cada sesion mantiene su propio historial de conversacion, memoria de trabajo y contexto de hechos.

Control de Acceso
Si allowed_user_ids esta vacio, cualquier persona en el workspace que pueda enviar mensajes al bot puede interactuar con el. Siempre configura esto en produccion.