Slack Connector
Poveži svoje delovno okolje Slack z Brevo prek Tajo za marketinška obvestila v realnem času, opozorila ekipe ob événementih strank in avtomatizacijo delovnih tokov, ki jih sprožajo interakcije Slack.
Pregled
| Lastnost | Vrednost |
|---|---|
| Platforma | Slack |
| Kategorija | Integracija po meri |
| Zahtevnost nastavitve | Enostavna |
| Uradna integracija | Da |
| Sinhronizirani podatki | Uporabniki, kanali, sporočila, dogodki |
| Osnovni URL API | https://slack.com/api |
Funkcionalnosti
- Marketinška opozorila – pošlji obvestila v realnem času za événements kampanj, nove naročnike in mejnike prihodkov
- Obvestila o événementih strank – opozori ekipe na visoko vrednostne akcije strank iz Brevo
- Sprožilci delovnih tokov – interakcije Slack (kliki gumbov, oddaje obrazcev) použij za sprožanje avtomatizacij Brevo
- Usmerjanje po kanalu – usmerjaj obvestila v specifične kanale glede na vrsto événementa ali segment strank
- Sinhronizacija uporabnikov – preslikaj uporabnike delovnega okolja Slack v stike Brevo za interno komunikacijo
- Interaktivna sporočila – pošlji bogata sporočila z gumbi in dejanji za ekipne delovne tokove
- Načrtovana sporočila – načrtuj obvestila za dnevne/tedenske marketinške povzetke
- Podpora za niti – grupiraj sorodna obvestila v niti za organizirano komunikacijo
Predpogoji
Preden začneš, se prepričaj, da imaš:
- Delovno okolje Slack z administratorskim dostopom
- Aplikacijo Slack, ustvarjeno na api.slack.com/apps
- Bota žetona z zahtevanimi obsegi
- Brevo račun z dostopom do API
- Tajo račun
Avtentikacija
Bot žeton (priporočeno)
Namesti aplikacijo Slack v delovno okolje in za dostop do API uporabi bot žeton.
- Ustvari aplikacijo na api.slack.com/apps
- Dodaj zahtevane obsege OAuth pod “OAuth & Permissions”
- Namesti aplikacijo v delovno okolje
- Kopiraj 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
Za distribucijo integracije Slack v več delovnih okolij:
# 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}"Zahtevani obsegi bota
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 filesDostop do e-maila uporabnika
Obseg users:read.email je zahtevan za ujemanje uporabnikov Slack s stiki Brevo. Brez njega bo preslikava uporabnikov omejena na prikazana imena.
Konfiguracija
Osnovna nastavitev
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_alertPreslikava polj
Preslikaj podatke o uporabnikih Slack v atribute stikov Brevo:
Privzete preslikave
| Parameter | Type | Description |
|---|---|---|
profile.email required | string | E-mail uporabnika (enolični identifikator za ujemanje z Brevo) |
real_name optional | string | Polno ime, razdeljeno v FIRSTNAME/LASTNAME |
profile.phone optional | string | Preslika se v atribut SMS |
profile.title optional | string | Naziv delovnega mesta |
tz optional | string | Časovni pas uporabnika |
is_admin optional | boolean | Status administratorja delovnega okolja |
team_id optional | string | ID ekipe delovnega okolja |
status_text optional | string | Status po meri uporabnika |
Metode API
Sporočanje
| Metoda | Končna točka | Opis |
|---|---|---|
POST | chat.postMessage | Pošlji sporočilo v kanal |
POST | chat.update | Posodobi obstoječe sporočilo |
POST | chat.delete | Izbriši sporočilo |
POST | chat.scheduleMessage | Načrtuj sporočilo |
POST | chat.postEphemeral | Pošlji kratko sporočilo uporabniku |
Kanali
| Metoda | Končna točka | Opis |
|---|---|---|
GET | conversations.list | Seznam kanalov |
GET | conversations.info | Pridobi informacije o kanalu |
GET | conversations.members | Seznam članov kanala |
GET | conversations.history | Pridobi sporočila kanala |
Uporabniki
| Metoda | Končna točka | Opis |
|---|---|---|
GET | users.list | Seznam uporabnikov delovnega okolja |
GET | users.info | Pridobi informacije o uporabniku |
GET | users.lookupByEmail | Poišči uporabnika po e-mailu |
GET | users.conversations | Seznam kanalov uporabnika |
Interakcije
| Metoda | Končna točka | Opis |
|---|---|---|
POST | views.open | Odpri modalni pogled |
POST | views.update | Posodobi modalni pogled |
POST | reactions.add | Dodaj emoji reakcijo |
Dogodki
Obvestila Brevo-na-Slack
| Dogodek | Sprožilec | Dejanje Slack |
|---|---|---|
new_subscriber | Ustvarjen stik v Brevo | Objavi v #marketing |
campaign_sent | Poslana e-mail kampanja | Objavi povzetek v #marketing |
order_placed | Zaznano naročilo visoke vrednosti | Objavi v #sales s podrobnostmi |
cart_abandoned | Košarica zapuščena 30 min | Objavi v #sales za nadaljnje ukrepanje |
ticket_created | Odprt zahtevek za podporo | Objavi v #support |
unsubscribed | Stik odjavil naročnino | Objavi opozorilo v #marketing |
Sprožilci Slack-na-Brevo
| Événement Slack | Sprožilec | Dejanje Brevo |
|---|---|---|
message_action | Bližnjica sporočila po meri | Dodaj stik na seznam ali sproži avtomatizacijo |
block_actions | Klik gumba v sporočilu | Posodobi atribut stika ali pošlji e-mail |
view_submission | Oddaja modalnega obrazca | Ustvari stik ali sproži delovni tok |
Primeri kode
Inicializacija konektorja
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});Pošiljanje marketinških obvestil
// 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' } ] } ] }});Obravnava interakcij 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();});Omejitve hitrosti
Omejitve hitrosti Slack API uporabljajo stopenjski sistem:
| Stopnja | Omejitev | Pogoste metode |
|---|---|---|
| Stopnja 1 | 1 zahtevek/min | chat.delete, conversations.kick |
| Stopnja 2 | 20 zahtevkov/min | conversations.history, users.info |
| Stopnja 3 | 50 zahtevkov/min | conversations.list, users.list |
| Stopnja 4 | 100 zahtevkov/min | chat.postMessage |
| Posebno | Razlikuje se | chat.postMessage v isti kanal: 1/s |
Dodatne omejitve:
- Web API: Omejitev za sunke s kratkoročnim omejevanjem
- Events API: Ponovni poskusi dostave za 3 poskuse
- Dohodne webhooks: 1 sporočilo/sekundo na URL webhooks
- Block Kit: Največ 50 blokov na sporočilo
Hitrost objavljanja v kanal
Objavljanje v isti kanal je omejeno na približno 1 sporočilo na sekundo. Za izogibanje omejevanju hitrosti paketno objavljaj obvestila ali uporabi niti.
Odpravljanje težav
Pogoste težave
| Težava | Vzrok | Rešitev |
|---|---|---|
not_authed | Neveljaven bot žeton | Znova namesti aplikacijo in kopiraj nov bot žeton |
channel_not_found | Bot ni v kanalu | Povabi bota v ciljni kanal |
missing_scope | Zahtevani obseg ni odobren | Dodaj obseg in znova namesti aplikacijo |
| Événement ni prejet | Naročnina na événement ni nastavljena | Nastavi URL za naročnine na événements |
| Timeout interakcije | Odgovor > 3 sekunde | Takoj odgovori z 200, obdeluj asinhrono |
Način odpravljanja napak
Omogoči podrobno beleženje:
connectors: slack: debug: true log_level: verbose log_events: truePreizkus povezave
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeNajboljše prakse
- Uporabi Block Kit – gradi bogata, interaktivna sporočila z okvirjem Block Kit Slack
- Hitro odgovarjaj – potrdi interakcije v 3 sekundah, obdeluj asinhrono
- Sorodna sporočila v niti – grupiraj sorodna obvestila v niti za zmanjšanje šuma
- Usmerjanje po kanalu – različne vrste événements pošlji ustreznim ekipnim kanalom
- Vključi gumbe za dejanja – dodaj gumbe “View in Brevo” za hiter dostop do podatkov o strankah
- Implementiraj unfurling – prikaži bogate predoglede za povezave Brevo, deljene v Slack
Varnost
- Bot žeton – žeton za dostop z obsegom OAuth in natančnimi dovoljenji
- Podpisovanje zahtevkov – preverjanje podpisa HMAC SHA-256 za dohodne zahtevke
- OAuth 2.0 – industrijski standard za avtorizacijo za distribucijo v več delovnih okolij
- TLS šifriranje – vsa komunikacija API šifrirana prek HTTPS
- Rotacija žetonov – samodejno rotiranje žetonov za izboljšano varnost