---
title: "موصل Twilio Flex"
description: "دليل تكامل Twilio Flex الشامل لمزامنة تفاعلات مركز الاتصال، ونشاط الوكلاء، ومحادثات العملاء مع Brevo عبر Tajo."
url: https://tajo.io/ar/docs/connectors/custom/twilio-flex/
markdown: https://tajo.io/ar/docs/connectors/custom/twilio-flex.md
lang: ar-SA
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 |
| **الفئة** | مخصص |
| **تعقيد الإعداد** | متقدم |
| **تكامل رسمي** | لا |
| **البيانات المُزامَنة** | عملاء، محادثات، أحداث |
| **واجهات البرمجة المستخدمة** | 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 as username, Auth Token as password
curl -X GET "https://flex-api.twilio.com/v1/Configuration" \
  -u "$TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN"
```

### مفتاح API (موصى به للإنتاج)

1. انتقل إلى **Twilio Console** > **Account** > **API keys & tokens**
2. انقر على **Create API Key**
3. اختر نوع المفتاح **Standard**
4. خزّن SID والسر بأمان

```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 الخاص بك وصولاً كاملاً للحساب. للإنتاج، استخدم مفاتيح API مقيدة النطاق بدلاً من ذلك. يمكن إلغاء مفاتيح API بشكل فردي دون تعطيل التكاملات الأخرى.

### الاتصال بـ 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:
  # 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
```

### تعيين الأحداث

```yaml
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 | سرد أحداث مساحة العمل |

## أمثلة على الكود

### تهيئة الموصل

```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
// تشغيل متابعة 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

```javascript
// داخل Flex UI Plugin - إرسال البيانات إلى 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 | حد المعدل | ملاحظات |
| --- | --- | --- |
| **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 وتفعيله |

### وضع التصحيح

```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 بدلاً من Auth Tokens** - يمكن تحديد نطاق مفاتيح API وإلغاؤها بشكل فردي
2. **استفد من Event Streams** - الأحداث القائمة على الدفع أكثر كفاءة من استطلاع TaskRouter
3. **ابنِ Flex Plugin** - استخدم UI plugin لالتقاط أحداث إتمام المهام في الوقت الفعلي
4. **عيّن القنوات باتساق** - وحّد بيانات الصوت وSMS والدردشة في أحداث Brevo موحدة
5. **تتبع درجات CSAT** - زامن بيانات الرضا مع Brevo للتقسيم القائم على التجربة
6. **راقب مقاييس قوائم الانتظار** - استخدم بيانات وقت الانتظار لتشغيل تواصل استباقي مع العملاء

## الأمان

- **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

## موارد ذات صلة

- [موصل Gorgias](https://tajo.io/ar/docs/connectors/support/gorgias)
- [موصل Jira](https://tajo.io/ar/docs/connectors/custom/jira)
- [مهارة مزامنة العملاء](https://tajo.io/ar/docs/skills/data-sync/customer-sync)
- [واجهة جهات اتصال Brevo](https://tajo.io/ar/docs/contact-management)
