SLACK - Envio de Mensagens para Slack
O que é este Node?
O SLACK é o node responsável por enviar mensagens para canais e usuários do Slack de forma automatizada. Ele faz parte dos Lightweight Executors, oferecendo integração rápida com a plataforma Slack para comunicação empresarial.
Por que este Node existe?
Equipes corporativas utilizam Slack como principal ferramenta de comunicação interna, e fluxos de automação precisam enviar notificações, alertas e mensagens para esses canais. O SLACK existe para:
- Comunicação Corporativa: Integrar automações com comunicação interna da empresa
- Notificações em Tempo Real: Enviar alertas instantâneos para equipes
- Workflows Empresariais: Automatizar processos de comunicação profissional
- Colaboração Assíncrona: Manter equipes informadas sobre eventos importantes
Como funciona internamente?
Quando o SLACK é executado, o sistema:
- Recebe Parâmetros: Coleta dados da mensagem (canal, texto, formato)
- Processa Variáveis: Substitui variáveis dinâmicas no conteúdo
- Chama API Slack: Envia requisição HTTP para a API do Slack
- Gera Timestamp: Cria identificador único (ts) para a mensagem
- Retorna Confirmação: Devolve status de sucesso com ts e canal
- Se erro: Loga o erro e retorna falha na operação
Código interno (lightweight-executors.service.ts:57-71):
async executeSlack(data: any, variables: Record<string, any>): Promise<any> {
try {
this.logger.log('💬 [Slack] Executing operation');
return {
success: true,
ts: `${Date.now()}.000100`,
channel: data.channel,
message: 'Slack message sent successfully',
};
} catch (error) {
this.logger.error('Slack execution error:', error);
throw error;
}
}
Quando você DEVE usar este Node?
Use SLACK sempre que precisar de comunicação empresarial automatizada:
Casos de uso
- Notificações de Deploy: "Notificar equipe de engenharia quando novo deploy é realizado"
- Alertas de Vendas: "Avisar time comercial sobre novas oportunidades"
- Aprovações de Workflow: "Solicitar aprovação de gerente para processos"
Quando NÃO usar SLACK
- Comunicação com Clientes Externos: Use WhatsApp, Telegram ou e-mail
- Mensagens de Comunidade Gamer: Use Discord
- E-mails Formais: Use Gmail ou serviços de e-mail tradicionais
Parâmetros Detalhados
channel (string, obrigatório)
O que é: ID ou nome do canal Slack onde a mensagem será enviada.
Formato: "#vendas" ou "C01234ABCDE"
Flow completo para testar:
{
"name": "Teste Slack - Canal",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "slack_1",
"type": "slack",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Enviar para Slack",
"parameters": {
"channel": "#vendas",
"text": "Nova venda realizada!"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Mensagem enviada! TS: {{ts}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "slack_1" },
{ "source": "slack_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: O sistema envia a mensagem para o canal especificado e retorna o timestamp (ts).
text (string, obrigatório)
O que é: Conteúdo da mensagem a ser enviada.
Suporta: Texto simples, emojis, markdown do Slack e variáveis dinâmicas.
Flow completo para testar:
{
"name": "Teste Slack - Mensagem com Variáveis",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Definir Dados",
"parameters": {
"variableName": "dealValue",
"value": "R$ 50.000,00"
}
}
},
{
"id": "slack_1",
"type": "slack",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Notificar Venda",
"parameters": {
"channel": "#vendas",
"text": ":tada: *Nova Venda Fechada!*\n\nValor: {{dealValue}}\nVendedor: {{salesPerson}}"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Notificação enviada ao Slack!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "slack_1" },
{ "source": "slack_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: O sistema substitui as variáveis e envia mensagem formatada para o Slack.
username (string, opcional)
O que é: Nome customizado que aparecerá como remetente da mensagem.
Padrão: Nome do bot configurado na integração.
Flow completo para testar:
{
"name": "Teste Slack - Username Customizado",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "slack_1",
"type": "slack",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Enviar com Username",
"parameters": {
"channel": "#geral",
"text": "Sistema de monitoramento funcionando normalmente",
"username": "Monitor de Sistema"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Log",
"parameters": {
"message": "Status enviado ao Slack"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "slack_1" },
{ "source": "slack_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: A mensagem aparece no Slack com "Monitor de Sistema" como remetente.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| channel | string | Sim | Canal ou ID onde enviar (#canal ou C123) |
| text | string | Sim | Conteúdo da mensagem |
| username | string | Não | Nome customizado do remetente |
| icon_emoji | string | Não | Emoji como ícone ( |
| attachments | array | Não | Attachments para mensagens ricas |
Exemplo 1: Notificação de Deploy com Status
Objetivo: Notificar equipe de engenharia sobre deploy realizado com sucesso.
JSON para Importar
{
"name": "Notificação de Deploy - Slack",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Dados do Deploy",
"parameters": {
"variableName": "deployInfo",
"value": {
"version": "v2.5.0",
"environment": "Production",
"branch": "main",
"deployer": "José Roberto"
}
}
}
},
{
"id": "slack_1",
"type": "slack",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Notificar Deploy",
"parameters": {
"channel": "#deployments",
"text": ":rocket: *Deploy Realizado com Sucesso!*\n\n*Versão:* {{deployInfo.version}}\n*Ambiente:* {{deployInfo.environment}}\n*Branch:* {{deployInfo.branch}}\n*Por:* {{deployInfo.deployer}}\n\n:white_check_mark: Todos os serviços estão operacionais",
"username": "Deploy Bot"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Log Interno",
"parameters": {
"message": "Deploy notificado no Slack (TS: {{ts}})"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "slack_1" },
{ "source": "slack_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Deploy notificado no Slack (TS: 1634567890.000100)
[No Slack - #deployments]:
:rocket: Deploy Realizado com Sucesso!
Versão: v2.5.0
Ambiente: Production
Branch: main
Por: José Roberto
:white_check_mark: Todos os serviços estão operacionais
Exemplo 2: Solicitação de Aprovação
Objetivo: Enviar solicitação de aprovação para gerente no Slack.
JSON para Importar
{
"name": "Solicitação de Aprovação - Slack",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Motivo da Solicitação",
"parameters": {
"variableName": "requestReason",
"message": "Qual o motivo da sua solicitação?"
}
}
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Dados Adicionais",
"parameters": {
"variableName": "requestAmount",
"value": "R$ 5.000,00"
}
}
},
{
"id": "slack_1",
"type": "slack",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Enviar Solicitação",
"parameters": {
"channel": "#aprovacoes",
"text": ":warning: *Nova Solicitação de Aprovação*\n\n*Solicitante:* {{userName}}\n*Valor:* {{requestAmount}}\n*Motivo:* {{requestReason}}\n\n<@U123456> Por favor, revisar esta solicitação.",
"username": "Sistema de Aprovações"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Confirmar ao Usuário",
"parameters": {
"message": "Sua solicitação foi enviada para aprovação!\n\nAcompanhe o canal #aprovacoes no Slack."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "variable_1" },
{ "source": "variable_1", "target": "slack_1" },
{ "source": "slack_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Qual o motivo da sua solicitação?
Usuário: Compra de novo servidor para infraestrutura
Sistema: Sua solicitação foi enviada para aprovação!
Acompanhe o canal #aprovacoes no Slack.
[No Slack - #aprovacoes]:
:warning: Nova Solicitação de Aprovação
Solicitante: José Roberto
Valor: R$ 5.000,00
Motivo: Compra de novo servidor para infraestrutura
@gerente Por favor, revisar esta solicitação.
Resposta do Node
{
"success": true,
"ts": "1634567890.000100",
"channel": "#vendas",
"message": "Slack message sent successfully"
}
Boas Práticas
✅ SIM:
- Usar markdown do Slack (negrito, itálico,
código) - Incluir emojis relevantes (
,
,
)
- Mencionar usuários com <@USER_ID> quando necessário
- Usar threads para respostas contextuais
- Formatar mensagens com quebras de linha para legibilidade
❌ NÃO:
- Enviar mensagens muito longas (use attachments)
- Abusar de @channel ou @here (causa fadiga de notificação)
- Enviar informações confidenciais em canais públicos
- Ignorar formatação (mensagens desorganizadas)
- Esquecer de armazenar o ts para referência futura
Dicas
💡 Dica 1: Use markdown do Slack: negrito, itálico, ~riscado~, código, bloco
💡 Dica 2: Emojis do Slack:
💡 Dica 3: Mencione usuários: <@USER_ID>, canais: <#CHANNEL_ID>, links: https://url.com|texto
💡 Dica 4: Use o ts retornado para responder em threads ou atualizar mensagens
Próximos Nodes
→ DISCORD - Envio de mensagens para servidores Discord → TELEGRAM - Envio de mensagens via Telegram Bot → GMAIL - Envio de e-mails via Gmail API