Slack конектор
Свържи своето Slack workspace с Brevo чрез Tajo за маркетингови известия в реално време, екипни alert-и при клиентски събития и работен поток, задействан от Slack взаимодействия.
Преглед
| Свойство | Стойност |
|---|---|
| Платформа | Slack |
| Категория | Персонализирана интеграция |
| Сложност на настройка | Лесна |
| Официална интеграция | Да |
| Синхронизирани данни | Потребители, канали, съобщения, събития |
| Base URL на API | https://slack.com/api |
Функции
- Маркетингови alert-и – Изпращай известия в реално време за събития от кампании, нови абонати и milestones за приходи
- Известия за клиентски събития – Alert-и за екипите при ценни действия на клиенти от Brevo
- Workflow тригери – Използвай Slack взаимодействия (натискания на бутони, изпращане на форми) за задействане на Brevo автоматизации
- Рутиране на базата на канали – Рутирай известия към конкретни канали на базата на типа събитие или клиентски сегмент
- Синхронизация на потребители – Мапвай потребители от Slack workspace към контакти в Brevo за вътрешни комуникации
- Интерактивни съобщения – Изпращай богати съобщения с бутони и действия за екипни работни потоци
- Планирани съобщения – Планирай известия за дневни/седмични маркетингови резюмета
- Поддръжка на нишки – Групирай свързани известия в нишки за организирана комуникация
Предварителни условия
Преди да започнеш, увери се, че имаш:
- Slack workspace с администраторски достъп
- Slack приложение, създадено на api.slack.com/apps
- Bot token с необходимите обхвати
- Акаунт в Brevo с API достъп
- Акаунт в Tajo
Автентикация
Bot Token (препоръчително)
Инсталирай Slack приложение в своя workspace и използвай bot token за API достъп.
- Създай приложение на api.slack.com/apps
- Добави необходимите OAuth обхвати от “OAuth & Permissions”
- Инсталирай приложението в workspace
- Копирай 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
За дистрибутиране на твоята Slack интеграция към множество 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}"Необходими Bot обхвати
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 filesДостъп до имейли на потребители
Обхватът users:read.email се изисква за съпоставяне на Slack потребители с контакти в Brevo. Без него, мапването на потребители ще бъде ограничено до display имена.
Конфигурация
Основна настройка
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Мапване на полета
Мапвай потребителски данни от Slack към атрибути на контактите в Brevo:
Мапвания по подразбиране
| Parameter | Type | Description |
|---|---|---|
profile.email required | string | Имейл на потребителя (уникален идентификатор за съпоставяне в Brevo) |
real_name optional | string | Пълно име, разделено на FIRSTNAME/LASTNAME |
profile.phone optional | string | Мапва към атрибут SMS |
profile.title optional | string | Длъжност |
tz optional | string | Часова зона на потребителя |
is_admin optional | boolean | Статус на администратор на workspace |
team_id optional | string | Team ID на workspace |
status_text optional | string | Персонализиран статус на потребителя |
API методи
Messaging
| Метод | Крайна точка | Описание |
|---|---|---|
POST | chat.postMessage | Изпрати съобщение в канал |
POST | chat.update | Обнови съществуващо съобщение |
POST | chat.delete | Изтрий съобщение |
POST | chat.scheduleMessage | Планирай съобщение |
POST | chat.postEphemeral | Изпрати ephemeral съобщение на потребител |
Канали
| Метод | Крайна точка | Описание |
|---|---|---|
GET | conversations.list | Списък с канали |
GET | conversations.info | Получаване на информация за канал |
GET | conversations.members | Списък с членове на канал |
GET | conversations.history | Получаване на съобщения от канал |
Потребители
| Метод | Крайна точка | Описание |
|---|---|---|
GET | users.list | Списък с потребители на workspace |
GET | users.info | Получаване на информация за потребител |
GET | users.lookupByEmail | Намери потребител по имейл |
GET | users.conversations | Списък с канали на потребителя |
Взаимодействия
| Метод | Крайна точка | Описание |
|---|---|---|
POST | views.open | Отвори модален изглед |
POST | views.update | Обнови модален изглед |
POST | reactions.add | Добави emoji реакция |
Събития
Известия от Brevo към Slack
| Събитие | Тригер | Slack действие |
|---|---|---|
new_subscriber | Създаден контакт в Brevo | Публикуване в #marketing |
campaign_sent | Изпратена имейл кампания | Публикуване на резюме в #marketing |
order_placed | Открита поръчка с висока стойност | Публикуване в #sales с детайли |
cart_abandoned | Кошница изоставена за 30 мин | Публикуване в #sales за follow-up |
ticket_created | Отворен тикет за поддръжка | Публикуване в #support |
unsubscribed | Контакт се отписа | Публикуване на alert в #marketing |
Тригери от Slack към Brevo
| Slack събитие | Тригер | Действие в Brevo |
|---|---|---|
message_action | Персонализиран shortcut за съобщение | Добавяне на контакт към списък или задействане на автоматизация |
block_actions | Натискане на бутон в съобщение | Обновяване на атрибут на контакт или изпращане на имейл |
view_submission | Изпратена модална форма | Създаване на контакт или задействане на workflow |
Примери с код
Инициализация на конектора
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});Изпращане на маркетингови известия
// 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' } ] } ] }});Обработка на 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();});Ограничения на заявките
API rate limits на Slack използват многостепенна система:
| Ниво | Лимит | Чести методи |
|---|---|---|
| Tier 1 | 1 заявка/минута | chat.delete, conversations.kick |
| Tier 2 | 20 заявки/минута | conversations.history, users.info |
| Tier 3 | 50 заявки/минута | conversations.list, users.list |
| Tier 4 | 100 заявки/минута | chat.postMessage |
| Special | Варира | chat.postMessage към същия канал: 1/сек |
Допълнителни лимити:
- Web API: Burst лимит с краткосрочен throttle
- Events API: Опити за повторна доставка до 3 пъти
- Incoming Webhooks: 1 съобщение/секунда на webhook URL
- Block Kit: Максимум 50 блока на съобщение
Скорост на публикуване в канал
Публикуването в същия канал е ограничено до приблизително 1 съобщение на секунда. Пакетирай известия или използвай нишки, за да избегнеш rate limiting.
Отстраняване на проблеми
Чести проблеми
| Проблем | Причина | Решение |
|---|---|---|
not_authed | Невалиден bot token | Преинсталирай приложението и копирай нов bot token |
channel_not_found | Ботът не е в канала | Покани бота в целевия канал |
missing_scope | Необходимият обхват не е предоставен | Добави обхвата и преинсталирай приложението |
| Събитието не се получава | Не е зададен event subscription | Конфигурирай Event Subscriptions URL |
| Interaction timeout | Отговорът е над 3 секунди | Отговори с 200 веднага, обработвай асинхронно |
Режим за дебъг
Активирай подробно логване:
connectors: slack: debug: true log_level: verbose log_events: trueТест на връзката
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeДобри практики
- Използвай Block Kit – Създавай богати, интерактивни съобщения с рамката Block Kit на Slack
- Отговаряй бързо – Потвърждавай взаимодействията в рамките на 3 секунди, обработвай асинхронно
- Използвай нишки за свързани съобщения – Групирай свързани известия в нишки, за да намалиш шума
- Рутирай по канал – Изпращай различни типове събития към подходящи екипни канали
- Включвай action бутони – Добавяй бутони “View in Brevo” за бърз достъп до клиентски данни
- Внедри unfurling – Показвай богати визуализации за Brevo връзки, споделени в Slack
Сигурност
- Bot Token – OAuth-scoped access token с гранулирани разрешения
- Подписване на заявки – HMAC SHA-256 верификация на подпис за входящи заявки
- OAuth 2.0 – Индустриален стандарт за авторизация за мулти-workspace дистрибуция
- TLS криптиране – Цялата API комуникация е криптирана чрез HTTPS
- Ротация на token-и – Автоматична ротация на token-и за повишена сигурност