OpenClaw

Canal Slack do OpenClaw

Empresarial
Médio

Conecte o OpenClaw ao Slack usando Socket Mode (padrão) ou a API de Eventos HTTP. Esta integração de nível empresarial permite que seu assistente de IA opere em workspaces do Slack — lidando com DMs, conversas em canais, reações, threads e comandos slash. O Socket Mode conecta via WebSocket sem necessidade de URL pública; o modo HTTP usa a API de Eventos do Slack para implantações acessíveis publicamente.

Info rápida
DificuldadeMédio
CategoriaEmpresarial
Recursos suportados5 / 6

Slack Recursos suportados

Mensagens de texto

Suportado

Mídia e arquivos

Suportado

Reações

Suportado

Threads

Suportado

Mensagens de voz

Não suportado

Chat em grupo

Suportado

Slack Pré-requisitos

  • Um workspace do Slack com privilégios de administrador (para instalar aplicativos personalizados)
  • Um Slack App criado em api.slack.com/apps
  • App Token (xapp-...) com escopo connections:write (para Socket Mode)
  • Bot Token (xoxb-...) obtido após instalar o aplicativo no seu workspace
  • OpenClaw Gateway em execução e configurado

Slack Configuração rápida

1

Criar Slack App e ativar Socket Mode

Acesse api.slack.com/apps e clique em 'Create New App' → 'From scratch'. Dê um nome e selecione seu workspace. Navegue até 'Socket Mode' na barra lateral e ative-o. Gere um App-Level Token com o escopo 'connections:write' — isso fornecerá o token xapp-....

2

Configurar escopos OAuth e instalar no workspace

Acesse 'OAuth & Permissions', adicione os Bot Token Scopes necessários (chat:write, channels:history, channels:read, im:write, im:history, im:read, users:read, reactions:read, reactions:write, files:write, etc.). Clique em 'Install to Workspace' e autorize. Copie o Bot User OAuth Token (xoxb-...). Em seguida, acesse 'Event Subscriptions', ative os eventos e inscreva-se em: message.channels, message.groups, message.im, message.mpim, app_mention, reaction_added, reaction_removed.

3

Adicionar configuração, iniciar Gateway e convidar bot

Adicione a configuração do canal Slack em ~/.openclaw/openclaw.json com seu appToken e botToken. Inicie o Gateway — ele se conectará ao Slack via Socket Mode. Convide o bot para seus canais-alvo digitando '/invite @NomeDoSeuBot' no Slack. Envie uma mensagem para testar.

Slack Exemplo de configuração

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

Slack Documentação Detalhada

Visão Geral da Arquitetura

O OpenClaw se conecta ao Slack por meio de dois modos suportados: • Socket Mode (padrão) — Usa uma conexão WebSocket iniciada do seu servidor para o Slack. Nenhuma URL pública ou configuração de firewall é necessária. Ideal para desenvolvimento, implantações internas e ambientes atrás de NATs. • Modo HTTP (API de Eventos) — O Slack envia eventos para o endpoint HTTPS do seu servidor. Requer uma URL acessível publicamente. Melhor para implantações de produção de alta disponibilidade com balanceadores de carga. Em ambos os modos, o bot recebe eventos em tempo real (mensagens, reações, menções) e responde pela API do Slack. O roteamento de sessão depende do contexto: DMs usam a sessão principal do agente, conversas em canais criam sessões isoladas por canal (agent:<agentId>:slack:channel:<channelId>), e comandos slash recebem sessões por usuário.
O Socket Mode é recomendado para a maioria das configurações auto-hospedadas — funciona atrás de firewalls e NATs sem nenhuma configuração de rede.
Você pode definir tokens via variáveis de ambiente: SLACK_APP_TOKEN e SLACK_BOT_TOKEN, ou no seu arquivo de configuração.

Criando Seu Slack App

Configurar um Slack app requer a configuração de vários componentes no portal da API do Slack: 1. Acesse api.slack.com/apps e clique em 'Create New App' → 'From scratch' 2. Nomeie seu app e selecione o workspace de destino 3. Ative o Socket Mode (Settings → Socket Mode → Enable). Gere um App-Level Token com escopo connections:write 4. Adicione Bot Token Scopes em OAuth & Permissions: • chat:write, im:write — Enviar e gerenciar mensagens • channels:history, groups:history, im:history, mpim:history — Ler histórico de mensagens • channels:read, groups:read, im:read, mpim:read — Ler informações de conversas • users:read — Consultar perfis de usuários • reactions:read, reactions:write — Reagir a mensagens • pins:read, pins:write — Gerenciar mensagens fixadas • emoji:read — Listar emojis personalizados • files:write — Fazer upload de arquivos 5. Instale o app no seu workspace e copie o Bot Token (xoxb-...) 6. Ative Event Subscriptions e inscreva-se nos eventos do 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 crie um comando slash /openclaw em Slash Commands 8. Ative a aba Messages em App Home para suporte a DMs Dica: Você pode usar o manifesto de app fornecido para configurar automaticamente todos os escopos e eventos de uma vez durante a criação do app.
Mantenha seus tokens em segredo. O App Token (xapp-...) e o Bot Token (xoxb-...) concedem controle total sobre seu app. Se comprometidos, regenere-os imediatamente no portal da API do Slack.
A opção de manifesto durante a criação do app pode configurar todos os escopos, eventos e recursos necessários em uma única etapa.
Certifique-se de ativar Event Subscriptions e inscrever-se nos eventos de bot necessários. Sem isso, o bot se conectará, mas não receberá nenhuma mensagem.

Segurança de DM (Pareamento)

As políticas de DM do Slack controlam quem pode interagir com seu assistente de IA em mensagens diretas. O OpenClaw suporta dois modos: • pairing (padrão) — Remetentes desconhecidos de DM recebem um código de pareamento com tempo limitado (expira após 1 hora). Aprove via 'openclaw pairing approve slack <código>' no seu terminal. Uma vez aprovados, podem conversar livremente. Máximo de 3 solicitações de pareamento pendentes por canal. • open — Qualquer pessoa que enviar DM ao bot recebe uma resposta. Requer dm.allowFrom=["*"] para funcionar. Use com cautela em workspaces grandes. Entradas de lista de permissão suportam múltiplos formatos: • IDs de Usuário do Slack (ex., "U01ABCDEF") • Referências @username • Endereços de e-mail Você também pode verificar pareamentos pendentes com 'openclaw pairing list slack'.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "dm": {
        "policy": "pairing",
        "allowFrom": ["U01ABCDEF", "usuario@empresa.com"]
      }
    }
  }
}
Use a política de pareamento para workspaces com muitos usuários para evitar uso não autorizado da IA. Cada código de pareamento expira após 1 hora.
No modo open, defina allowFrom como ["*"] para permitir todos os usuários, ou especifique IDs de usuários/e-mails individuais para restringir o acesso.

Configuração de Canais (Política de Grupo)

As políticas de canal controlam em quais canais do Slack o bot opera e como ele se comporta: groupPolicy de nível superior: • open — O bot responde em todos os canais para os quais é convidado • disabled — O bot ignora todas as mensagens de canais • allowlist — O bot só responde em canais explicitamente configurados A configuração por canal permite ajustar o comportamento para canais individuais: • allow — Ativar/desativar o canal no modo allowlist • requireMention — Se o bot precisa ser @mencionado para responder • users — Lista de permissão de usuários para este canal específico • skills — Restringir quais habilidades/ferramentas estão disponíveis neste canal • systemPrompt — Instruções personalizadas de IA para este canal • allowBots — Se deve processar mensagens de outros bots (padrão: false) • enabled — Ativar/desativar o canal completamente
openclaw.json
{
  "channels": {
    "slack": {
      "groupPolicy": "allowlist",
      "channels": {
        "C01ABCDEF": {
          "allow": true,
          "requireMention": true,
          "users": ["U01ABCDEF"],
          "skills": ["search", "docs"],
          "systemPrompt": "Mantenha as respostas curtas e técnicas."
        },
        "#general": {
          "allow": true,
          "requireMention": true
        }
      }
    }
  }
}
As chaves de canal podem ser IDs de canal (C01ABCDEF) ou nomes de canal (#general). IDs são mais confiáveis, pois sobrevivem a renomeações de canais.
Use systemPrompt por canal para dar à IA personalidades ou instruções diferentes para canais diferentes — ex., técnico em #engenharia, casual em #bate-papo.

Encadeamento de Respostas

O OpenClaw suporta encadeamento flexível de respostas no Slack, controlando se o bot responde no canal principal ou cria threads. replyToMode global: • off (padrão) — Responde no canal principal. Só cria threads quando a mensagem de origem já está em uma thread. • first — A primeira resposta vai para uma thread, respostas subsequentes vão para o canal principal. • all — Todas as respostas são enviadas como respostas de thread. Substituições por tipo de chat via replyToModeByChatType: • direct — Conversas de DM 1:1 • group — Conversas de DM em grupo / MPIM • channel — Canais padrão do Slack Controle manual de thread via tags de resposta: • [[reply_to_current]] — Responder à mensagem que acionou o bot • [[reply_to:<message_id>]] — Responder a um ID de mensagem específico
openclaw.json
{
  "channels": {
    "slack": {
      "replyToMode": "off",
      "replyToModeByChatType": {
        "direct": "all",
        "group": "first",
        "channel": "off"
      }
    }
  }
}
Para canais movimentados, use replyToMode: 'all' para manter as conversas organizadas em threads e evitar poluir o canal principal.
Substituições por tipo de chat permitem encadear DMs mas manter respostas de canal inline, ou vice-versa.

User Token (Opcional)

Além do Bot Token, você pode opcionalmente configurar um User Token (xoxp-...) para acesso de leitura aprimorado. O User Token fornece dados mais ricos para histórico, fixados, reações, emojis personalizados e informações de membros. Prioridade de uso de token: • Operações de leitura — User Token é preferido; usa o Bot Token como fallback se indisponível • Operações de escrita — Bot Token é sempre usado por padrão O flag userTokenReadOnly (padrão: true) garante que o User Token nunca seja usado para operações de escrita. Defina como false somente se quiser que a IA aja como o usuário (requer escopos de escrita adicionais no User Token). Para adicionar um User Token, configure escopos de user token em OAuth & Permissions em 'User Token Scopes' — tipicamente escopos de somente leitura 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
    }
  }
}
Definir userTokenReadOnly como false permite que a IA realize operações de escrita (enviar mensagens, adicionar reações, fixar mensagens) como o usuário que instalou, em vez do bot. Ative isso somente se entender as implicações de segurança.

Comandos Slash e App Home

O OpenClaw suporta comandos slash do Slack e configuração de App Home: Comandos Slash: Crie um comando /openclaw no portal da API do Slack em 'Slash Commands'. No Socket Mode, nenhuma URL de requisição é necessária — o Slack roteia o comando pela conexão WebSocket. Se estiver usando comandos nativos, crie comandos slash adicionais conforme necessário. App Home: Ative a 'Messages Tab' em App Home para permitir que os usuários enviem DMs ao bot diretamente da sua página de app. Isso fornece uma interface limpa e dedicada para conversas 1:1. Roteamento de Sessão: • DMs → sessão principal (agent:main:main) • Mensagens de canal → agent:<agentId>:slack:channel:<channelId> • Comandos slash → agent:<agentId>:slack:slash:<userId> Alvos de entrega para cron/CLI: • user:<userId> — Enviar uma DM para um usuário específico • channel:<channelId> — Postar em um canal específico
openclaw.json
{
  "channels": {
    "slack": {
      "slashCommand": {
        "enabled": true,
        "name": "openclaw",
        "sessionPrefix": "slack:slash",
        "ephemeral": true
      }
    }
  }
}
Respostas efêmeras de comandos slash são visíveis apenas para o usuário que invocou o comando. Defina ephemeral: false para tornar as respostas visíveis para todos no canal.
A Messages Tab no App Home deve estar ativada para a funcionalidade de DM — sem ela, os usuários não podem iniciar conversas com o bot.

Permissões e Escopos

O Slack usa escopos OAuth para controlar o que seu app pode fazer. Aqui estão os escopos obrigatórios e opcionais: Escopos Obrigatórios do Bot Token: • chat:write — Enviar, atualizar e excluir mensagens • im:write — Abrir conversas de DM • channels:history, groups:history, im:history, mpim:history — Ler histórico de mensagens • channels:read, groups:read, im:read, mpim:read — Ler informações de conversas • users:read — Consultar perfis de usuários • reactions:read, reactions:write — Ler e adicionar reações • pins:read, pins:write — Gerenciar mensagens fixadas • emoji:read — Listar emojis personalizados do workspace • files:write — Fazer upload de arquivos e mídia Escopos Opcionais do User Token (somente leitura): • channels:history, groups:history, im:history, mpim:history — Acesso aprimorado ao histórico • channels:read, groups:read, im:read, mpim:read — Informações aprimoradas de conversas • users:read — Consulta de perfil de usuário • reactions:read, pins:read, emoji:read — Ler reações, fixados, emojis • search:read — Pesquisar mensagens e arquivos
Comece apenas com os escopos do Bot Token. Adicione o User Token e seus escopos somente se precisar de capacidades de leitura aprimoradas (como search:read).
O manifesto de app fornecido inclui todos os escopos recomendados — use-o durante a criação do app para a configuração mais rápida.

Modo HTTP (API de Eventos)

Se seu Gateway é acessível publicamente via HTTPS, você pode usar o modo HTTP em vez do Socket Mode. No modo HTTP, o Slack envia eventos diretamente para o endpoint do seu servidor. Etapas de configuração: 1. Crie o Slack app, mas NÃO ative o Socket Mode 2. Obtenha o Signing Secret em 'Basic Information' → 'App Credentials' 3. Instale o app para obter o Bot Token 4. Em 'Event Subscriptions', defina a Request URL como: https://seu-host-gateway/slack/events 5. Em 'Interactivity & Shortcuts', defina a mesma Request URL 6. Em 'Slash Commands', defina a Request URL para o mesmo endpoint O modo HTTP não requer um App Token — ele usa o Signing Secret para verificar que as requisições recebidas são genuinamente do Slack.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "mode": "http",
      "botToken": "xoxb-...",
      "signingSecret": "seu-signing-secret",
      "webhookPath": "/slack/events"
    }
  }
}
Para o modo HTTP, todos os três endpoints (Events, Interactivity, Slash Commands) devem apontar para a mesma URL: https://seu-host/slack/events.
Use o Signing Secret (não o App Token) para o modo HTTP. O Signing Secret verifica a autenticidade das requisições via assinaturas HMAC-SHA256.
O modo HTTP requer um certificado SSL válido e um endpoint acessível publicamente. Certifique-se de que seu servidor é acessível a partir das faixas de IP do Slack.

Configuração Avançada

O OpenClaw oferece diversas configurações avançadas para ajustar o comportamento do Slack: Histórico e Contexto: • historyLimit (padrão: 50) — Número de mensagens recentes incluídas no contexto da IA. Defina como 0 para desativar a injeção de histórico. Texto e Mídia: • textChunkLimit (padrão: 4000) — Máximo de caracteres por fragmento de mensagem para respostas longas • chunkMode: "newline" — Dividir por limites de parágrafo em vez de limites rígidos de caracteres • mediaMaxMb (padrão: 20) — Tamanho máximo de arquivo de mídia em megabytes Portões de Ação de Ferramentas: Controle quais operações do Slack o agente pode executar: • reactions: true — Reagir e listar reações • messages: true — Ler, enviar, editar e excluir mensagens • pins: true — Fixar, desfixar e listar mensagens fixadas • memberInfo: true — Consultar informações de membros do workspace • emojiList: true — Listar emojis personalizados do workspace Notas de Segurança: • Operações de escrita usam o Bot Token por padrão, mantendo o isolamento de permissões a nível de aplicação • Quando userTokenReadOnly é false e um User Token está configurado, escritas podem usar o User Token (agindo como o usuário que instalou) • Ao ativar allowBots em um canal, combine com requireMention e listas de permissão de usuários para evitar loops de resposta 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 Referência de Configuração

enabled
Type: booleanDefault: true

Ativar ou desativar o canal Slack

mode
Type: stringDefault: "socket"

Modo de conexão. Opções: socket (Socket Mode, padrão), http (API de Eventos)

appToken
Type: stringDefault: ""

Token de Nível de App do Slack (xapp-...) para Socket Mode. Também pode usar a variável de ambiente SLACK_APP_TOKEN

botToken
Type: stringDefault: ""

Token OAuth de Usuário Bot do Slack (xoxb-...). Também pode usar a variável de ambiente SLACK_BOT_TOKEN

userToken
Type: stringDefault: ""

Token de Usuário do Slack opcional (xoxp-...) para acesso de leitura aprimorado

userTokenReadOnly
Type: booleanDefault: true

Restringir o User Token a operações de somente leitura. Defina como false para permitir escritas como o usuário que instalou

signingSecret
Type: stringDefault: ""

Signing Secret para verificação de requisições no modo HTTP (de Basic Information → App Credentials)

webhookPath
Type: stringDefault: "/slack/events"

Caminho do endpoint de webhook para modo HTTP

dm.policy
Type: stringDefault: "pairing"

Política de controle de acesso a DMs. Opções: pairing (aprovação por código), open (qualquer pessoa pode enviar DM)

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

Usuários autorizados a enviar DM ao bot. Suporta IDs de usuário, @usernames, e-mails e curinga (*)

dm.enabled
Type: booleanDefault: true

Se deve aceitar mensagens diretas

dm.groupEnabled
Type: booleanDefault: false

Ativar tratamento de DMs em grupo (MPIM)

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

IDs de canais de DM em grupo permitidos

groupPolicy
Type: stringDefault: "open"

Política de tratamento de canais. Opções: open (todos os canais), disabled (nenhum canal), allowlist (somente configurados)

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

Permitir ou negar este canal no modo allowlist

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

Se o bot precisa de @menção para responder neste canal

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

Lista de permissão de usuários para este canal (IDs, @usernames ou e-mails)

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

Restringir habilidades disponíveis neste canal (vazio = todas as habilidades)

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

Prompt de sistema personalizado da IA para este canal

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

Processar mensagens de outros bots neste canal

replyToMode
Type: stringDefault: "off"

Modo de encadeamento de respostas. Opções: off (canal principal), first (encadear primeira resposta), all (encadear todas as respostas)

replyToModeByChatType
Type: objectDefault: {}

Substituições de encadeamento por tipo de chat. Chaves: direct, group, channel. Valores: off, first, all

reactionNotifications
Type: stringDefault: "off"

Quais reações disparam notificações do agente. Opções: off, own, all

historyLimit
Type: numberDefault: 50

Número de mensagens recentes para incluir como contexto da IA. Defina como 0 para desativar

textChunkLimit
Type: numberDefault: 4000

Máximo de caracteres por fragmento de mensagem para respostas longas da IA

chunkMode
Type: stringDefault: "split"

Como dividir respostas longas. Opções: split (limite rígido), newline (limites de parágrafo)

mediaMaxMb
Type: numberDefault: 20

Tamanho máximo de arquivo de mídia em megabytes

slashCommand.enabled
Type: booleanDefault: true

Ativar tratamento de comandos slash

slashCommand.name
Type: stringDefault: "openclaw"

Nome do comando slash (sem /)

slashCommand.ephemeral
Type: booleanDefault: true

Se as respostas do comando slash são visíveis apenas para quem invocou

Slack Perguntas Frequentes

Slack Solução de Problemas

Bot não responde nos canais

O canal está bloqueado pelo groupPolicy, ou o bot não está na allowlist, ou o bot não foi convidado para o canal.

Verifique sua configuração de groupPolicy. Se estiver usando 'allowlist', certifique-se de que o ID ou nome do canal está configurado com 'allow: true'. Verifique se o bot foi convidado para o canal (/invite @NomeDoSeuBot). Verifique os logs do Gateway para mensagens 'blocked by group policy'.
DMs para o bot são ignoradas

A política de DM está definida como 'pairing' e o remetente não foi aprovado, ou a Messages Tab não está ativada no App Home.

Se estiver usando o modo pairing, verifique pareamentos pendentes com 'openclaw pairing list slack' e aprove via 'openclaw pairing approve slack <código>'. Ative a Messages Tab no App Home (portal da API do Slack → App Home → Show Tab). Verifique se dm.policy não está definido como 'disabled'.
Conexão Socket Mode falha ou continua desconectando

O App Token (xapp-...) é inválido ou expirou, ou há um problema de rede entre seu servidor e o Slack.

Verifique se seu App Token está correto e possui o escopo connections:write. Regenere o App Token no portal da API do Slack se necessário. Verifique os logs do Gateway para erros de conexão WebSocket. Certifique-se de que seu servidor tem acesso estável à internet para wss://wss-primary.slack.com.
Erros de API (missing_scope ou invalid_auth)

O Bot Token está sem escopos OAuth obrigatórios, ou o token foi revogado/regenerado.

Acesse OAuth & Permissions no portal da API do Slack e verifique se todos os escopos obrigatórios foram adicionados. Se escopos foram adicionados recentemente, reinstale o app no seu workspace para aplicar as novas permissões. Verifique se o token no seu config corresponde ao token atual no portal.
Comandos slash mostram 'dispatch_failed' ou não aparecem

O comando slash não foi criado no portal da API do Slack, ou a Request URL está mal configurada (modo HTTP).

Crie o comando /openclaw em Slash Commands no portal da API. Para Socket Mode, nenhuma URL é necessária. Para modo HTTP, defina a Request URL como https://seu-host/slack/events. Após adicionar o comando, pode ser necessário reinstalar o app no workspace.
Mensagens estão truncadas ou enviadas em múltiplos fragmentos

Respostas longas da IA que excedem o textChunkLimit do OpenClaw (4.000 caracteres por padrão) são automaticamente fragmentadas em múltiplas mensagens. Nota: os limites do próprio Slack são 3.000 caracteres por section block e 40.000 caracteres por campo text da mensagem.

Este é o comportamento esperado. Ajuste textChunkLimit para controlar o tamanho do fragmento (padrão: 4000). Defina chunkMode como 'newline' para dividir por limites de parágrafo para fragmentação mais natural. Considere instruir a IA a manter respostas concisas via systemPrompt.