Slack konektor
Prepoj svoj Slack workspace s Brevo cez Tajo pre notifikácie marketingu v reálnom čase, tímové upozornenia na zákaznícke udalosti a automatizáciu workflowov spúšťanú interakciami v Slack.
Prehľad
| Vlastnosť | Hodnota |
|---|---|
| Platforma | Slack |
| Kategória | Vlastná integrácia |
| Zložitosť nastavenia | Ľahké |
| Oficiálna integrácia | Áno |
| Synchronizované dáta | Používatelia, Kanály, Správy, Udalosti |
| API Base URL | https://slack.com/api |
Funkcie
- Marketingové upozornenia - Posielajaj notifikácie v reálnom čase pre udalosti kampaní, nových odberateľov a príjmové míľniky
- Notifikácie udalostí zákazníkov - Upozorni tímy na akcie zákazníkov s vysokou hodnotou z Brevo
- Spúšťače workflowov - Použi interakcie Slack (kliknutia na tlačidlá, odoslania formulárov) na spúšťanie automatizácií Brevo
- Smerovanie podľa kanálov - Smeruj notifikácie do konkrétnych kanálov podľa typu udalosti alebo segmentu zákazníka
- Synchronizácia používateľov - Namapuj používateľov workspace Slack na kontakty Brevo pre internú komunikáciu
- Interaktívne správy - Posielajaj bohaté správy s tlačidlami a akciami pre tímové workflowy
- Naplánované správy - Plánuj notifikácie pre denné/týždenné marketingové súhrny
- Podpora vlákien - Zoskupuj súvisiace notifikácie vo vláknach pre organizovanú komunikáciu
Predpoklady
Predtým, než začneš, uisti sa, že máš:
- Slack workspace s admin prístupom
- Slack aplikáciu vytvorenú na api.slack.com/apps
- Bot token s požadovanými scopes
- Brevo účet s API prístupom
- Tajo účet
Autentifikácia
Bot Token (odporúčané)
Nainštaluj Slack aplikáciu do svojho workspace a použi bot token pre API prístup.
- Vytvor aplikáciu na api.slack.com/apps
- Pridaj požadované OAuth scopes pod “OAuth & Permissions”
- Nainštaluj aplikáciu do workspace
- Skopíruj 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
Pre distribúciu tvojej Slack integrácie do viacerých 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}"Požadované 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 filesPrístup k e-mailu používateľa
Scope users:read.email je potrebný na zhodu používateľov Slack s kontaktmi Brevo. Bez neho bude mapovanie používateľov obmedzené na zobrazované mená.
Konfigurácia
Základné nastavenie
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_alertMapovanie polí
Namapuj dáta používateľov Slack na atribúty kontaktov v Brevo:
Predvolené mapovania
| Parameter | Type | Description |
|---|---|---|
profile.email required | string | E-mail používateľa (unikátny identifikátor pre zhodu s Brevo) |
real_name optional | string | Celé meno, rozdelené na FIRSTNAME/LASTNAME |
profile.phone optional | string | Mapuje sa na atribút SMS |
profile.title optional | string | Pracovná pozícia |
tz optional | string | Časové pásmo používateľa |
is_admin optional | boolean | Stav admin workspace |
team_id optional | string | ID tímu workspace |
status_text optional | string | Vlastný status používateľa |
API metódy
Správy
| Metóda | Endpoint | Popis |
|---|---|---|
POST | chat.postMessage | Odoslanie správy do kanálu |
POST | chat.update | Aktualizácia existujúcej správy |
POST | chat.delete | Odstránenie správy |
POST | chat.scheduleMessage | Naplánovaná správa |
POST | chat.postEphemeral | Odoslanie ephemeral správy používateľovi |
Kanály
| Metóda | Endpoint | Popis |
|---|---|---|
GET | conversations.list | Zoznam kanálov |
GET | conversations.info | Informácie o kanáli |
GET | conversations.members | Zoznam členov kanálu |
GET | conversations.history | Správy kanálu |
Používatelia
| Metóda | Endpoint | Popis |
|---|---|---|
GET | users.list | Zoznam používateľov workspace |
GET | users.info | Informácie o používateľovi |
GET | users.lookupByEmail | Vyhľadanie používateľa podľa e-mailu |
GET | users.conversations | Zoznam kanálov používateľa |
Interakcie
| Metóda | Endpoint | Popis |
|---|---|---|
POST | views.open | Otvorenie modálneho zobrazenia |
POST | views.update | Aktualizácia modálneho zobrazenia |
POST | reactions.add | Pridanie emoji reakcie |
Udalosti
Notifikácie Brevo → Slack
| Udalosť | Trigger | Akcia v Slack |
|---|---|---|
new_subscriber | Kontakt vytvorený v Brevo | Odoslanie do #marketing |
campaign_sent | E-mailová kampaň odoslaná | Odoslanie súhrnu do #marketing |
order_placed | Objednávka s vysokou hodnotou | Odoslanie do #sales s detailmi |
cart_abandoned | Košík opustený 30 min | Odoslanie do #sales pre follow-up |
ticket_created | Otvorený support ticket | Odoslanie do #support |
unsubscribed | Kontakt sa odhlásil | Odoslanie upozornenia do #marketing |
Spúšťače Slack → Brevo
| Udalosť Slack | Trigger | Akcia v Brevo |
|---|---|---|
message_action | Vlastná skratka správy | Pridanie kontaktu do zoznamu alebo spustenie automatizácie |
block_actions | Kliknutie na tlačidlo v správe | Aktualizácia atribútu kontaktu alebo odoslanie e-mailu |
view_submission | Odoslaný modálny formulár | Vytvorenie kontaktu alebo spustenie workflowu |
Ukážky kódu
Inicializácia konektora
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});Odosielanie marketingových notifikácií
// 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' } ] } ] }});Spracovanie interakcií 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();});Obmedzenia rýchlosti
Slack API rate limity používajú vrstvený systém:
| Tier | Limit | Bežné metódy |
|---|---|---|
| Tier 1 | 1 požiadavka/minútu | chat.delete, conversations.kick |
| Tier 2 | 20 požiadaviek/minútu | conversations.history, users.info |
| Tier 3 | 50 požiadaviek/minútu | conversations.list, users.list |
| Tier 4 | 100 požiadaviek/minútu | chat.postMessage |
| Špeciálne | Rôzne | chat.postMessage do toho istého kanálu: 1/sek |
Ďalšie limity:
- Web API: Burst limit s krátkodobým throttlovanjem
- Events API: Opakované pokusy doručenia 3-krát
- Incoming Webhooks: 1 správa/sekundu na URL webhooku
- Block Kit: Maximum 50 blokov na správu
Frekvencia príspevkov do kanálu
Príspevky do toho istého kanálu sú obmedzené na približne 1 správu za sekundu. Dávkuj notifikácie alebo použi vlákna na vyhnutie sa rate limitovaniu.
Riešenie problémov
Bežné problémy
| Problém | Príčina | Riešenie |
|---|---|---|
not_authed | Neplatný bot token | Preinštaluj aplikáciu a skopíruj nový bot token |
channel_not_found | Bot nie je v kanáli | Pozvi bota do cieľového kanálu |
missing_scope | Požadovaný scope nie je udelený | Pridaj scope a preinštaluj aplikáciu |
| Udalosť nie je prijatá | Event subscription nie je nastavená | Nakonfiguruj URL Event Subscriptions |
| Timeout interakcie | Odpoveď > 3 sekundy | Okamžite odpovedz 200, spracuj asynchrónne |
Debug režim
Zapni verbose logovanie:
connectors: slack: debug: true log_level: verbose log_events: trueTest pripojenia
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeOdporúčané postupy
- Použi Block Kit - Vytváraj bohaté, interaktívne správy s frameworkom Block Kit od Slack
- Odpovedaj rýchlo - Potvrdzuj interakcie do 3 sekúnd, spracovávaj asynchrónne
- Zoskupuj súvisiace správy vo vláknach - Zoskupuj súvisiace notifikácie vo vláknach na zníženie šumu
- Smeruj podľa kanálu - Posielajaj rôzne typy udalostí do príslušných tímových kanálov
- Zahrň akčné tlačidlá - Pridaj tlačidlá “View in Brevo” pre rýchly prístup k zákazníckym dátam
- Implementuj unfurling - Zobrazuj bohaté náhľady pre Brevo odkazy zdieľané v Slack
Bezpečnosť
- Bot Token - Prístupový token s obmedzeným rozsahom OAuth a jemnými oprávneniami
- Podpisovanie požiadaviek - Overenie podpisu HMAC SHA-256 pre prichádzajúce požiadavky
- OAuth 2.0 - Priemyselne štandardná autorizácia pre distribúciu do viacerých workspaces
- TLS šifrovanie - Všetka API komunikácia šifrovaná cez HTTPS
- Rotácia tokenov - Automatická rotácia tokenov pre zvýšenú bezpečnosť