Коннектор Slack

Подключите рабочее пространство Slack к Brevo через Tajo для маркетинговых уведомлений в реальном времени, командных оповещений о событиях клиентов и автоматизации рабочих процессов, запускаемых взаимодействиями в Slack.

Обзор

СвойствоЗначение
ПлатформаSlack
КатегорияCustom Integration
Сложность настройкиПростая
Официальная интеграцияДа
Синхронизируемые данныеПользователи, каналы, сообщения, события
Базовый URL APIhttps://slack.com/api

Возможности

  • Маркетинговые оповещения, отправка уведомлений в реальном времени о событиях кампаний, новых подписчиках и доходных вехах
  • Уведомления о событиях клиентов, оповещение команд о важных действиях клиентов из Brevo
  • Триггеры рабочих процессов, использование взаимодействий в Slack (нажатий кнопок, отправки форм) для запуска автоматизаций Brevo
  • Маршрутизация по каналам, направление уведомлений в конкретные каналы в зависимости от типа события или сегмента клиентов
  • Синхронизация пользователей, сопоставление пользователей рабочего пространства Slack с контактами Brevo для внутренних коммуникаций
  • Интерактивные сообщения, отправка насыщенных сообщений с кнопками и действиями для командных рабочих процессов
  • Отложенные сообщения, планирование уведомлений для ежедневных/еженедельных маркетинговых сводок
  • Поддержка тредов, группировка связанных уведомлений в тредах для упорядоченного общения

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  1. Рабочее пространство Slack с правами администратора
  2. Приложение Slack, созданное на api.slack.com/apps
  3. Bot token с необходимыми scope
  4. Аккаунт Brevo с доступом к API
  5. Аккаунт Tajo

Аутентификация

Bot Token (рекомендуется)

Установите приложение Slack в рабочее пространство и используйте bot token для доступа к API.

  1. Создайте приложение на api.slack.com/apps
  2. Добавьте необходимые OAuth scope в разделе “OAuth & Permissions”
  3. Установите приложение в рабочее пространство
  4. Скопируйте 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

Для распространения интеграции Slack на несколько рабочих пространств:

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}
# Обмен токена
curl -X POST "https://slack.com/api/oauth.v2.access" \
-d "client_id={client_id}" \
-d "client_secret={client_secret}" \
-d "code={auth_code}"

Необходимые Bot Scope

chat:write # Отправка сообщений
channels:read # Список каналов
channels:history # Чтение сообщений канала
users:read # Список пользователей рабочего пространства
users:read.email # Чтение email-адресов пользователей
reactions:write # Добавление реакций к сообщениям
files:write # Загрузка файлов

Доступ к email пользователей

Scope users:read.email необходим для сопоставления пользователей Slack с контактами Brevo. Без него сопоставление пользователей будет ограничено отображаемыми именами.

Конфигурация

Базовая настройка

connectors:
slack:
enabled: true
bot_token: "${SLACK_BOT_TOKEN}"
signing_secret: "${SLACK_SIGNING_SECRET}"
# Каналы уведомлений
channels:
marketing: "C01234567"
sales: "C01234568"
support: "C01234569"
alerts: "C01234570"
# Маршрутизация событий
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

Email пользователя (уникальный идентификатор для сопоставления с Brevo)

real_name optional
string

Полное имя, разделяется на FIRSTNAME/LASTNAME

profile.phone optional
string

Сопоставляется с атрибутом SMS

profile.title optional
string

Должность

tz optional
string

Часовой пояс пользователя

is_admin optional
boolean

Статус администратора рабочего пространства

team_id optional
string

ID команды рабочего пространства

status_text optional
string

Пользовательский статус

Методы API

Сообщения

МетодЭндпоинтОписание
POSTchat.postMessageОтправить сообщение в канал
POSTchat.updateОбновить существующее сообщение
POSTchat.deleteУдалить сообщение
POSTchat.scheduleMessageЗапланировать сообщение
POSTchat.postEphemeralОтправить эфемерное сообщение пользователю

Каналы

МетодЭндпоинтОписание
GETconversations.listСписок каналов
GETconversations.infoИнформация о канале
GETconversations.membersСписок участников канала
GETconversations.historyСообщения канала

Пользователи

МетодЭндпоинтОписание
GETusers.listСписок пользователей рабочего пространства
GETusers.infoИнформация о пользователе
GETusers.lookupByEmailПоиск пользователя по email
GETusers.conversationsКаналы пользователя

Взаимодействия

МетодЭндпоинтОписание
POSTviews.openОткрыть модальное окно
POSTviews.updateОбновить модальное окно
POSTreactions.addДобавить emoji-реакцию

События

Уведомления Brevo → Slack

СобытиеТриггерДействие в Slack
new_subscriberКонтакт создан в BrevoПубликация в #marketing
campaign_sentОтправлена email-кампанияСводка в #marketing
order_placedОбнаружен заказ на крупную суммуПубликация в #sales с деталями
cart_abandonedКорзина брошена на 30 минутПубликация в #sales для follow-up
ticket_createdОткрыт тикет поддержкиПубликация в #support
unsubscribedКонтакт отписалсяОповещение в #marketing

Триггеры Slack → Brevo

Событие SlackТриггерДействие в Brevo
message_actionПользовательский шорткат в сообщенииДобавить контакт в лист или запустить автоматизацию
block_actionsНажатие кнопки в сообщенииОбновить атрибут контакта или отправить email
view_submissionОтправка модальной формыСоздать контакт или запустить рабочий процесс

Примеры кода

Инициализация коннектора

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Подключение Slack
await tajo.connectors.connect('slack', {
botToken: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET
});

Отправка маркетинговых уведомлений

// Отправка уведомления при поступлении крупного заказа
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'
}
]
}
]
}
});

Обработка взаимодействий Slack

import crypto from 'crypto';
app.post('/slack/interactions', async (req, res) => {
// Проверка подписи запроса Slack
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);
// Обработка действий кнопок
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();
});

Ограничения скорости

Slack API использует многоуровневую систему лимитов:

УровеньЛимитТипичные методы
Tier 11 запрос/минутуchat.delete, conversations.kick
Tier 220 запросов/минутуconversations.history, users.info
Tier 350 запросов/минутуconversations.list, users.list
Tier 4100 запросов/минутуchat.postMessage
ОсобыйВарьируетсяchat.postMessage в один канал: 1/сек

Дополнительные ограничения:

  • Web API: Burst-лимит с краткосрочным регулированием
  • Events API: До 3 попыток повторной доставки
  • Incoming Webhooks: 1 сообщение/секунду на URL вебхука
  • Block Kit: Максимум 50 блоков на сообщение

Скорость публикации в канал

Публикация в один канал ограничена примерно 1 сообщением в секунду. Группируйте уведомления или используйте треды, чтобы избежать регулирования.

Устранение неполадок

Частые проблемы

ПроблемаПричинаРешение
not_authedНедействительный bot tokenПереустановите приложение и скопируйте новый bot token
channel_not_foundБот не добавлен в каналПригласите бота в целевой канал
missing_scopeНеобходимый scope не предоставленДобавьте scope и переустановите приложение
Событие не полученоПодписка на события не настроенаНастройте URL Event Subscriptions
Таймаут взаимодействияОтвет >3 секундОтветьте 200 немедленно, обрабатывайте асинхронно

Режим отладки

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

Проверка подключения

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

Лучшие практики

  1. Используйте Block Kit, создавайте насыщенные интерактивные сообщения с помощью фреймворка Block Kit Slack
  2. Отвечайте быстро, подтверждайте взаимодействия в течение 3 секунд, обрабатывайте асинхронно
  3. Группируйте связанные сообщения в тредах, снижает шум в каналах
  4. Маршрутизируйте по каналам, направляйте разные типы событий в соответствующие командные каналы
  5. Добавляйте кнопки действий, включайте кнопки “View in Brevo” для быстрого доступа к данным клиентов
  6. Реализуйте анфёрлинг, показывайте богатые превью для ссылок Brevo, расшаренных в Slack

Безопасность

  • Bot Token, токен доступа с ограниченными OAuth-правами
  • Подпись запросов, HMAC SHA-256 верификация входящих запросов
  • OAuth 2.0, отраслевой стандарт авторизации для распространения на несколько рабочих пространств
  • TLS-шифрование, все API-коммуникации зашифрованы через HTTPS
  • Ротация токенов, автоматическая ротация токенов для повышения безопасности

Связанные ресурсы

Subscribe to updates

developer-docs

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

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

Привет! Спрашивайте меня о документации.