موصل Twilio Flex
اربط مركز اتصال Twilio Flex الخاص بك مع Brevo لتاريخ موحد لتفاعلات العملاء، وتدفقات تسويقية ما بعد المحادثة، وتحليلات تفاعل قائمة على الدعم عبر Tajo.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Twilio Flex |
| الفئة | مخصص |
| تعقيد الإعداد | متقدم |
| تكامل رسمي | لا |
| البيانات المُزامَنة | عملاء، محادثات، أحداث |
| واجهات البرمجة المستخدمة | 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 as username, Auth Token as passwordcurl -X GET "https://flex-api.twilio.com/v1/Configuration" \ -u "$TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN"مفتاح API (موصى به للإنتاج)
- انتقل إلى Twilio Console > Account > API keys & tokens
- انقر على Create API Key
- اختر نوع المفتاح Standard
- خزّن SID والسر بأمان
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 الخاص بك وصولاً كاملاً للحساب. للإنتاج، استخدم مفاتيح API مقيدة النطاق بدلاً من ذلك. يمكن إلغاء مفاتيح 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_SUBMITTEDنقاط نهاية واجهة البرمجة
يتكامل Tajo مع نقاط نهاية Twilio Flex وواجهات البرمجة ذات الصلة:
| نقطة النهاية | الطريقة | 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// }محفز حملة ما بعد المحادثة
// تشغيل متابعة 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 Plugin
// داخل Flex UI Plugin - إرسال البيانات إلى 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 | حد المعدل | ملاحظات |
|---|---|---|
| Flex API | 100 طلب/ثانية | لكل حساب |
| Conversations API | 100 طلب/ثانية | لكل حساب |
| TaskRouter API | 30 طلب قراءة/ثانية | لكل مساحة عمل |
| TaskRouter Events | 20 طلب/ثانية | لكل مساحة عمل |
Event Streams
لمعالجة الأحداث عالية الحجم، ضع في اعتبارك استخدام Twilio Event Streams بدلاً من استطلاع أحداث TaskRouter. يدفع Event Streams الأحداث في الوقت الفعلي عبر webhooks أو Kinesis.
استكشاف الأخطاء وإصلاحها
المشاكل الشائعة
| المشكلة | السبب | الحل |
|---|---|---|
| 401 Unauthorized | SID أو الرمز غير صالح | تحقق من Account SID وAuth Token في Twilio Console |
| 403 Forbidden | Flex غير مفعَّل | تأكد من تفعيل Flex على حساب Twilio الخاص بك |
| محادثات مفقودة | نطاق تاريخ خاطئ | وسّع نطاق تاريخ المزامنة أو تحقق من حالة المحادثة |
| المهام لا تُتبَع | عدم تطابق مساحة عمل TaskRouter | تحقق من SID مساحة العمل الصحيح |
| Plugin لا يعمل | مستمع الأحداث غير مُسجَّل | تحقق من نشر Flex plugin وتفعيله |
وضع التصحيح
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 بدلاً من Auth Tokens - يمكن تحديد نطاق مفاتيح API وإلغاؤها بشكل فردي
- استفد من Event Streams - الأحداث القائمة على الدفع أكثر كفاءة من استطلاع TaskRouter
- ابنِ Flex Plugin - استخدم UI plugin لالتقاط أحداث إتمام المهام في الوقت الفعلي
- عيّن القنوات باتساق - وحّد بيانات الصوت وSMS والدردشة في أحداث Brevo موحدة
- تتبع درجات CSAT - زامن بيانات الرضا مع Brevo للتقسيم القائم على التجربة
- راقب مقاييس قوائم الانتظار - استخدم بيانات وقت الانتظار لتشغيل تواصل استباقي مع العملاء
الأمان
- Account SID + Auth Token - مصادقة Twilio القياسية
- مفاتيح API - بيانات اعتماد قابلة للإلغاء وغير جذرية للاستخدام في الإنتاج
- HTTPS فقط - جميع اتصالات API مشفرة عبر TLS 1.2+
- التحقق من Webhook - تحقق من توقيعات Twilio webhook بـ
X-Twilio-Signature - الامتثال لـ PCI - Twilio Flex متوافق مع PCI DSS Level 1
- تخزين مشفر - بيانات الاعتماد مشفرة أثناء السكون في Tajo