Коннектор Twilio Flex
Подключите контакт-центр 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
- Данные об активности агентов, отслеживание показателей производительности агентов для операционной отчётности
- Аналитика очередей, пересылка данных о времени ожидания и отказах для оптимизации клиентского опыта
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Twilio с включённым Flex
- Account SID и Auth Token Twilio
- Экземпляр Flex с активными каналами (голос, SMS, чат или WhatsApp)
- Настроенное рабочее пространство TaskRouter
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo с активной подпиской
Аутентификация
Twilio Flex использует стандартные методы аутентификации Twilio.
Учётные данные аккаунта
# 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)
- Перейдите в Twilio Console > Account > API keys & tokens
- Нажмите Create API Key
- Выберите тип ключа Standard
- Сохраните SID и Secret в надёжном месте
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
tajo connectors install twilio-flex \ --account-sid $TWILIO_ACCOUNT_SID \ --auth-token $TWILIO_AUTH_TOKEN \ --flex-flow-sid $TWILIO_FLEX_FLOW_SIDКонфигурация
Базовая настройка
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:
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Сопоставление событий
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 | Список событий рабочего пространства |
Примеры кода
Инициализация коннектора
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});Синхронизация истории разговоров
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// }Триггер кампании после разговора
// Запуск 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
// Внутри плагина Flex UI, отправка данных в Tajoimport { FlexPlugin } from '@twilio/flex-plugin';
class TajoPlugin extends FlexPlugin { init(flex, manager) { flex.Actions.addListener('afterCompleteTask', async (payload) => { await fetch('https://api.tajo.io/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 }) }); }); }}Ограничения скорости
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 развёрнут и активен |
Режим отладки
connectors: twilio_flex: debug: true log_level: verbose log_api_calls: trueПроверка подключения
tajo connectors test twilio-flex# ✓ Flex API connection successful# ✓ Conversations API accessible# ✓ TaskRouter workspace found# ✓ Agent list readable# ✓ Queue configuration loadedЛучшие практики
- Используйте API Keys вместо Auth Tokens, API Keys имеют ограниченные права и могут отзываться по отдельности
- Используйте Event Streams, события на основе push-уведомлений эффективнее опроса TaskRouter
- Разработайте плагин Flex, UI-плагин для захвата событий завершения задач в реальном времени
- Нормализуйте каналы, унифицируйте данные голоса, SMS и чата в единые события Brevo
- Отслеживайте CSAT-оценки, синхронизируйте данные удовлетворённости с Brevo для сегментации по клиентскому опыту
- Мониторинг метрик очередей, используйте данные о времени ожидания для запуска проактивных коммуникаций с клиентами
Безопасность
- 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