Canal Slack do OpenClaw
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.
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
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-....
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.
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
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-1-YOUR_APP_TOKEN",
"botToken": "xoxb-YOUR_BOT_TOKEN"
}
}
}Slack Documentação Detalhada
Visão Geral da Arquitetura
Criando Seu Slack App
Segurança de DM (Pareamento)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"dm": {
"policy": "pairing",
"allowFrom": ["U01ABCDEF", "usuario@empresa.com"]
}
}
}
}Configuração de Canais (Política de Grupo)
{
"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
}
}
}
}
}Encadeamento de Respostas
{
"channels": {
"slack": {
"replyToMode": "off",
"replyToModeByChatType": {
"direct": "all",
"group": "first",
"channel": "off"
}
}
}
}User Token (Opcional)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"userToken": "xoxp-...",
"userTokenReadOnly": true
}
}
}Comandos Slash e App Home
{
"channels": {
"slack": {
"slashCommand": {
"enabled": true,
"name": "openclaw",
"sessionPrefix": "slack:slash",
"ephemeral": true
}
}
}
}Permissões e Escopos
Modo HTTP (API de Eventos)
{
"channels": {
"slack": {
"enabled": true,
"mode": "http",
"botToken": "xoxb-...",
"signingSecret": "seu-signing-secret",
"webhookPath": "/slack/events"
}
}
}Configuração Avançada
{
"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
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Ativar ou desativar o canal Slack |
| mode | string | "socket" | Modo de conexão. Opções: socket (Socket Mode, padrão), http (API de Eventos) |
| appToken | string | "" | 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 | string | "" | Token OAuth de Usuário Bot do Slack (xoxb-...). Também pode usar a variável de ambiente SLACK_BOT_TOKEN |
| userToken | string | "" | Token de Usuário do Slack opcional (xoxp-...) para acesso de leitura aprimorado |
| userTokenReadOnly | boolean | true | Restringir o User Token a operações de somente leitura. Defina como false para permitir escritas como o usuário que instalou |
| signingSecret | string | "" | Signing Secret para verificação de requisições no modo HTTP (de Basic Information → App Credentials) |
| webhookPath | string | "/slack/events" | Caminho do endpoint de webhook para modo HTTP |
| dm.policy | string | "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 | string[] | [] | Usuários autorizados a enviar DM ao bot. Suporta IDs de usuário, @usernames, e-mails e curinga (*) |
| dm.enabled | boolean | true | Se deve aceitar mensagens diretas |
| dm.groupEnabled | boolean | false | Ativar tratamento de DMs em grupo (MPIM) |
| dm.groupChannels | string[] | [] | IDs de canais de DM em grupo permitidos |
| groupPolicy | string | "open" | Política de tratamento de canais. Opções: open (todos os canais), disabled (nenhum canal), allowlist (somente configurados) |
| channels.<id>.allow | boolean | true | Permitir ou negar este canal no modo allowlist |
| channels.<id>.requireMention | boolean | false | Se o bot precisa de @menção para responder neste canal |
| channels.<id>.users | string[] | [] | Lista de permissão de usuários para este canal (IDs, @usernames ou e-mails) |
| channels.<id>.skills | string[] | [] | Restringir habilidades disponíveis neste canal (vazio = todas as habilidades) |
| channels.<id>.systemPrompt | string | "" | Prompt de sistema personalizado da IA para este canal |
| channels.<id>.allowBots | boolean | false | Processar mensagens de outros bots neste canal |
| replyToMode | string | "off" | Modo de encadeamento de respostas. Opções: off (canal principal), first (encadear primeira resposta), all (encadear todas as respostas) |
| replyToModeByChatType | object | {} | Substituições de encadeamento por tipo de chat. Chaves: direct, group, channel. Valores: off, first, all |
| reactionNotifications | string | "off" | Quais reações disparam notificações do agente. Opções: off, own, all |
| historyLimit | number | 50 | Número de mensagens recentes para incluir como contexto da IA. Defina como 0 para desativar |
| textChunkLimit | number | 4000 | Máximo de caracteres por fragmento de mensagem para respostas longas da IA |
| chunkMode | string | "split" | Como dividir respostas longas. Opções: split (limite rígido), newline (limites de parágrafo) |
| mediaMaxMb | number | 20 | Tamanho máximo de arquivo de mídia em megabytes |
| slashCommand.enabled | boolean | true | Ativar tratamento de comandos slash |
| slashCommand.name | string | "openclaw" | Nome do comando slash (sem /) |
| slashCommand.ephemeral | boolean | true | Se as respostas do comando slash são visíveis apenas para quem invocou |
Ativar ou desativar o canal Slack
Modo de conexão. Opções: socket (Socket Mode, padrão), http (API de Eventos)
Token de Nível de App do Slack (xapp-...) para Socket Mode. Também pode usar a variável de ambiente SLACK_APP_TOKEN
Token OAuth de Usuário Bot do Slack (xoxb-...). Também pode usar a variável de ambiente SLACK_BOT_TOKEN
Token de Usuário do Slack opcional (xoxp-...) para acesso de leitura aprimorado
Restringir o User Token a operações de somente leitura. Defina como false para permitir escritas como o usuário que instalou
Signing Secret para verificação de requisições no modo HTTP (de Basic Information → App Credentials)
Caminho do endpoint de webhook para modo HTTP
Política de controle de acesso a DMs. Opções: pairing (aprovação por código), open (qualquer pessoa pode enviar DM)
Usuários autorizados a enviar DM ao bot. Suporta IDs de usuário, @usernames, e-mails e curinga (*)
Se deve aceitar mensagens diretas
Ativar tratamento de DMs em grupo (MPIM)
IDs de canais de DM em grupo permitidos
Política de tratamento de canais. Opções: open (todos os canais), disabled (nenhum canal), allowlist (somente configurados)
Permitir ou negar este canal no modo allowlist
Se o bot precisa de @menção para responder neste canal
Lista de permissão de usuários para este canal (IDs, @usernames ou e-mails)
Restringir habilidades disponíveis neste canal (vazio = todas as habilidades)
Prompt de sistema personalizado da IA para este canal
Processar mensagens de outros bots neste canal
Modo de encadeamento de respostas. Opções: off (canal principal), first (encadear primeira resposta), all (encadear todas as respostas)
Substituições de encadeamento por tipo de chat. Chaves: direct, group, channel. Valores: off, first, all
Quais reações disparam notificações do agente. Opções: off, own, all
Número de mensagens recentes para incluir como contexto da IA. Defina como 0 para desativar
Máximo de caracteres por fragmento de mensagem para respostas longas da IA
Como dividir respostas longas. Opções: split (limite rígido), newline (limites de parágrafo)
Tamanho máximo de arquivo de mídia em megabytes
Ativar tratamento de comandos slash
Nome do comando slash (sem /)
Se as respostas do comando slash são visíveis apenas para quem invocou
Slack Perguntas Frequentes
Slack Solução de Problemas
O canal está bloqueado pelo groupPolicy, ou o bot não está na allowlist, ou o bot não foi convidado para o canal.
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.
O App Token (xapp-...) é inválido ou expirou, ou há um problema de rede entre seu servidor e o Slack.
O Bot Token está sem escopos OAuth obrigatórios, ou o token foi revogado/regenerado.
O comando slash não foi criado no portal da API do Slack, ou a Request URL está mal configurada (modo HTTP).
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.