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ść |
|---|---|
| Platforma | Slack |
| Kategoria | Integracja niestandardowa |
| Poziom konfiguracji | Łatwy |
| Integracja oficjalna | Tak |
| Synchronizowane dane | Użytkownicy, Kanały, Wiadomości, Zdarzenia |
| Bazowy URL API | https://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:
- Workspace Slack z dostępem administratora
- Aplikację Slack utworzoną na api.slack.com/apps
- Token bota z wymaganymi zakresami
- Konto Brevo z dostępem do API
- Konto Tajo
Uwierzytelnianie
Token bota (zalecane)
Zainstaluj aplikację Slack w swoim workspace i używaj tokenu bota dla dostępu do API.
- Utwórz aplikację na api.slack.com/apps
- Dodaj wymagane zakresy OAuth w „OAuth & Permissions”
- Zainstaluj aplikację w workspace
- Skopiuj 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
Dla dystrybucji integracji Slack do wielu workspace’ów:
# 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}"Wymagane zakresy 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 filesDostę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_alertMapowanie 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
| Metoda | Endpoint | Opis |
|---|---|---|
POST | chat.postMessage | Wyślij wiadomość do kanału |
POST | chat.update | Aktualizuj istniejącą wiadomość |
POST | chat.delete | Usuń wiadomość |
POST | chat.scheduleMessage | Zaplanuj wiadomość |
POST | chat.postEphemeral | Wyślij efemeryczną wiadomość do użytkownika |
Kanały
| Metoda | Endpoint | Opis |
|---|---|---|
GET | conversations.list | Lista kanałów |
GET | conversations.info | Pobierz informacje o kanale |
GET | conversations.members | Lista członków kanału |
GET | conversations.history | Pobierz wiadomości kanału |
Użytkownicy
| Metoda | Endpoint | Opis |
|---|---|---|
GET | users.list | Lista użytkowników workspace |
GET | users.info | Pobierz informacje o użytkowniku |
GET | users.lookupByEmail | Znajdź użytkownika po e-mailu |
GET | users.conversations | Lista kanałów użytkownika |
Interakcje
| Metoda | Endpoint | Opis |
|---|---|---|
POST | views.open | Otwórz widok modalny |
POST | views.update | Aktualizuj widok modalny |
POST | reactions.add | Dodaj reakcję emoji |
Zdarzenia
Powiadomienia Brevo-do-Slack
| Zdarzenie | Wyzwalacz | Akcja Slack |
|---|---|---|
new_subscriber | Kontakt utworzony w Brevo | Wyślij do #marketing |
campaign_sent | Kampania e-mailowa wysłana | Wyślij podsumowanie do #marketing |
order_placed | Wykryto zamówienie o wysokiej wartości | Wyślij do #sales ze szczegółami |
cart_abandoned | Koszyk porzucony przez 30 min | Wyślij do #sales do follow-up |
ticket_created | Otwarte zgłoszenie pomocy technicznej | Wyślij do #support |
unsubscribed | Kontakt zrezygnował z subskrypcji | Wyślij alert do #marketing |
Wyzwalacze Slack-do-Brevo
| Zdarzenie Slack | Wyzwalacz | Akcja Brevo |
|---|---|---|
message_action | Niestandardowy skrót wiadomości | Dodaj kontakt do listy lub wyzwól automatyzację |
block_actions | Kliknięcie przycisku w wiadomości | Aktualizuj atrybut kontaktu lub wyślij e-mail |
view_submission | Przesłanie formularza modalnego | Utwó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 Slackawait 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 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' } ] } ] }});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:
| Warstwa | Limit | Typowe metody |
|---|---|---|
| Warstwa 1 | 1 żądanie/minutę | chat.delete, conversations.kick |
| Warstwa 2 | 20 żądań/minutę | conversations.history, users.info |
| Warstwa 3 | 50 żądań/minutę | conversations.list, users.list |
| Warstwa 4 | 100 żądań/minutę | chat.postMessage |
| Specjalny | Różne | chat.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
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
not_authed | Nieprawidłowy token bota | Zainstaluj ponownie aplikację i skopiuj nowy token bota |
channel_not_found | Bot nie jest w kanale | Zaproś bota do docelowego kanału |
missing_scope | Wymagany zakres nie przyznany | Dodaj zakres i zainstaluj ponownie aplikację |
| Zdarzenie nie odebrane | Subskrypcja zdarzeń nie ustawiona | Skonfiguruj URL Subskrypcji Zdarzeń |
| Timeout interakcji | Odpowiedź >3 sekundy | Odpowiedz 200 natychmiast, przetwarzaj asynchronicznie |
Tryb debug
Włącz szczegółowe logowanie:
connectors: slack: debug: true log_level: verbose log_events: trueTest połączenia
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeNajlepsze praktyki
- Używaj Block Kit - Twórz bogate, interaktywne wiadomości z frameworkiem Block Kit Slack
- Odpowiadaj szybko - Potwierdzaj interakcje w ciągu 3 sekund, przetwarzaj asynchronicznie
- Grupuj powiązane wiadomości w wątkach - Grupuj powiązane powiadomienia w wątkach, aby zmniejszyć szum
- Kieruj według kanału - Wysyłaj różne typy zdarzeń do odpowiednich kanałów zespołu
- Dołącz przyciski akcji - Dodaj przyciski „View in Brevo” dla szybkiego dostępu do danych klientów
- 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