Konektor Slack

Połącz swój workspace Slack z Brevo przez Tajo, aby uzyskać powiadomienia marketingowe w czasie rzeczywistym, alerty zespołowe o zdarzeniach klientów i automatyzację workflow wyzwalaną przez interakcje Slack.

Przegląd

WłaściwośćWartość
PlatformaSlack
KategoriaIntegracja niestandardowa
Poziom konfiguracjiŁatwy
Integracja oficjalnaTak
Synchronizowane daneUżytkownicy, Kanały, Wiadomości, Zdarzenia
Bazowy URL APIhttps://slack.com/api

Funkcje

  • Alerty marketingowe - Wysyłaj powiadomienia w czasie rzeczywistym o zdarzeniach kampanii, nowych subskrybentach i kamieniach milowych przychodów
  • Powiadomienia o zdarzeniach klientów - Alerty dla zespołów o działaniach klientów o wysokiej wartości z Brevo
  • Wyzwalacze workflow - Używaj interakcji Slack (kliknięcia przycisków, przesyłanie formularzy) do wyzwalania automatyzacji Brevo
  • Routing oparty na kanałach - Kieruj powiadomienia do określonych kanałów na podstawie typu zdarzenia lub segmentu klientów
  • Synchronizacja użytkowników - Mapuj użytkowników workspace Slack na kontakty Brevo dla komunikacji wewnętrznej
  • Interaktywne wiadomości - Wysyłaj bogate wiadomości z przyciskami i akcjami dla przepływów zespołu
  • Zaplanowane wiadomości - Planuj powiadomienia dla codziennych/tygodniowych podsumowań marketingowych
  • Obsługa wątków - Grupuj powiązane powiadomienia w wątkach dla zorganizowanej komunikacji

Wymagania wstępne

Zanim zaczniesz, upewnij się, że masz:

  1. Workspace Slack z dostępem administratora
  2. Aplikację Slack utworzoną na api.slack.com/apps
  3. Token bota z wymaganymi zakresami
  4. Konto Brevo z dostępem do API
  5. Konto Tajo

Uwierzytelnianie

Token bota (zalecane)

Zainstaluj aplikację Slack w swoim workspace i używaj tokenu bota dla dostępu do API.

  1. Utwórz aplikację na api.slack.com/apps
  2. Dodaj wymagane zakresy OAuth w „OAuth & Permissions”
  3. Zainstaluj aplikację w workspace
  4. Skopiuj 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

Dla dystrybucji integracji Slack do wielu workspace’ów:

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

Wymagane zakresy bota

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

Dostęp do e-maili użytkowników

Zakres users:read.email jest wymagany do dopasowania użytkowników Slack z kontaktami Brevo. Bez niego mapowanie użytkowników będzie ograniczone do nazw wyświetlanych.

Konfiguracja

Podstawowa konfiguracja

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

Mapowanie pól

Mapuj dane użytkowników Slack na atrybuty kontaktów Brevo:

Domyślne mapowania

Parameter Type Description
profile.email required
string

E-mail użytkownika (unikalny identyfikator do dopasowania z Brevo)

real_name optional
string

Pełne imię i nazwisko, podzielone na FIRSTNAME/LASTNAME

profile.phone optional
string

Mapuje się na atrybut SMS

profile.title optional
string

Stanowisko pracy

tz optional
string

Strefa czasowa użytkownika

is_admin optional
boolean

Status administratora workspace

team_id optional
string

ID zespołu workspace

status_text optional
string

Niestandardowy status użytkownika

Metody API

Wiadomości

MetodaEndpointOpis
POSTchat.postMessageWyślij wiadomość do kanału
POSTchat.updateAktualizuj istniejącą wiadomość
POSTchat.deleteUsuń wiadomość
POSTchat.scheduleMessageZaplanuj wiadomość
POSTchat.postEphemeralWyślij efemeryczną wiadomość do użytkownika

Kanały

MetodaEndpointOpis
GETconversations.listLista kanałów
GETconversations.infoPobierz informacje o kanale
GETconversations.membersLista członków kanału
GETconversations.historyPobierz wiadomości kanału

Użytkownicy

MetodaEndpointOpis
GETusers.listLista użytkowników workspace
GETusers.infoPobierz informacje o użytkowniku
GETusers.lookupByEmailZnajdź użytkownika po e-mailu
GETusers.conversationsLista kanałów użytkownika

Interakcje

MetodaEndpointOpis
POSTviews.openOtwórz widok modalny
POSTviews.updateAktualizuj widok modalny
POSTreactions.addDodaj reakcję emoji

Zdarzenia

Powiadomienia Brevo-do-Slack

ZdarzenieWyzwalaczAkcja Slack
new_subscriberKontakt utworzony w BrevoWyślij do #marketing
campaign_sentKampania e-mailowa wysłanaWyślij podsumowanie do #marketing
order_placedWykryto zamówienie o wysokiej wartościWyślij do #sales ze szczegółami
cart_abandonedKoszyk porzucony przez 30 minWyślij do #sales do follow-up
ticket_createdOtwarte zgłoszenie pomocy technicznejWyślij do #support
unsubscribedKontakt zrezygnował z subskrypcjiWyślij alert do #marketing

Wyzwalacze Slack-do-Brevo

Zdarzenie SlackWyzwalaczAkcja Brevo
message_actionNiestandardowy skrót wiadomościDodaj kontakt do listy lub wyzwól automatyzację
block_actionsKliknięcie przycisku w wiadomościAktualizuj atrybut kontaktu lub wyślij e-mail
view_submissionPrzesłanie formularza modalnegoUtwórz kontakt lub wyzwól workflow

Przykłady kodu

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

Wysyłaj powiadomienia marketingowe

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

Obsługa interakcji 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();
});

Limity API

Limity szybkości Slack API używają systemu warstwowego:

WarstwaLimitTypowe metody
Warstwa 11 żądanie/minutęchat.delete, conversations.kick
Warstwa 220 żądań/minutęconversations.history, users.info
Warstwa 350 żądań/minutęconversations.list, users.list
Warstwa 4100 żądań/minutęchat.postMessage
SpecjalnyRóżnechat.postMessage do tego samego kanału: 1/sek

Dodatkowe limity:

  • Web API: Limit burst z krótkoterminowym ograniczaniem
  • Events API: 3 próby dostarczenia przy błędach
  • Przychodzące webhooki: 1 wiadomość/sekundę na URL webhooka
  • Block Kit: Maksymalnie 50 bloków na wiadomość

Szybkość wysyłania do kanału

Wysyłanie do tego samego kanału jest ograniczone do około 1 wiadomości na sekundę. Wsaduj powiadomienia lub używaj wątków, aby uniknąć ograniczania szybkości.

Rozwiązywanie problemów

Typowe problemy

ProblemPrzyczynaRozwiązanie
not_authedNieprawidłowy token botaZainstaluj ponownie aplikację i skopiuj nowy token bota
channel_not_foundBot nie jest w kanaleZaproś bota do docelowego kanału
missing_scopeWymagany zakres nie przyznanyDodaj zakres i zainstaluj ponownie aplikację
Zdarzenie nie odebraneSubskrypcja zdarzeń nie ustawionaSkonfiguruj URL Subskrypcji Zdarzeń
Timeout interakcjiOdpowiedź >3 sekundyOdpowiedz 200 natychmiast, przetwarzaj asynchronicznie

Tryb debug

Włącz szczegółowe logowanie:

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

Test połączenia

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

Najlepsze praktyki

  1. Używaj Block Kit - Twórz bogate, interaktywne wiadomości z frameworkiem Block Kit Slack
  2. Odpowiadaj szybko - Potwierdzaj interakcje w ciągu 3 sekund, przetwarzaj asynchronicznie
  3. Grupuj powiązane wiadomości w wątkach - Grupuj powiązane powiadomienia w wątkach, aby zmniejszyć szum
  4. Kieruj według kanału - Wysyłaj różne typy zdarzeń do odpowiednich kanałów zespołu
  5. Dołącz przyciski akcji - Dodaj przyciski „View in Brevo” dla szybkiego dostępu do danych klientów
  6. Wdrożyj unfurling - Pokaż bogate podglądy dla linków Brevo udostępnianych w Slack

Bezpieczeństwo

  • Token bota - Token dostępu z zakresem OAuth z granularnymi uprawnieniami
  • Podpisywanie żądań - Weryfikacja podpisu HMAC SHA-256 dla przychodzących żądań
  • OAuth 2.0 - Branżowy standard autoryzacji dla dystrybucji w wielu workspace’ach
  • Szyfrowanie TLS - Cała komunikacja API zaszyfrowana przez HTTPS
  • Rotacja tokenów - Automatyczna rotacja tokenów dla zwiększonego bezpieczeństwa

Powiązane zasoby

Subscribe to updates

developer-docs

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

auto-detect
Asystent AI

Cześć! Zapytaj mnie o dokumentację.