Connecteur Twilio Flex
Connectez votre centre de contact Twilio Flex à Brevo pour un historique unifié des interactions clients, des flux marketing post-conversation et des analytiques d’engagement pilotées par le support via Tajo.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Twilio Flex |
| Catégorie | Custom |
| Complexité d’installation | Avancée |
| Intégration officielle | Non |
| Données synchronisées | Clients, conversations, événements |
| APIs utilisées | Flex API, Conversations API, TaskRouter API |
| Authentification | Account SID + Auth Token / API Key |
| URL de base | https://flex-api.twilio.com |
Fonctionnalités
- Synchronisation des conversations, Transférez les interactions voix, SMS, WhatsApp et chat vers les timelines Brevo
- Enrichissement des profils clients, Synchronisez les données client Flex vers les attributs de contact Brevo
- Campagnes post-interaction, Déclenchez des workflows Brevo après la fin des conversations de support
- Suivi des événements CSAT, Synchronisez les résultats d’enquêtes de satisfaction en tant qu’événements Brevo
- Données d’activité des agents, Suivez les métriques de performance des agents pour le reporting opérationnel
- Analytics de file d’attente, Transférez les données de temps d’attente et d’abandon pour optimiser l’expérience
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un compte Twilio avec Flex activé
- Votre Account SID et Auth Token Twilio
- Une instance Flex avec des canaux actifs (voix, SMS, chat ou WhatsApp)
- Un workspace TaskRouter configuré
- Un compte Brevo avec accès API
- Un compte Tajo avec un abonnement actif
Authentification
Twilio Flex utilise les méthodes d’authentification standard de Twilio.
Identifiants de compte
# Basic Auth : Account SID comme nom d'utilisateur, Auth Token comme mot de passecurl -X GET "https://flex-api.twilio.com/v1/Configuration" \ -u "$TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN"API Key (recommandée en production)
- Allez dans Twilio Console > Account > API keys & tokens
- Cliquez sur Create API Key
- Sélectionnez le type de clé Standard
- Stockez le SID et le Secret de manière sécurisée
curl -X GET "https://flex-api.twilio.com/v1/Configuration" \ -u "$TWILIO_API_KEY_SID:$TWILIO_API_KEY_SECRET"Auth Token vs API Key
Votre Auth Token donne un accès complet au compte. En production, utilisez plutôt des API Keys à portée limitée. Les API Keys peuvent être révoquées individuellement sans perturber les autres intégrations.
Connexion à Tajo
tajo connectors install twilio-flex \ --account-sid $TWILIO_ACCOUNT_SID \ --auth-token $TWILIO_AUTH_TOKEN \ --flex-flow-sid $TWILIO_FLEX_FLOW_SIDConfiguration
Configuration de base
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 - webchatMappage des champs
Mappez les données clients et d’interaction Flex vers les attributs Brevo :
field_mapping: # Champs client identity: FLEX_IDENTITY friendly_name: FIRSTNAME attributes.email: email attributes.phone: SMS
# Métriques d'interaction 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
# Attributs personnalisés customer_tier: VIP_TIER account_id: ACCOUNT_IDMappage des événements
event_mapping: task.created: SUPPORT_REQUESTED task.completed: SUPPORT_RESOLVED task.canceled: SUPPORT_ABANDONED conversation.ended: CONVERSATION_ENDED survey.completed: CSAT_SUBMITTEDEndpoints API
Tajo s’intègre avec les endpoints Twilio Flex et apparentés suivants :
| Endpoint | Méthode | API | Objet |
|---|---|---|---|
/v1/Configuration | GET | Flex | Obtenir la configuration Flex |
/v1/Interactions | GET | Flex | Lister les interactions |
/v1/Channels | GET | Flex | Lister les canaux Flex |
/v1/WebChannels | POST | Flex | Créer un canal de web chat |
/v1/Conversations | GET | Conversations | Lister les conversations |
/v1/Conversations/{sid}/Messages | GET | Conversations | Lister les messages d’une conversation |
/v1/Conversations/{sid}/Participants | GET | Conversations | Lister les participants |
/v1/Workspaces/{sid}/Tasks | GET | TaskRouter | Lister les tâches |
/v1/Workspaces/{sid}/Workers | GET | TaskRouter | Lister les workers (agents) |
/v1/Workspaces/{sid}/TaskQueues | GET | TaskRouter | Lister les files de tâches |
/v1/Workspaces/{sid}/Events | GET | TaskRouter | Lister les événements du workspace |
Exemples de code
Initialiser le connecteur
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});Synchroniser l’historique des conversations
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// }Déclencheur de campagne post-conversation
// Déclencher une relance Brevo après la fin d'une conversation de supportapp.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');});Intégration avec un plugin Flex
// À l'intérieur d'un plugin Flex UI, envoyer les données vers 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 }) }); }); }}Limites de débit
Twilio impose des limites de débit sur ses APIs :
| API | Limite de débit | Notes |
|---|---|---|
| Flex API | 100 requêtes/seconde | Par compte |
| Conversations API | 100 requêtes/seconde | Par compte |
| TaskRouter API | 30 requêtes en lecture/seconde | Par workspace |
| TaskRouter Events | 20 requêtes/seconde | Par workspace |
Event Streams
Pour le traitement d’événements à fort volume, envisagez d’utiliser Twilio Event Streams plutôt que le polling des événements TaskRouter. Event Streams pousse les événements en temps réel via webhooks ou Kinesis.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | SID ou token invalide | Vérifiez l’Account SID et l’Auth Token dans la Console Twilio |
| 403 Forbidden | Flex non activé | Assurez-vous que Flex est activé sur votre compte Twilio |
| Conversations manquantes | Mauvaise plage de dates | Élargissez la plage de dates de synchronisation ou vérifiez l’état des conversations |
| Tâches non suivies | Workspace TaskRouter non correspondant | Vérifiez que le SID du workspace est correct |
| Plugin qui ne se déclenche pas | Listener d’événement non enregistré | Vérifiez que le plugin Flex est déployé et actif |
Mode debug
connectors: twilio_flex: debug: true log_level: verbose log_api_calls: trueTester la connexion
tajo connectors test twilio-flex# ✓ Flex API connection successful# ✓ Conversations API accessible# ✓ TaskRouter workspace found# ✓ Agent list readable# ✓ Queue configuration loadedBonnes pratiques
- Préférez les API Keys aux Auth Tokens, Les API Keys peuvent être limitées en portée et révoquées individuellement
- Exploitez Event Streams, Les événements push sont plus efficaces que le polling de TaskRouter
- Construisez un plugin Flex, Utilisez un plugin UI pour capter les événements de clôture de tâche en temps réel
- Mappez les canaux de manière cohérente, Normalisez les données voix, SMS et chat en événements Brevo unifiés
- Suivez les scores CSAT, Synchronisez les données de satisfaction vers Brevo pour une segmentation pilotée par l’expérience
- Surveillez les métriques de file d’attente, Utilisez les données de temps d’attente pour déclencher une communication client proactive
Sécurité
- Account SID + Auth Token, Authentification Twilio standard
- API Keys, Identifiants révocables et non-root pour l’usage en production
- HTTPS uniquement, Toutes les communications API chiffrées via TLS 1.2+
- Validation des webhooks, Vérifiez les signatures de webhooks Twilio avec
X-Twilio-Signature - Conformité PCI, Twilio Flex est conforme PCI DSS niveau 1
- Stockage chiffré, Identifiants chiffrés au repos dans Tajo