Slack конектор

Свържи своето Slack workspace с Brevo чрез Tajo за маркетингови известия в реално време, екипни alert-и при клиентски събития и работен поток, задействан от Slack взаимодействия.

Преглед

СвойствоСтойност
ПлатформаSlack
КатегорияПерсонализирана интеграция
Сложност на настройкаЛесна
Официална интеграцияДа
Синхронизирани данниПотребители, канали, съобщения, събития
Base URL на APIhttps://slack.com/api

Функции

  • Маркетингови alert-и – Изпращай известия в реално време за събития от кампании, нови абонати и milestones за приходи
  • Известия за клиентски събития – Alert-и за екипите при ценни действия на клиенти от Brevo
  • Workflow тригери – Използвай Slack взаимодействия (натискания на бутони, изпращане на форми) за задействане на Brevo автоматизации
  • Рутиране на базата на канали – Рутирай известия към конкретни канали на базата на типа събитие или клиентски сегмент
  • Синхронизация на потребители – Мапвай потребители от Slack workspace към контакти в Brevo за вътрешни комуникации
  • Интерактивни съобщения – Изпращай богати съобщения с бутони и действия за екипни работни потоци
  • Планирани съобщения – Планирай известия за дневни/седмични маркетингови резюмета
  • Поддръжка на нишки – Групирай свързани известия в нишки за организирана комуникация

Предварителни условия

Преди да започнеш, увери се, че имаш:

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

Автентикация

Bot Token (препоръчително)

Инсталирай Slack приложение в своя workspace и използвай bot token за API достъп.

  1. Създай приложение на api.slack.com/apps
  2. Добави необходимите OAuth обхвати от “OAuth & Permissions”
  3. Инсталирай приложението в workspace
  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 интеграция към множество workspaces:

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

Необходими Bot обхвати

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

Достъп до имейли на потребители

Обхватът 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

МетодКрайна точкаОписание
POSTchat.postMessageИзпрати съобщение в канал
POSTchat.updateОбнови съществуващо съобщение
POSTchat.deleteИзтрий съобщение
POSTchat.scheduleMessageПланирай съобщение
POSTchat.postEphemeralИзпрати ephemeral съобщение на потребител

Канали

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

Потребители

МетодКрайна точкаОписание
GETusers.listСписък с потребители на workspace
GETusers.infoПолучаване на информация за потребител
GETusers.lookupByEmailНамери потребител по имейл
GETusers.conversationsСписък с канали на потребителя

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

МетодКрайна точкаОписание
POSTviews.openОтвори модален изглед
POSTviews.updateОбнови модален изглед
POSTreactions.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 Slack
await 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 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'
}
]
}
]
}
});

Обработка на 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 11 заявка/минутаchat.delete, conversations.kick
Tier 220 заявки/минутаconversations.history, users.info
Tier 350 заявки/минутаconversations.list, users.list
Tier 4100 заявки/минута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

Тест на връзката

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. Включвай action бутони – Добавяй бутони “View in Brevo” за бърз достъп до клиентски данни
  6. Внедри unfurling – Показвай богати визуализации за Brevo връзки, споделени в Slack

Сигурност

  • Bot Token – OAuth-scoped access token с гранулирани разрешения
  • Подписване на заявки – HMAC SHA-256 верификация на подпис за входящи заявки
  • OAuth 2.0 – Индустриален стандарт за авторизация за мулти-workspace дистрибуция
  • TLS криптиране – Цялата API комуникация е криптирана чрез HTTPS
  • Ротация на token-и – Автоматична ротация на token-и за повишена сигурност

Свързани ресурси

Subscribe to updates

developer-docs

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

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

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