Twilio Flex конектор
Свържи своя Twilio Flex контактен център с Brevo за унифицирана история на клиентските взаимодействия, маркетингови потоци след разговори и аналитика за ангажиране, задвижвана от поддръжка, чрез Tajo.
Преглед
| Свойство | Стойност |
|---|---|
| Платформа | Twilio Flex |
| Категория | Персонализирана |
| Сложност на настройка | Напреднала |
| Официална интеграция | Не |
| Синхронизирани данни | Клиенти, разговори, събития |
| Използвани API | Flex API, Conversations API, TaskRouter API |
| Автентикация | Account SID + Auth Token / API Key |
| Base URL | https://flex-api.twilio.com |
Функции
- Синхронизация на разговори – Препращай гласови, SMS, WhatsApp и chat взаимодействия към timeline-ите в Brevo
- Обогатяване на клиентски профил – Синхронизирай клиентски данни от Flex към атрибути на контактите в Brevo
- Кампании след взаимодействие – Задействай работни потоци в Brevo след приключване на разговори за поддръжка
- Проследяване на CSAT събития – Синхронизирай резултати от анкети за удовлетвореност като събития в Brevo
- Данни за активност на агенти – Проследявай метрики за производителност на агентите за оперативно отчитане
- Аналитика на опашки – Препращай данни за времето на изчакване и изоставяне за оптимизация на преживяването
Предварителни условия
Преди да започнеш, увери се, че имаш:
- Twilio акаунт с активиран Flex
- Твоите Twilio Account SID и Auth Token
- Flex инстанция с активни канали (voice, SMS, chat или WhatsApp)
- Конфигуриран TaskRouter workspace
- Акаунт в Brevo с API достъп
- Акаунт в Tajo с активен абонамент
Автентикация
Twilio Flex използва стандартните методи за автентикация на Twilio.
Credentials на акаунта
# Basic Auth: Account SID as username, Auth Token as passwordcurl -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 vs API Key
Твоят Auth Token има пълен достъп до акаунта. За production използвай scoped API Keys вместо него. API ключовете могат да се отменят индивидуално, без да нарушават други интеграции.
Свързване с 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: # Customer fields identity: FLEX_IDENTITY friendly_name: FIRSTNAME attributes.email: email attributes.phone: SMS
# Interaction metrics 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
# Custom attributes 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_SUBMITTEDAPI крайни точки
Tajo се интегрира със следните крайни точки на Twilio Flex и свързаните с него API-та:
| Крайна точка | Метод | API | Предназначение |
|---|---|---|---|
/v1/Configuration | GET | Flex | Получаване на Flex конфигурация |
/v1/Interactions | GET | Flex | Списък с взаимодействия |
/v1/Channels | GET | Flex | Списък с Flex канали |
/v1/WebChannels | POST | Flex | Създаване на web chat канал |
/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 | Списък със събития в workspace |
Примери с код
Инициализация на конектора
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// }Тригер за кампания след разговор
// Trigger a Brevo follow-up after a support conversation endsapp.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 плъгин
// Inside a Flex UI Plugin - send data to 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 налага rate limits в своите API-та:
| API | Rate Limit | Бележки |
|---|---|---|
| Flex API | 100 заявки/секунда | На акаунт |
| Conversations API | 100 заявки/секунда | На акаунт |
| TaskRouter API | 30 read заявки/секунда | На workspace |
| TaskRouter Events | 20 заявки/секунда | На workspace |
Event Streams
За обработка на събития с голям обем, помисли за използване на Twilio Event Streams вместо polling на TaskRouter събития. Event Streams изпраща събития в реално време чрез уебхуци или Kinesis.
Отстраняване на проблеми
Чести проблеми
| Проблем | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Невалиден SID или token | Провери Account SID и Auth Token в Twilio Console |
| 403 Forbidden | Flex не е активиран | Увери се, че Flex е активиран в твоя Twilio акаунт |
| Липсващи разговори | Грешен период от дати | Разшири периода на синхронизация или провери състоянието на разговора |
| Задачите не се проследяват | Несъответствие на TaskRouter workspace | Провери правилния workspace SID |
| Плъгинът не се задейства | Event listener не е регистриран | Провери дали Flex плъгинът е deploy-нат и активен |
Режим за дебъг
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 ключовете могат да бъдат scope-вани и индивидуално отменени
- Използвай Event Streams – Push-базираните събития са по-ефективни от polling на TaskRouter
- Създай Flex плъгин – Използвай UI плъгин, за да улавяш събития за завършване на задачи в реално време
- Мапвай каналите консистентно – Нормализирай voice, SMS и chat данните в унифицирани Brevo събития
- Проследявай CSAT скорове – Синхронизирай данни за удовлетвореност към Brevo за сегментация, задвижвана от преживяването
- Мониторирай метрики на опашките – Използвай данните за времето на изчакване, за да задействаш проактивна клиентска комуникация
Сигурност
- Account SID + Auth Token – Стандартна автентикация на Twilio
- API Keys – Отменяеми, non-root credentials за production употреба
- Само HTTPS – Цялата API комуникация е криптирана чрез TLS 1.2+
- Валидация на уебхуци – Верифицирай подписите на Twilio уебхуци с
X-Twilio-Signature - PCI съвместимост – Twilio Flex е PCI DSS Level 1 съвместим
- Криптирано съхранение – Credentials криптирани при съхранение в Tajo