---
title: "Коннектор Slack"
description: "Полное руководство по интеграции Slack для отправки уведомлений, синхронизации данных каналов и запуска автоматизаций Brevo из событий Slack через Tajo."
url: https://tajo.io/ru/docs/connectors/custom/slack/
markdown: https://tajo.io/ru/docs/connectors/custom/slack.md
lang: ru-RU
robots: noindex
---

Подайте заявку на ранний доступ

Укажите имя и рабочий адрес электронной почты. Мы отправим ссылку для подтверждения запроса на доступ к Tajo.

# Коннектор Slack

Статус коннектора: Запланирован Ещё не создан. Сегодня Tajo не запускает этот коннектор.

| Поле источника | Поле назначения | Пример значения |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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

## Обзор

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

## Возможности

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

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

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

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

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

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

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

1. Создайте приложение на [api.slack.com/apps](https://api.slack.com/apps)
2. Добавьте необходимые OAuth scope в разделе “OAuth & Permissions”
3. Установите приложение в рабочее пространство
4. Скопируйте Bot User OAuth Token (`xoxb-...`)

```bash
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 на несколько рабочих пространств:

```bash
# 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. Без него сопоставление пользователей будет ограничено отображаемыми именами.

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

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

```yaml
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

### Сообщения

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

### Каналы

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

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

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

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

| Метод | Эндпоинт | Описание |
| --- | --- | --- |
| `POST` | `views.open` | Открыть модальное окно |
| `POST` | `views.update` | Обновить модальное окно |
| `POST` | `reactions.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` | Отправка модальной формы | Создать контакт или запустить рабочий процесс |

## Примеры кода

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

```javascript
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
});
```

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

```javascript
// Отправка уведомления при поступлении крупного заказа
await tajo.slack.notify({
  channel: 'sales',
  event: 'order_placed',
  data: {
    customerEmail: 'customer@example.com',
    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:*\ncustomer@example.com' },
          { 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

```javascript
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 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` |
| Особый | Варьируется | `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 немедленно, обрабатывайте асинхронно |

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

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

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

```bash
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
- **Ротация токенов**, автоматическая ротация токенов для повышения безопасности

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

- [Документация Slack API](https://api.slack.com/methods)
- [Slack Block Kit Builder](https://app.slack.com/block-kit-builder)
- [Slack Events API](https://api.slack.com/events-api)
- [Коннектор Brevo](https://tajo.io/ru/docs/connectors/marketing/brevo)
- [Скилл синхронизации клиентов](https://tajo.io/ru/docs/skills/data-sync/customer-sync)
