Slack konektor

Poveži svoj Slack radni prostor sa Brevo putem Tajo za obaveštenja o marketingu u realnom vremenu, timska upozorenja o događajima kupaca i automatizaciju toka pokretanu Slack interakcijama.

Pregled

SvojstvoVrednost
PlatformaSlack
KategorijaPrilagođena integracija
Složenost podešavanjaLako
Zvanična integracijaDa
Sinhronizovani podaciKorisnici, Kanali, Poruke, Događaji
Osnovni URL API-jahttps://slack.com/api

Karakteristike

  • Marketing upozorenja - Slanje obaveštenja u realnom vremenu za događaje kampanje, nove pretplatnike i prihodni milestones
  • Obaveštenja o događajima kupaca - Upozoravanje timova o akcijama kupaca visoke vrednosti iz Brevo
  • Okidači toka - Korišćenje Slack interakcija (klikovi na dugme, slanje formulara) za pokretanje Brevo automatizacija
  • Rutiranje zasnovano na kanalima - Rutiranje obaveštenja na specifične kanale prema tipu događaja ili segmentu kupaca
  • Sinhronizacija korisnika - Mapiranje korisnika Slack radnog prostora na Brevo kontakte za internu komunikaciju
  • Interaktivne poruke - Slanje bogatih poruka sa dugmadima i akcijama za timske tokove
  • Zakazane poruke - Zakazivanje obaveštenja za dnevne/nedeljne marketing sažetke
  • Podrška za teme - Grupisanje srodnih obaveštenja u temama za organizovanu komunikaciju

Preduslovi

Pre nego što započneš, proveri da imaš:

  1. Slack radni prostor sa admin pristupom
  2. Slack aplikaciju kreiranu na api.slack.com/apps
  3. Bot token sa potrebnim skopovima
  4. Brevo nalog sa API pristupom
  5. Tajo nalog

Autentifikacija

Bot Token (preporučeno)

Instaliraj Slack aplikaciju u svom radnom prostoru i koristi bot token za API pristup.

  1. Kreiraj aplikaciju na api.slack.com/apps
  2. Dodaj potrebne OAuth skopove pod “OAuth & Permissions”
  3. Instaliraj aplikaciju u radni prostor
  4. Kopiraj 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

Za distribuciju Slack integracije na više radnih prostora:

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

Potrebni bot skopovi

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

Pristup email-u korisnika

Skop users:read.email je potreban za podudaranje Slack korisnika sa Brevo kontaktima. Bez njega, mapiranje korisnika biće ograničeno na prikazana imena.

Konfiguracija

Osnovno podešavanje

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

Mapiranje polja

Mapiranje Slack korisničkih podataka na Brevo atribute kontakta:

Default Mappings

Parameter Type Description
profile.email required
string

Email korisnika (jedinstveni identifikator za podudaranje Brevo)

real_name optional
string

Puno ime, podeljeno na FIRSTNAME/LASTNAME

profile.phone optional
string

Mapira se na SMS atribut

profile.title optional
string

Naziv posla

tz optional
string

Vremenska zona korisnika

is_admin optional
boolean

Status admin korisnika radnog prostora

team_id optional
string

ID tima radnog prostora

status_text optional
string

Prilagođeni status korisnika

API metode

Poruke

MetodaEndpointOpis
POSTchat.postMessageSlanje poruke u kanal
POSTchat.updateAžuriranje postojeće poruke
POSTchat.deleteBrisanje poruke
POSTchat.scheduleMessageZakazivanje poruke
POSTchat.postEphemeralSlanje efemerne poruke korisniku

Kanali

MetodaEndpointOpis
GETconversations.listListanje kanala
GETconversations.infoDohvatanje informacija o kanalu
GETconversations.membersListanje članova kanala
GETconversations.historyDohvatanje poruka kanala

Korisnici

MetodaEndpointOpis
GETusers.listListanje korisnika radnog prostora
GETusers.infoDohvatanje informacija o korisniku
GETusers.lookupByEmailPronalaženje korisnika po emailu
GETusers.conversationsListanje kanala korisnika

Interakcije

MetodaEndpointOpis
POSTviews.openOtvaranje modalnog prikaza
POSTviews.updateAžuriranje modalnog prikaza
POSTreactions.addDodavanje emoji reakcije

Događaji

Obaveštenja Brevo-ka-Slack

DogađajOkidačSlack akcija
new_subscriberKontakt kreiran u BrevoObjavi na #marketing
campaign_sentEmail kampanja poslataObjavi sažetak na #marketing
order_placedDetektovana porudžbina visoke vrednostiObjavi na #sales sa detaljima
cart_abandonedKorpa napuštena 30 minObjavi na #sales za praćenje
ticket_createdTiket podrške otvorenObjavi na #support
unsubscribedKontakt otkazao pretplatuObjavi upozorenje na #marketing

Okidači Slack-ka-Brevo

Slack događajOkidačBrevo akcija
message_actionPrilagođena prečica porukeDodaj kontakt na listu ili pokreni automatizaciju
block_actionsKlik na dugme u poruciAžuriraj atribut kontakta ili pošalji email
view_submissionModalni formular poslatKreiraj kontakt ili pokreni tok

Primeri koda

Inicijalizacija konektora

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

Slanje marketing obaveštenja

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

Obrada Slack interakcija

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

Ograničenja brzine

Slack API ograničenja brzine koriste nivoidni sistem:

NivoLimitUobičajene metode
Nivo 11 zahtev/minutchat.delete, conversations.kick
Nivo 220 zahteva/minutconversations.history, users.info
Nivo 350 zahteva/minutconversations.list, users.list
Nivo 4100 zahteva/minutchat.postMessage
PosebnoZavisichat.postMessage na isti kanal: 1/sek

Dodatna ograničenja:

  • Web API: Burst limit sa kratkoročnim prigušenjem
  • Events API: 3 pokušaja ponovne isporuke
  • Incoming Webhooks: 1 poruka/sekundi po webhook URL-u
  • Block Kit: Maksimalno 50 blokova po poruci

Brzina postavljanja na kanal

Postavljanje na isti kanal je ograničeno na otprilike 1 poruku u sekundi. Grupiši obaveštenja ili koristi teme da izbjegneš ograničavanje brzine.

Rešavanje problema

Česti problemi

ProblemUzrokRešenje
not_authedNevažeći bot tokenPonovo instaliraj aplikaciju i kopiraj novi bot token
channel_not_foundBot nije u kanaluPozovi bot u ciljni kanal
missing_scopePotrebni skop nije dodeljenDodaj skop i ponovo instaliraj aplikaciju
Događaj nije primljenURL pretplate na događaje nije postavljenKonfiguriši URL Event Subscriptions
Timeout interakcijeOdgovor >3 sekundeOdmah odgovori sa 200, obradi asinhrono

Debug režim

Uključi detaljno logovanje:

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

Testiraj vezu

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

Najbolje prakse

  1. Koristi Block Kit - Pravi bogate, interaktivne poruke sa Slack Block Kit okvirom
  2. Odgovaraj brzo - Potvrdi interakcije u roku od 3 sekunde, obradi asinhrono
  3. Grupiši srodne poruke u temama - Grupiši srodna obaveštenja u temama da smanjiš buku
  4. Rutiranje po kanalima - Šalji različite tipove događaja na odgovarajuće timske kanale
  5. Uključi dugmad za akcije - Dodaj dugmad “View in Brevo” za brzi pristup korisničkim podacima
  6. Implementiraj unfurling - Prikaži bogate preglede za Brevo linkove deljene u Slack-u

Bezbednost

  • Bot Token - OAuth-skopovani access token sa granularnim dozvolama
  • Potpisivanje zahteva - HMAC SHA-256 verifikacija potpisa za dolazne zahteve
  • OAuth 2.0 - Standardna autorizacija za distribuciju na više radnih prostora
  • TLS enkripcija - Sva API komunikacija enkriptovana putem HTTPS
  • Rotacija tokena - Automatska rotacija tokena za pojačanu bezbednost

Povezani resursi

Subscribe to updates

developer-docs

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

auto-detect
AI асистент

Здраво! Питајте ме о документацији.