Conector Slack

Conecte seu workspace Slack ao Brevo via Tajo para notificações de marketing em tempo real, alertas para a equipe sobre eventos de clientes e automação de workflow disparada por interações no Slack.

Visão geral

PropriedadeValor
PlataformaSlack
CategoriaIntegração Personalizada
Complexidade de configuraçãoFácil
Integração oficialSim
Dados sincronizadosUsuários, Canais, Mensagens, Eventos
URL base da APIhttps://slack.com/api

Recursos

  • Alertas de marketing - Envie notificações em tempo real para eventos de campanha, novos inscritos e marcos de receita
  • Notificações de eventos de clientes - Alerte as equipes sobre ações de clientes de alto valor a partir do Brevo
  • Gatilhos de workflow - Use interações do Slack (cliques em botões, envios de formulário) para disparar automações do Brevo
  • Roteamento baseado em canal - Roteie notificações para canais específicos com base no tipo de evento ou segmento de cliente
  • Sincronização de usuários - Mapeie usuários do workspace Slack para contatos do Brevo em comunicações internas
  • Mensagens interativas - Envie mensagens ricas com botões e ações para workflows de equipe
  • Mensagens agendadas - Agende notificações para resumos diários/semanais de marketing
  • Suporte a threads - Agrupe notificações relacionadas em threads para comunicação organizada

Pré-requisitos

Antes de começar, certifique-se de ter:

  1. Um workspace Slack com acesso de admin
  2. Um app Slack criado em api.slack.com/apps
  3. Bot token com os escopos necessários
  4. Uma conta Brevo com acesso à API
  5. Uma conta Tajo

Autenticação

Bot Token (Recomendado)

Instale um app Slack no seu workspace e use o bot token para acesso à API.

  1. Crie o app em api.slack.com/apps
  2. Adicione os escopos OAuth necessários em “OAuth & Permissions”
  3. Instale o app no workspace
  4. Copie o Bot User OAuth Token (xoxb-...)
Terminal window
curl -X POST "https://slack.com/api/chat.postMessage" \
-H "Authorization: Bearer xoxb-YOUR-BOT-TOKEN" \
-H "Content-Type: application/json" \
-d '{"channel": "C01234567", "text": "Hello from Tajo!"}'

OAuth 2.0

Para distribuir sua integração Slack para múltiplos workspaces:

Terminal window
# Authorization URL
https://slack.com/oauth/v2/authorize?
client_id={client_id}&
scope=chat:write,channels:read,users:read&
redirect_uri={redirect_uri}
# Token exchange
curl -X POST "https://slack.com/api/oauth.v2.access" \
-d "client_id={client_id}" \
-d "client_secret={client_secret}" \
-d "code={auth_code}"

Escopos de bot necessários

chat:write # Send messages
channels:read # List channels
channels:history # Read channel messages
users:read # List workspace users
users:read.email # Read user email addresses
reactions:write # Add reactions to messages
files:write # Upload files

Acesso a e-mail do usuário

O escopo users:read.email é necessário para associar usuários do Slack a contatos do Brevo. Sem ele, o mapeamento de usuários ficará limitado a nomes de exibição.

Configuração

Configuração básica

connectors:
slack:
enabled: true
bot_token: "${SLACK_BOT_TOKEN}"
signing_secret: "${SLACK_SIGNING_SECRET}"
# Notification channels
channels:
marketing: "C01234567"
sales: "C01234568"
support: "C01234569"
alerts: "C01234570"
# Event routing
notifications:
new_subscriber:
channel: marketing
template: subscriber_alert
high_value_order:
channel: sales
template: order_alert
support_ticket:
channel: support
template: ticket_alert

Mapeamento de campos

Mapeie dados de usuário do Slack para atributos de contato do Brevo:

Mapeamentos padrão

Parameter Type Description
profile.email required
string

E-mail do usuário (identificador único para correspondência no Brevo)

real_name optional
string

Nome completo, dividido em FIRSTNAME/LASTNAME

profile.phone optional
string

Mapeia para o atributo SMS

profile.title optional
string

Cargo profissional

tz optional
string

Fuso horário do usuário

is_admin optional
boolean

Status de admin do workspace

team_id optional
string

ID da equipe do workspace

status_text optional
string

Status personalizado do usuário

Métodos da API

Mensagens

MétodoEndpointDescrição
POSTchat.postMessageEnviar uma mensagem para um canal
POSTchat.updateAtualizar uma mensagem existente
POSTchat.deleteExcluir uma mensagem
POSTchat.scheduleMessageAgendar uma mensagem
POSTchat.postEphemeralEnviar mensagem efêmera ao usuário

Canais

MétodoEndpointDescrição
GETconversations.listListar canais
GETconversations.infoObter informações do canal
GETconversations.membersListar membros do canal
GETconversations.historyObter mensagens do canal

Usuários

MétodoEndpointDescrição
GETusers.listListar usuários do workspace
GETusers.infoObter informações do usuário
GETusers.lookupByEmailBuscar usuário por e-mail
GETusers.conversationsListar canais do usuário

Interações

MétodoEndpointDescrição
POSTviews.openAbrir uma view modal
POSTviews.updateAtualizar uma view modal
POSTreactions.addAdicionar reação emoji

Eventos

Notificações Brevo-para-Slack

EventoGatilhoAção no Slack
new_subscriberContato criado no BrevoPublicar em #marketing
campaign_sentCampanha de e-mail enviadaPublicar resumo em #marketing
order_placedPedido de alto valor detectadoPublicar em #sales com detalhes
cart_abandonedCarrinho abandonado por 30minPublicar em #sales para follow-up
ticket_createdTicket de suporte abertoPublicar em #support
unsubscribedContato cancelou inscriçãoPublicar alerta em #marketing

Gatilhos Slack-para-Brevo

Evento do SlackGatilhoAção no Brevo
message_actionAtalho de mensagem personalizadoAdicionar contato à lista ou disparar automação
block_actionsClique em botão na mensagemAtualizar atributo do contato ou enviar e-mail
view_submissionFormulário modal enviadoCriar contato ou disparar workflow

Exemplos de código

Inicializar o conector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Slack
await tajo.connectors.connect('slack', {
botToken: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET
});

Enviar notificações de marketing

// Send a notification when a high-value order is placed
await tajo.slack.notify({
channel: 'sales',
event: 'order_placed',
data: {
customerEmail: '[email protected]',
orderValue: '$1,250.00',
products: ['Premium Widget', 'Pro Service'],
isFirstOrder: true
},
template: {
blocks: [
{
type: 'header',
text: { type: 'plain_text', text: 'New High-Value Order' }
},
{
type: 'section',
fields: [
{ type: 'mrkdwn', text: '*Customer:*\n[email protected]' },
{ type: 'mrkdwn', text: '*Amount:*\n$1,250.00' }
]
},
{
type: 'actions',
elements: [
{
type: 'button',
text: { type: 'plain_text', text: 'View in Brevo' },
url: 'https://app.brevo.com/contacts'
}
]
}
]
}
});

Tratar interações do Slack

import crypto from 'crypto';
app.post('/slack/interactions', async (req, res) => {
// Verify Slack request signature
const timestamp = req.headers['x-slack-request-timestamp'];
const signature = req.headers['x-slack-signature'];
const sigBasestring = `v0:${timestamp}:${req.rawBody}`;
const mySignature = 'v0=' + crypto
.createHmac('sha256', process.env.SLACK_SIGNING_SECRET)
.update(sigBasestring)
.digest('hex');
if (signature !== mySignature) {
return res.status(401).send('Unauthorized');
}
const payload = JSON.parse(req.body.payload);
// Handle button actions
if (payload.type === 'block_actions') {
await tajo.connectors.handleWebhook('slack', {
type: 'interaction',
action: payload.actions[0].action_id,
userId: payload.user.id,
payload
});
}
res.status(200).send();
});

Limites de taxa

Os limites de taxa da API Slack usam um sistema em camadas:

CamadaLimiteMétodos comuns
Tier 11 requisição/minutochat.delete, conversations.kick
Tier 220 requisições/minutoconversations.history, users.info
Tier 350 requisições/minutoconversations.list, users.list
Tier 4100 requisições/minutochat.postMessage
EspecialVariachat.postMessage para o mesmo canal: 1/seg

Limites adicionais:

  • Web API: Limite de burst com throttle de curto prazo
  • Events API: Tentativas de entrega por 3 tentativas
  • Incoming Webhooks: 1 mensagem/segundo por URL de webhook
  • Block Kit: Máximo 50 blocos por mensagem

Taxa de publicação em canal

A publicação no mesmo canal é limitada a aproximadamente 1 mensagem por segundo. Agrupe notificações em lote ou use threads para evitar limitação de taxa.

Solução de problemas

Problemas comuns

ProblemaCausaSolução
not_authedBot token inválidoReinstale o app e copie o novo bot token
channel_not_foundBot não está no canalConvide o bot para o canal alvo
missing_scopeEscopo necessário não concedidoAdicione o escopo e reinstale o app
Evento não recebidoEvent subscription não configuradaConfigure a URL de Event Subscriptions
Timeout de interaçãoResposta >3 segundosResponda com 200 imediatamente, processe de forma assíncrona

Modo de depuração

Habilite logging detalhado:

connectors:
slack:
debug: true
log_level: verbose
log_events: true

Testar conexão

Terminal window
tajo connectors test slack
# ✓ Bot token valid
# ✓ Workspace accessible
# ✓ Channels readable
# ✓ Message posting enabled
# ✓ Event subscriptions active

Melhores práticas

  1. Use Block Kit - Construa mensagens ricas e interativas com o framework Block Kit do Slack
  2. Responda rapidamente - Confirme as interações em 3 segundos, processe de forma assíncrona
  3. Agrupe mensagens relacionadas em thread - Agrupe notificações relacionadas em threads para reduzir ruído
  4. Roteie por canal - Envie diferentes tipos de eventos para canais apropriados da equipe
  5. Inclua botões de ação - Adicione botões “Ver no Brevo” para acesso rápido aos dados do cliente
  6. Implemente unfurling - Exiba previews ricos para links do Brevo compartilhados no Slack

Segurança

  • Bot Token - Token de acesso com escopo OAuth e permissões granulares
  • Assinatura de requisições - Verificação de assinatura HMAC SHA-256 para requisições recebidas
  • OAuth 2.0 - Autorização padrão da indústria para distribuição em múltiplos workspaces
  • Criptografia TLS - Toda a comunicação com a API é criptografada via HTTPS
  • Rotação de tokens - Rotação automática de tokens para segurança aprimorada

Recursos relacionados

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
Assistente AI

Olá! Pergunte-me qualquer coisa sobre a documentação.