Slack Connector

Forbind dit Slack-workspace til Brevo via Tajo for realtids-marketingnotifikationer, teamadvarsler om kundehændelser og workflow-automatisering udløst af Slack-interaktioner.

Oversigt

EgenskabVærdi
PlatformSlack
KategoriBrugerdefineret integration
OpsætningskompleksitetLet
Officiel integrationJa
Synkroniserede dataBrugere, kanaler, beskeder, hændelser
API-base-URLhttps://slack.com/api

Funktioner

  • Marketingadvarsler - Send realtidsnotifikationer om kampagnehændelser, nye abonnenter og omsætningsmilepæle
  • Notifikationer om kundehændelser - Advar teams om kundehandlinger af høj værdi fra Brevo
  • Workflow-triggere - Brug Slack-interaktioner (knapklik, formularindsendelser) til at udløse Brevo-automatiseringer
  • Kanalbaseret rutning - Rut notifikationer til specifikke kanaler baseret på hændelsestype eller kundesegment
  • Brugersynkronisering - Knyt Slack-workspace-brugere til Brevo-kontakter for intern kommunikation
  • Interaktive beskeder - Send rige beskeder med knapper og handlinger til team-workflows
  • Planlagte beskeder - Planlæg notifikationer til daglige/ugentlige marketingopsummeringer
  • Tråd-understøttelse - Gruppér relaterede notifikationer i tråde for organiseret kommunikation

Forudsætninger

Før du begynder, skal du sikre dig, at du har:

  1. Et Slack-workspace med administratoradgang
  2. En Slack-app oprettet på api.slack.com/apps
  3. Bot-token med de påkrævede scopes
  4. En Brevo-konto med API-adgang
  5. En Tajo-konto

Autentifikation

Bot-token (anbefalet)

Installér en Slack-app i dit workspace, og brug bot-tokenet til API-adgang.

  1. Opret en app på api.slack.com/apps
  2. Tilføj de påkrævede OAuth-scopes under “OAuth & Permissions”
  3. Installér appen i workspacet
  4. Kopiér 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

Til distribution af din Slack-integration til flere 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}"

Påkrævede bot-scopes

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

Adgang til bruger-e-mail

Scope’et users:read.email er påkrævet for at matche Slack-brugere med Brevo-kontakter. Uden det vil brugermapping være begrænset til visningsnavne.

Konfiguration

Grundlæggende opsætning

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

Feltmapping

Knyt Slack-brugerdata til Brevo-kontaktattributter:

Standardmappings

Parameter Type Description
profile.email required
string

Bruger-e-mail (unik identifikator til Brevo-matching)

real_name optional
string

Fuldt navn, opdelt i FIRSTNAME/LASTNAME

profile.phone optional
string

Mapper til SMS-attribut

profile.title optional
string

Jobtitel

tz optional
string

Brugerens tidszone

is_admin optional
boolean

Workspace-administratorstatus

team_id optional
string

Workspace-team-id

status_text optional
string

Brugerens brugerdefinerede status

API-metoder

Beskeder

MetodeEndpointBeskrivelse
POSTchat.postMessageSend en besked til en kanal
POSTchat.updateOpdatér en eksisterende besked
POSTchat.deleteSlet en besked
POSTchat.scheduleMessagePlanlæg en besked
POSTchat.postEphemeralSend efemerisk besked til bruger

Kanaler

MetodeEndpointBeskrivelse
GETconversations.listVis kanaler
GETconversations.infoHent kanalinfo
GETconversations.membersVis kanalmedlemmer
GETconversations.historyHent kanalbeskeder

Brugere

MetodeEndpointBeskrivelse
GETusers.listVis workspace-brugere
GETusers.infoHent brugerinfo
GETusers.lookupByEmailFind bruger via e-mail
GETusers.conversationsVis brugerkanaler

Interaktioner

MetodeEndpointBeskrivelse
POSTviews.openÅbn en modal-visning
POSTviews.updateOpdatér en modal-visning
POSTreactions.addTilføj emoji-reaktion

Hændelser

Brevo-til-Slack-notifikationer

HændelseTriggerSlack-handling
new_subscriberKontakt oprettet i BrevoPost til #marketing
campaign_sentE-mailkampagne sendtPost resumé til #marketing
order_placedOrdre af høj værdi registreretPost til #sales med detaljer
cart_abandonedKurv efterladt i 30 min.Post til #sales til opfølgning
ticket_createdSupportsag oprettetPost til #support
unsubscribedKontakt afmeldtPost advarsel til #marketing

Slack-til-Brevo-triggere

Slack-hændelseTriggerBrevo-handling
message_actionTilpasset beskedgenvejTilføj kontakt til liste eller udløs automatisering
block_actionsKnapklik i beskedOpdatér kontaktattribut eller send e-mail
view_submissionModal-formular indsendtOpret kontakt eller udløs workflow

Kodeeksempler

Initialisér konnektor

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
});

Send marketingnotifikationer

// 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'
}
]
}
]
}
});

Håndtér Slack-interaktioner

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();
});

Ratebegrænsninger

Slack API-ratebegrænsninger bruger et niveauinddelt system:

NiveauGrænseAlmindelige metoder
Tier 11 forespørgsel/minutchat.delete, conversations.kick
Tier 220 forespørgsler/minutconversations.history, users.info
Tier 350 forespørgsler/minutconversations.list, users.list
Tier 4100 forespørgsler/minutchat.postMessage
SpecialVariererchat.postMessage til samme kanal: 1/sek

Yderligere grænser:

  • Web API: Burst-grænse med kortsigtet throttling
  • Events API: Leveringsforsøg genforsøges 3 gange
  • Incoming Webhooks: 1 besked/sekund per webhook-URL
  • Block Kit: Maksimalt 50 blokke per besked

Rate for kanalposter

Posts til samme kanal er begrænset til ca. 1 besked per sekund. Batch notifikationer eller brug tråde for at undgå ratebegrænsning.

Fejlfinding

Almindelige problemer

ProblemÅrsagLøsning
not_authedUgyldigt bot-tokenGeninstallér appen og kopiér nyt bot-token
channel_not_foundBot ikke i kanalInvitér botten til målkanalen
missing_scopePåkrævet scope ikke tildeltTilføj scope og geninstallér appen
Hændelse ikke modtagetHændelsesabonnement ikke satKonfigurér Event Subscriptions-URL
InteraktionstimeoutSvar >3 sekunderSvar med 200 med det samme, behandl asynkront

Fejlfindingstilstand

Aktivér udførlig logning:

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

Test forbindelse

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

Best practices

  1. Brug Block Kit - Byg rige, interaktive beskeder med Slacks Block Kit-framework
  2. Svar hurtigt - Anerkend interaktioner inden for 3 sekunder, behandl asynkront
  3. Tråd relaterede beskeder - Gruppér relaterede notifikationer i tråde for at reducere støj
  4. Rut efter kanal - Send forskellige hændelsestyper til relevante teamkanaler
  5. Inkludér handlingsknapper - Tilføj “Vis i Brevo”-knapper for hurtig adgang til kundedata
  6. Implementér link-unfurling - Vis rige previews af Brevo-links delt i Slack

Sikkerhed

  • Bot-token - OAuth-scoped adgangstoken med granulære rettigheder
  • Request signing - HMAC SHA-256-signaturverifikation for indgående forespørgsler
  • OAuth 2.0 - Industristandard-autorisation til distribution på tværs af workspaces
  • TLS-kryptering - Al API-kommunikation krypteret via HTTPS
  • Tokenrotation - Automatisk tokenrotation for øget sikkerhed

Relaterede ressourcer

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hej! Spørg mig om dokumentationen.