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

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

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

# Коннектор Twilio Flex

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

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

Подключите контакт-центр Twilio Flex к Brevo для единой истории взаимодействий с клиентами, маркетинговых последовательностей после разговоров и аналитики вовлечённости на основе поддержки через Tajo.

## Обзор

| Свойство | Значение |
| --- | --- |
| **Платформа** | Twilio Flex |
| **Категория** | Custom |
| **Сложность настройки** | Продвинутая |
| **Официальная интеграция** | Нет |
| **Синхронизируемые данные** | Клиенты, разговоры, события |
| **Используемые API** | Flex API, Conversations API, TaskRouter API |
| **Аутентификация** | Account SID + Auth Token / API Key |
| **Базовый URL** | `https://flex-api.twilio.com` |

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

- **Синхронизация разговоров**, пересылка голосовых, SMS, WhatsApp и чат-взаимодействий в хронологию Brevo
- **Обогащение профилей клиентов**, синхронизация данных о клиентах Flex с атрибутами контактов Brevo
- **Кампании после взаимодействий**, запуск рабочих процессов Brevo после завершения разговоров в поддержке
- **Трекинг CSAT-событий**, синхронизация результатов опросов удовлетворённости как событий Brevo
- **Данные об активности агентов**, отслеживание показателей производительности агентов для операционной отчётности
- **Аналитика очередей**, пересылка данных о времени ожидания и отказах для оптимизации клиентского опыта

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

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

1. Аккаунт Twilio с включённым Flex
2. Account SID и Auth Token Twilio
3. Экземпляр Flex с активными каналами (голос, SMS, чат или WhatsApp)
4. Настроенное рабочее пространство TaskRouter
5. Аккаунт Brevo с доступом к API
6. Аккаунт Tajo с активной подпиской

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

Twilio Flex использует стандартные методы аутентификации Twilio.

### Учётные данные аккаунта

```bash
# Basic Auth: Account SID как имя пользователя, Auth Token как пароль
curl -X GET "https://flex-api.twilio.com/v1/Configuration" \
  -u "$TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN"
```

### API Key (рекомендуется для production)

1. Перейдите в **Twilio Console** > **Account** > **API keys & tokens**
2. Нажмите **Create API Key**
3. Выберите тип ключа **Standard**
4. Сохраните SID и Secret в надёжном месте

```bash
curl -X GET "https://flex-api.twilio.com/v1/Configuration" \
  -u "$TWILIO_API_KEY_SID:$TWILIO_API_KEY_SECRET"
```

Auth Token против API Key

Auth Token предоставляет полный доступ к аккаунту. Для production используйте ограниченные API Keys. API Keys можно отзывать по отдельности, не нарушая работу других интеграций.

### Подключение к Tajo

```bash
tajo connectors install twilio-flex \
  --account-sid $TWILIO_ACCOUNT_SID \
  --auth-token $TWILIO_AUTH_TOKEN \
  --flex-flow-sid $TWILIO_FLEX_FLOW_SID
```

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

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

```yaml
connectors:
  twilio_flex:
    enabled: true
    account_sid: "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    flex_flow_sid: "FOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

    sync:
      conversations: true
      tasks: true
      customers: true
      csat: true
      agent_activity: false

    lists:
      support_contacts: 32
      csat_respondents: 33

    channels:
      - voice
      - sms
      - whatsapp
      - webchat
```

### Сопоставление полей

Сопоставьте данные клиентов и взаимодействий Flex с атрибутами Brevo:

```yaml
field_mapping:
  # Поля клиента
  identity: FLEX_IDENTITY
  friendly_name: FIRSTNAME
  attributes.email: email
  attributes.phone: SMS

  # Метрики взаимодействий
  last_conversation_date: LAST_SUPPORT_DATE
  total_conversations: SUPPORT_TICKET_COUNT
  avg_wait_time: AVG_WAIT_TIME
  last_csat_score: CSAT_SCORE
  preferred_channel: PREFERRED_CHANNEL

  # Пользовательские атрибуты
  customer_tier: VIP_TIER
  account_id: ACCOUNT_ID
```

### Сопоставление событий

```yaml
event_mapping:
  task.created: SUPPORT_REQUESTED
  task.completed: SUPPORT_RESOLVED
  task.canceled: SUPPORT_ABANDONED
  conversation.ended: CONVERSATION_ENDED
  survey.completed: CSAT_SUBMITTED
```

## Эндпоинты API

Tajo интегрируется со следующими эндпоинтами Twilio Flex и смежных API:

| Эндпоинт | Метод | API | Назначение |
| --- | --- | --- | --- |
| `/v1/Configuration` | GET | Flex | Получить конфигурацию Flex |
| `/v1/Interactions` | GET | Flex | Список взаимодействий |
| `/v1/Channels` | GET | Flex | Список каналов Flex |
| `/v1/WebChannels` | POST | Flex | Создать веб-чат канал |
| `/v1/Conversations` | GET | Conversations | Список разговоров |
| `/v1/Conversations/{sid}/Messages` | GET | Conversations | Сообщения разговора |
| `/v1/Conversations/{sid}/Participants` | GET | Conversations | Участники разговора |
| `/v1/Workspaces/{sid}/Tasks` | GET | TaskRouter | Список задач |
| `/v1/Workspaces/{sid}/Workers` | GET | TaskRouter | Список агентов |
| `/v1/Workspaces/{sid}/TaskQueues` | GET | TaskRouter | Список очередей задач |
| `/v1/Workspaces/{sid}/Events` | GET | TaskRouter | Список событий рабочего пространства |

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

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

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

await tajo.connectors.connect('twilio-flex', {
  accountSid: process.env.TWILIO_ACCOUNT_SID,
  authToken: process.env.TWILIO_AUTH_TOKEN,
  flexFlowSid: process.env.TWILIO_FLEX_FLOW_SID
});
```

### Синхронизация истории разговоров

```javascript
await tajo.connectors.sync('twilio-flex', {
  type: 'incremental',
  resources: ['conversations'],
  since: '2024-01-01',
  channels: ['voice', 'sms', 'whatsapp']
});

const status = await tajo.connectors.status('twilio-flex');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T16:00:00Z',
//   conversationsTracked: 12400,
//   customersLinked: 8900,
//   agentsMonitored: 45
// }
```

### Триггер кампании после разговора

```javascript
// Запуск follow-up в Brevo после завершения разговора в поддержке
app.post('/webhooks/flex/task-complete', async (req, res) => {
  const task = req.body;

  await tajo.connectors.handleEvent('twilio-flex', {
    type: 'task.completed',
    payload: {
      taskSid: task.TaskSid,
      customerEmail: task.TaskAttributes?.email,
      channel: task.TaskChannelUniqueName,
      duration: task.Age,
      queueName: task.TaskQueueFriendlyName
    }
  });

  res.status(200).send('OK');
});
```

### Интеграция плагина Flex

```javascript
// Внутри плагина Flex UI, отправка данных в Tajo
import { FlexPlugin } from '@twilio/flex-plugin';

class TajoPlugin extends FlexPlugin {
  init(flex, manager) {
    flex.Actions.addListener('afterCompleteTask', async (payload) => {
      await fetch('https://api.example.com/webhooks/flex/task-complete', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
          TaskSid: payload.task.sid,
          TaskAttributes: payload.task.attributes,
          TaskChannelUniqueName: payload.task.taskChannelUniqueName,
          Age: payload.task.age
        })
      });
    });
  }
}
```

Caution

Адрес `example.com` выше — заглушка, пока эндпоинт Tajo не станет доступен.

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

Twilio устанавливает ограничения скорости для своих API:

| API | Ограничение скорости | Примечания |
| --- | --- | --- |
| **Flex API** | 100 запросов/сек | На аккаунт |
| **Conversations API** | 100 запросов/сек | На аккаунт |
| **TaskRouter API** | 30 запросов на чтение/сек | На рабочее пространство |
| **TaskRouter Events** | 20 запросов/сек | На рабочее пространство |

Event Streams

Для обработки событий с высоким объёмом рассмотрите использование Twilio Event Streams вместо опроса TaskRouter. Event Streams доставляют события в реальном времени через вебхуки или Kinesis.

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

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

| Проблема | Причина | Решение |
| --- | --- | --- |
| 401 Unauthorized | Недействительный SID или токен | Проверьте Account SID и Auth Token в Twilio Console |
| 403 Forbidden | Flex не включён | Убедитесь, что Flex активирован в аккаунте Twilio |
| Отсутствующие разговоры | Неверный диапазон дат | Расширьте диапазон дат синхронизации или проверьте статус разговоров |
| Задачи не отслеживаются | Несоответствие рабочего пространства TaskRouter | Проверьте правильность SID рабочего пространства |
| Плагин не срабатывает | Слушатель события не зарегистрирован | Убедитесь, что плагин Flex развёрнут и активен |

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

```yaml
connectors:
  twilio_flex:
    debug: true
    log_level: verbose
    log_api_calls: true
```

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

```bash
tajo connectors test twilio-flex
# ✓ Flex API connection successful
# ✓ Conversations API accessible
# ✓ TaskRouter workspace found
# ✓ Agent list readable
# ✓ Queue configuration loaded
```

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

1. **Используйте API Keys вместо Auth Tokens**, API Keys имеют ограниченные права и могут отзываться по отдельности
2. **Используйте Event Streams**, события на основе push-уведомлений эффективнее опроса TaskRouter
3. **Разработайте плагин Flex**, UI-плагин для захвата событий завершения задач в реальном времени
4. **Нормализуйте каналы**, унифицируйте данные голоса, SMS и чата в единые события Brevo
5. **Отслеживайте CSAT-оценки**, синхронизируйте данные удовлетворённости с Brevo для сегментации по клиентскому опыту
6. **Мониторинг метрик очередей**, используйте данные о времени ожидания для запуска проактивных коммуникаций с клиентами

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

- **Account SID + Auth Token**, стандартная аутентификация Twilio
- **API Keys**, отзываемые учётные данные без корневого доступа для production
- **Только HTTPS**, все API-коммуникации зашифрованы через TLS 1.2+
- **Валидация вебхуков**, верификация подписей вебхуков Twilio с помощью `X-Twilio-Signature`
- **PCI-совместимость**, Twilio Flex соответствует стандарту PCI DSS Level 1
- **Шифрованное хранение**, учётные данные зашифрованы при хранении в Tajo

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

- [Коннектор Gorgias](https://tajo.io/ru/docs/connectors/support/gorgias)
- [Коннектор Jira](https://tajo.io/ru/docs/connectors/custom/jira)
- [Скилл синхронизации клиентов](https://tajo.io/ru/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/ru/docs/contact-management)
