---
title: "Konektor Twilio Flex"
description: "Panduan integrasi Twilio Flex lengkap untuk menyinkronkan interaksi contact center, aktivitas agen, dan percakapan pelanggan dengan Brevo melalui Tajo."
url: https://tajo.io/in/docs/connectors/custom/twilio-flex/
markdown: https://tajo.io/in/docs/connectors/custom/twilio-flex.md
lang: id-ID
robots: noindex
---

Ajukan akses awal

Masukkan nama depan dan alamat email kerja Anda. Kami akan mengirim tautan untuk mengonfirmasi permintaan akses Tajo.

# Konektor Twilio Flex

Status konektor: Direncanakan Belum dibangun. Tajo belum menjalankan konektor ini.

| Field sumber | Field tujuan | Nilai contoh |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Hubungkan contact center Twilio Flex Anda ke Brevo untuk riwayat interaksi pelanggan yang terpadu, alur pemasaran pasca-percakapan, dan analitik engagement berbasis dukungan melalui Tajo.

## Ikhtisar

| Properti | Nilai |
| --- | --- |
| **Platform** | Twilio Flex |
| **Kategori** | Custom |
| **Kompleksitas setup** | Lanjutan |
| **Integrasi resmi** | Tidak |
| **Data yang disinkronkan** | Pelanggan, percakapan, event |
| **API yang digunakan** | Flex API, Conversations API, TaskRouter API |
| **Autentikasi** | Account SID + Auth Token / API Key |
| **Base URL** | `https://flex-api.twilio.com` |

## Fitur

- **Sinkronisasi percakapan** - Teruskan interaksi suara, SMS, WhatsApp, dan chat ke timeline Brevo
- **Pengayaan profil pelanggan** - Sinkronkan data pelanggan Flex ke atribut kontak Brevo
- **Kampanye pasca-interaksi** - Picu alur kerja Brevo setelah percakapan dukungan berakhir
- **Pelacakan event CSAT** - Sinkronkan hasil survei kepuasan sebagai event Brevo
- **Data aktivitas agen** - Lacak metrik performa agen untuk pelaporan operasional
- **Analitik antrean** - Teruskan data waktu tunggu dan pengabaian untuk optimalisasi pengalaman

## Prasyarat

Sebelum memulai, pastikan Anda memiliki:

1. Akun Twilio dengan Flex yang sudah aktif
2. Account SID dan Auth Token Twilio Anda
3. Instance Flex dengan channel aktif (suara, SMS, chat, atau WhatsApp)
4. Workspace TaskRouter yang sudah dikonfigurasi
5. Akun Brevo dengan akses API
6. Akun Tajo dengan langganan aktif

## Autentikasi

Twilio Flex menggunakan metode autentikasi standar Twilio.

### Kredensial akun

```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 Key (direkomendasikan untuk produksi)

1. Buka **Twilio Console** > **Account** > **API keys & tokens**
2. Klik **Create API Key**
3. Pilih tipe key **Standard**
4. Simpan SID dan Secret dengan aman

```bash
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 Anda memiliki akses penuh ke akun. Untuk produksi, gunakan API Key yang tercakup sebagai gantinya. API Key dapat dicabut satu per satu tanpa mengganggu integrasi lain.

### Menghubungkan ke Tajo

```bash
tajo connectors install twilio-flex \
  --account-sid $TWILIO_ACCOUNT_SID \
  --auth-token $TWILIO_AUTH_TOKEN \
  --flex-flow-sid $TWILIO_FLEX_FLOW_SID
```

## Konfigurasi

### Setup dasar

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

### Pemetaan field

Petakan data pelanggan dan interaksi Flex ke atribut 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
```

### Pemetaan event

```yaml
event_mapping:
  task.created: SUPPORT_REQUESTED
  task.completed: SUPPORT_RESOLVED
  task.canceled: SUPPORT_ABANDONED
  conversation.ended: CONVERSATION_ENDED
  survey.completed: CSAT_SUBMITTED
```

## Endpoint API

Tajo terintegrasi dengan endpoint API Twilio Flex dan API terkait berikut:

| Endpoint | Metode | API | Tujuan |
| --- | --- | --- | --- |
| `/v1/Configuration` | GET | Flex | Mengambil konfigurasi Flex |
| `/v1/Interactions` | GET | Flex | Menampilkan interaksi |
| `/v1/Channels` | GET | Flex | Menampilkan channel Flex |
| `/v1/WebChannels` | POST | Flex | Membuat channel web chat |
| `/v1/Conversations` | GET | Conversations | Menampilkan percakapan |
| `/v1/Conversations/{sid}/Messages` | GET | Conversations | Menampilkan pesan percakapan |
| `/v1/Conversations/{sid}/Participants` | GET | Conversations | Menampilkan peserta |
| `/v1/Workspaces/{sid}/Tasks` | GET | TaskRouter | Menampilkan task |
| `/v1/Workspaces/{sid}/Workers` | GET | TaskRouter | Menampilkan worker (agen) |
| `/v1/Workspaces/{sid}/TaskQueues` | GET | TaskRouter | Menampilkan antrean task |
| `/v1/Workspaces/{sid}/Events` | GET | TaskRouter | Menampilkan event workspace |

## Contoh kode

### Inisialisasi konektor

```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
});
```

### Menyinkronkan riwayat percakapan

```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
// }
```

### Pemicu kampanye pasca-percakapan

```javascript
// Trigger a Brevo follow-up after a support conversation ends
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');
});
```

### Integrasi plugin Flex

```javascript
// Inside a Flex UI Plugin - send data to 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

Alamat `example.com` di atas adalah placeholder sampai endpoint Tajo tersedia.

## Batas rate

Twilio menerapkan batas rate di seluruh API-nya:

| API | Batas rate | Catatan |
| --- | --- | --- |
| **Flex API** | 100 permintaan/detik | Per akun |
| **Conversations API** | 100 permintaan/detik | Per akun |
| **TaskRouter API** | 30 permintaan baca/detik | Per workspace |
| **TaskRouter Events** | 20 permintaan/detik | Per workspace |

Event Streams

Untuk pemrosesan event bervolume tinggi, pertimbangkan menggunakan Twilio Event Streams daripada melakukan polling event TaskRouter. Event Streams mengirimkan event secara real-time melalui webhook atau Kinesis.

## Pemecahan masalah

### Masalah umum

| Masalah | Penyebab | Solusi |
| --- | --- | --- |
| 401 Unauthorized | SID atau token tidak valid | Periksa Account SID dan Auth Token di Twilio Console |
| 403 Forbidden | Flex belum aktif | Pastikan Flex sudah diaktifkan pada akun Twilio Anda |
| Percakapan hilang | Rentang tanggal salah | Perluas rentang tanggal sinkronisasi atau periksa status percakapan |
| Task tidak terlacak | Workspace TaskRouter tidak cocok | Pastikan SID workspace yang digunakan sudah benar |
| Plugin tidak terpicu | Event listener belum terdaftar | Pastikan plugin Flex sudah di-deploy dan aktif |

### Mode debug

```yaml
connectors:
  twilio_flex:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### Menguji koneksi

```bash
tajo connectors test twilio-flex
# ✓ Flex API connection successful
# ✓ Conversations API accessible
# ✓ TaskRouter workspace found
# ✓ Agent list readable
# ✓ Queue configuration loaded
```

## Praktik terbaik

1. **Gunakan API Key daripada Auth Token** - API Key dapat dicakup dan dicabut satu per satu
2. **Manfaatkan Event Streams** - Event berbasis push lebih efisien daripada polling TaskRouter
3. **Bangun plugin Flex** - Gunakan plugin UI untuk menangkap event penyelesaian task secara real-time
4. **Petakan channel secara konsisten** - Normalkan data suara, SMS, dan chat menjadi event Brevo yang terpadu
5. **Lacak skor CSAT** - Sinkronkan data kepuasan ke Brevo untuk segmentasi berbasis pengalaman
6. **Pantau metrik antrean** - Gunakan data waktu tunggu untuk memicu komunikasi pelanggan yang proaktif

## Keamanan

- **Account SID + Auth Token** - Autentikasi standar Twilio
- **API Key** - Kredensial non-root yang dapat dicabut untuk penggunaan produksi
- **Hanya HTTPS** - Seluruh komunikasi API dienkripsi via TLS 1.2+
- **Validasi webhook** - Verifikasi tanda tangan webhook Twilio dengan `X-Twilio-Signature`
- **Kepatuhan PCI** - Twilio Flex bersertifikat PCI DSS Level 1
- **Penyimpanan terenkripsi** - Kredensial dienkripsi saat disimpan di Tajo

## Sumber daya terkait

- [Konektor Gorgias](https://tajo.io/in/docs/connectors/support/gorgias)
- [Konektor Jira](https://tajo.io/in/docs/connectors/custom/jira)
- [Skill Customer Sync](https://tajo.io/in/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/in/docs/contact-management)
