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
| Egenskab | Værdi |
|---|---|
| Platform | Slack |
| Kategori | Brugerdefineret integration |
| Opsætningskompleksitet | Let |
| Officiel integration | Ja |
| Synkroniserede data | Brugere, kanaler, beskeder, hændelser |
| API-base-URL | https://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:
- Et Slack-workspace med administratoradgang
- En Slack-app oprettet på api.slack.com/apps
- Bot-token med de påkrævede scopes
- En Brevo-konto med API-adgang
- En Tajo-konto
Autentifikation
Bot-token (anbefalet)
Installér en Slack-app i dit workspace, og brug bot-tokenet til API-adgang.
- Opret en app på api.slack.com/apps
- Tilføj de påkrævede OAuth-scopes under “OAuth & Permissions”
- Installér appen i workspacet
- Kopiér Bot User OAuth Token (
xoxb-...)
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:
# Authorization URLhttps://slack.com/oauth/v2/authorize? client_id={client_id}& scope=chat:write,channels:read,users:read& redirect_uri={redirect_uri}
# Token exchangecurl -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 messageschannels:read # List channelschannels:history # Read channel messagesusers:read # List workspace usersusers:read.email # Read user email addressesreactions:write # Add reactions to messagesfiles:write # Upload filesAdgang 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_alertFeltmapping
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
| Metode | Endpoint | Beskrivelse |
|---|---|---|
POST | chat.postMessage | Send en besked til en kanal |
POST | chat.update | Opdatér en eksisterende besked |
POST | chat.delete | Slet en besked |
POST | chat.scheduleMessage | Planlæg en besked |
POST | chat.postEphemeral | Send efemerisk besked til bruger |
Kanaler
| Metode | Endpoint | Beskrivelse |
|---|---|---|
GET | conversations.list | Vis kanaler |
GET | conversations.info | Hent kanalinfo |
GET | conversations.members | Vis kanalmedlemmer |
GET | conversations.history | Hent kanalbeskeder |
Brugere
| Metode | Endpoint | Beskrivelse |
|---|---|---|
GET | users.list | Vis workspace-brugere |
GET | users.info | Hent brugerinfo |
GET | users.lookupByEmail | Find bruger via e-mail |
GET | users.conversations | Vis brugerkanaler |
Interaktioner
| Metode | Endpoint | Beskrivelse |
|---|---|---|
POST | views.open | Åbn en modal-visning |
POST | views.update | Opdatér en modal-visning |
POST | reactions.add | Tilføj emoji-reaktion |
Hændelser
Brevo-til-Slack-notifikationer
| Hændelse | Trigger | Slack-handling |
|---|---|---|
new_subscriber | Kontakt oprettet i Brevo | Post til #marketing |
campaign_sent | E-mailkampagne sendt | Post resumé til #marketing |
order_placed | Ordre af høj værdi registreret | Post til #sales med detaljer |
cart_abandoned | Kurv efterladt i 30 min. | Post til #sales til opfølgning |
ticket_created | Supportsag oprettet | Post til #support |
unsubscribed | Kontakt afmeldt | Post advarsel til #marketing |
Slack-til-Brevo-triggere
| Slack-hændelse | Trigger | Brevo-handling |
|---|---|---|
message_action | Tilpasset beskedgenvej | Tilføj kontakt til liste eller udløs automatisering |
block_actions | Knapklik i besked | Opdatér kontaktattribut eller send e-mail |
view_submission | Modal-formular indsendt | Opret 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 Slackawait 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 placedawait tajo.slack.notify({ channel: 'sales', event: 'order_placed', data: { 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: '*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:
| Niveau | Grænse | Almindelige metoder |
|---|---|---|
| Tier 1 | 1 forespørgsel/minut | chat.delete, conversations.kick |
| Tier 2 | 20 forespørgsler/minut | conversations.history, users.info |
| Tier 3 | 50 forespørgsler/minut | conversations.list, users.list |
| Tier 4 | 100 forespørgsler/minut | chat.postMessage |
| Special | Varierer | chat.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 | Årsag | Løsning |
|---|---|---|
not_authed | Ugyldigt bot-token | Geninstallér appen og kopiér nyt bot-token |
channel_not_found | Bot ikke i kanal | Invitér botten til målkanalen |
missing_scope | Påkrævet scope ikke tildelt | Tilføj scope og geninstallér appen |
| Hændelse ikke modtaget | Hændelsesabonnement ikke sat | Konfigurér Event Subscriptions-URL |
| Interaktionstimeout | Svar >3 sekunder | Svar med 200 med det samme, behandl asynkront |
Fejlfindingstilstand
Aktivér udførlig logning:
connectors: slack: debug: true log_level: verbose log_events: trueTest forbindelse
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeBest practices
- Brug Block Kit - Byg rige, interaktive beskeder med Slacks Block Kit-framework
- Svar hurtigt - Anerkend interaktioner inden for 3 sekunder, behandl asynkront
- Tråd relaterede beskeder - Gruppér relaterede notifikationer i tråde for at reducere støj
- Rut efter kanal - Send forskellige hændelsestyper til relevante teamkanaler
- Inkludér handlingsknapper - Tilføj “Vis i Brevo”-knapper for hurtig adgang til kundedata
- 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