Repository navigation
chatbot slack
mobius1qwe edited this page Nov 13, 2026
·
1 revision
Important
Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.
Nível: intermediário
Em uma frase: TRALChatSlack liga o robô ao Slack pela Events API e
interatividade (com a assinatura v0 do Slack) ou pelo Socket Mode, e responde com
chat.postMessage, Block Kit e arquivos.
Você vai precisar: os pacotes RALModuleChatPackage e RALModuleChatSlackPackage
(requer RALNetPackage e RALModuleWebSocketPackage) e um cliente RAL com HTTPS.
- Crie um app em api.slack.com/apps.
- Escopos do bot:
chat:write,files:write,files:read,app_mentions:read,channels:history,im:history. Instale no workspace e use o tokenxoxb-...como token do canal. -
Pelo webhook: copie o Signing Secret para
SigningSecrete aponte Event Subscriptions e Interactivity parahttps://seu.dominio/slack. O desafiourl_verificationé respondido sozinho. -
Sem servidor público (Socket Mode): ligue o Socket Mode, crie um token de app
xapp-...comconnections:write, ponha emAppToken(ou o nome da variável emAppTokenName) e useReceiveMode := crmPolling.
- Assinatura v0 (HMAC-SHA256) conferida antes de tudo, janela de 5 minutos; respostas em até 3 segundos (o robô trabalha depois).
- Comandos de barra e ações de botão chegam ao robô como as outras mensagens.
- Texto em mrkdwn, botões e menus em Block Kit (
ButtonsPerRow), respostas em thread (ReplyTo), arquivos pelo fluxo de upload do Slack, edição e remoção. - O Slack não tem "digitando" para robôs:
Supports(..., ccTyping)diz não. - O limite de cerca de 1 mensagem por segundo por canal e o
Retry-Afterjá são respeitados. "Testar token" (clique direito) mostra o robô e o workspace.
| sintoma | causa | o que fazer |
|---|---|---|
| o Slack diz que a URL não respondeu |
SigningSecret errado ou HTTPS inválido |
confira o segredo e o certificado |
missing_scope ao enviar |
escopo faltando | adicione e reinstale o app |
| Socket Mode não conecta |
AppToken vazio ou sem connections:write
|
gere o token de app |
Começar
Servidor
- Rotas e parâmetros
- Rotas avançadas: tipos, grupos, versões 🚧
- Ler o pedido e responder
- Objetos no corpo 🚧
- Resposta em fluxo 🚧
- Plugins 🚧
- Serviços (contêiner de dependências) 🚧
- Barramento de eventos 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- JSON-RPC 2.0 🚧
- Servidor MCP (IA) 🚧
-
Protocol Buffers 🚧
- gRPC 🚧
- WebSocket 🚧
- Hubs (WebSocket) 🚧
- Swagger e Postman
- Servidor SOAP 🚧
- WS-Security 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
- Testes em memória 🚧
MQTT 🚧
- O que é e quando usar 🚧
- Cliente MQTT 🚧
- Broker MQTT 🚧
- MQTT-SN 🚧
- Ponte REST 🚧
- Segurança 🚧
- Rede ruim 🚧
E-mail 🚧
- Mensagens 🚧
- Enviar 🚧
- Receber 🚧
- Ler a caixa postal 🚧
- Verificar o que chega 🚧
- Servir caixas postais 🚧
- S/MIME 🚧
- OpenPGP 🚧
Chatbot 🚧
- O robô e os canais 🚧
- Telegram 🚧
- Gateways REST (WhatsApp não oficial) 🚧
- Discord 🚧
- Slack 🚧
- Microsoft Teams 🚧
- Conversa em etapas 🚧
Cliente
Motores
- Qual motor escolher?
- Compatibilidade
- Recursos
- QUIC
- Motor NgHttp2 (HTTP/2) 🚧
- Motor XSocket 🚧
- Motor AdvancedHTTP (experimental) 🚧
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar