Slack-koppling

Anslut din Slack-arbetsyta till Brevo via Tajo för marknadsföringsnotifieringar i realtid, teamvarningar om kundhändelser och arbetsflödesautomation utlöst av Slack-interaktioner.

Översikt

EgenskapVärde
PlattformSlack
KategoriAnpassad integration
InstallationskomplexitetEnkel
Officiell integrationJa
Data som synkasAnvändare, kanaler, meddelanden, händelser
API bas-URLhttps://slack.com/api

Funktioner

  • Marknadsföringsvarningar - Skicka realtidsnotifieringar för kampanjhändelser, nya prenumeranter och intäktsmilstolpar
  • Notifieringar för kundhändelser - Varna team om värdefulla kundåtgärder från Brevo
  • Arbetsflödesutlösare - Använd Slack-interaktioner (knapptryckningar, formulärinlämningar) för att utlösa Brevo-automationer
  • Kanalbaserad dirigering - Dirigera notifieringar till specifika kanaler baserat på händelsetyp eller kundsegment
  • Användarsynkronisering - Mappa användare i Slack-arbetsytan till Brevo-kontakter för intern kommunikation
  • Interaktiva meddelanden - Skicka rika meddelanden med knappar och åtgärder för teamarbetsflöden
  • Schemalagda meddelanden - Schemalägg notifieringar för dagliga/veckovisa marknadsföringssammanfattningar
  • Trådstöd - Gruppera relaterade notifieringar i trådar för organiserad kommunikation

Förutsättningar

Innan du börjar, se till att du har:

  1. En Slack-arbetsyta med adminåtkomst
  2. En Slack-app skapad på api.slack.com/apps
  3. Bot-token med nödvändiga scopes
  4. Ett Brevo-konto med API-åtkomst
  5. Ett Tajo-konto

Autentisering

Bot-token (rekommenderas)

Installera en Slack-app i din arbetsyta och använd bot-token för API-åtkomst.

  1. Skapa app på api.slack.com/apps
  2. Lägg till nödvändiga OAuth-scopes under “OAuth & Permissions”
  3. Installera app i arbetsytan
  4. Kopiera 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

För att distribuera din Slack-integration till flera arbetsytor:

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}"

Nödvändiga 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

Åtkomst till användares e-post

Scopen users:read.email krävs för att matcha Slack-användare med Brevo-kontakter. Utan den begränsas användarmappning till visningsnamn.

Konfiguration

Grundinställning

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

Fältmappning

Mappa Slack-användardata till Brevo-kontaktattribut:

Standardmappningar

Parameter Type Description
profile.email required
string

Användarens e-post (unik identifierare för Brevo-matchning)

real_name optional
string

Fullständigt namn, uppdelat i FIRSTNAME/LASTNAME

profile.phone optional
string

Mappas till SMS-attributet

profile.title optional
string

Jobbtitel

tz optional
string

Användarens tidszon

is_admin optional
boolean

Status för arbetsytans admin

team_id optional
string

Arbetsytans team-ID

status_text optional
string

Användarens anpassade status

API-metoder

Meddelanden

MetodEndpointBeskrivning
POSTchat.postMessageSkicka ett meddelande till en kanal
POSTchat.updateUppdatera ett befintligt meddelande
POSTchat.deleteRadera ett meddelande
POSTchat.scheduleMessageSchemalägg ett meddelande
POSTchat.postEphemeralSkicka ephemerärt meddelande till användare

Kanaler

MetodEndpointBeskrivning
GETconversations.listLista kanaler
GETconversations.infoHämta kanalinfo
GETconversations.membersLista kanalmedlemmar
GETconversations.historyHämta kanalmeddelanden

Användare

MetodEndpointBeskrivning
GETusers.listLista användare i arbetsytan
GETusers.infoHämta användarinfo
GETusers.lookupByEmailHitta användare via e-post
GETusers.conversationsLista användarens kanaler

Interaktioner

MetodEndpointBeskrivning
POSTviews.openÖppna en modalvy
POSTviews.updateUppdatera en modalvy
POSTreactions.addLägg till emoji-reaktion

Händelser

Brevo-till-Slack-notifieringar

HändelseUtlösareSlack-åtgärd
new_subscriberKontakt skapad i BrevoPosta till #marketing
campaign_sentE-postkampanj skickadPosta sammanfattning till #marketing
order_placedVärdefull beställning upptäcktPosta till #sales med detaljer
cart_abandonedKundvagn övergiven i 30 minPosta till #sales för uppföljning
ticket_createdSupportärende öppnatPosta till #support
unsubscribedKontakt avprenumereradePosta varning till #marketing

Slack-till-Brevo-utlösare

Slack-händelseUtlösareBrevo-åtgärd
message_actionAnpassad meddelandegenvägLägg till kontakt i lista eller utlös automation
block_actionsKnapptryckning i meddelandeUppdatera kontaktattribut eller skicka e-post
view_submissionModalformulär inskickatSkapa kontakt eller utlös arbetsflöde

Kodexempel

Initiera kopplingen

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

Skicka marknadsföringsnotifieringar

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

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

Hastighetsbegränsningar

Slacks API-hastighetsbegränsningar använder ett nivåbaserat system:

NivåGränsVanliga metoder
Tier 11 förfrågan/minutchat.delete, conversations.kick
Tier 220 förfrågningar/minutconversations.history, users.info
Tier 350 förfrågningar/minutconversations.list, users.list
Tier 4100 förfrågningar/minutchat.postMessage
SpecialfallVarierarchat.postMessage till samma kanal: 1/sek

Ytterligare gränser:

  • Web API: Burst-gräns med kortvarig strypning
  • Events API: Leveransåterförsök i 3 försök
  • Inkommande webhooks: 1 meddelande/sekund per webhook-URL
  • Block Kit: Maximalt 50 block per meddelande

Postningshastighet för kanal

Att posta till samma kanal är begränsat till ungefär 1 meddelande per sekund. Batcha notifieringar eller använd trådar för att undvika hastighetsbegränsning.

Felsökning

Vanliga problem

ProblemOrsakLösning
not_authedOgiltig bot-tokenInstallera om appen och kopiera ny bot-token
channel_not_foundBot inte i kanalBjud in boten till målkanalen
missing_scopeNödvändigt scope ej beviljatLägg till scope och installera om appen
Händelse ej mottagenHändelseprenumeration ej sattKonfigurera Event Subscriptions URL
InteraktionstimeoutSvar > 3 sekunderSvara med 200 omedelbart, behandla asynkront

Felsökningsläge

Aktivera utförlig loggning:

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

Testa anslutning

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

Bästa praxis

  1. Använd Block Kit - Bygg rika, interaktiva meddelanden med Slacks Block Kit-ramverk
  2. Svara snabbt - Bekräfta interaktioner inom 3 sekunder, behandla asynkront
  3. Trådkoppla relaterade meddelanden - Gruppera relaterade notifieringar i trådar för att minska brus
  4. Dirigera per kanal - Skicka olika händelsetyper till lämpliga teamkanaler
  5. Inkludera åtgärdsknappar - Lägg till “View in Brevo”-knappar för snabb åtkomst till kunddata
  6. Implementera unfurling - Visa rika förhandsgranskningar för Brevo-länkar delade i Slack

Säkerhet

  • Bot-token - OAuth-scopad åtkomsttoken med granulära behörigheter
  • Förfrågningssignering - HMAC SHA-256-signaturverifiering för inkommande förfrågningar
  • OAuth 2.0 - Industristandard för auktorisering för distribution till flera arbetsytor
  • TLS-kryptering - All API-kommunikation krypterad via HTTPS
  • Tokenrotation - Automatisk tokenrotation för förbättrad säkerhet

Relaterade resurser

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hej! Fråga mig om dokumentationen.