---
title: "Twilio Flex コネクタ"
description: "Tajo を介して Twilio Flex のコンタクトセンターでのやり取り、エージェント活動、顧客との会話を Brevo と同期するための完全な Twilio Flex 統合ガイド。"
url: https://tajo.io/jp/docs/connectors/custom/twilio-flex/
markdown: https://tajo.io/jp/docs/connectors/custom/twilio-flex.md
lang: ja-JP
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 |
| **カテゴリ** | カスタム |
| **セットアップの複雑さ** | 上級 |
| **公式統合** | いいえ |
| **同期データ** | 顧客、会話、イベント |
| **使用する API** | 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. Flex が有効化された Twilio アカウント
2. Twilio Account SID と Auth Token
3. アクティブなチャンネル(音声、SMS、チャット、または WhatsApp)を持つ Flex インスタンス
4. 設定済みの TaskRouter ワークスペース
5. API アクセス可能な Brevo アカウント
6. 有効なサブスクリプションを持つ Tajo アカウント

## 認証

Twilio Flex は Twilio の標準認証方法を使用します。

### アカウント資格情報

```bash
# Basic Auth: Account SID をユーザー名、Auth Token をパスワードとして使用
curl -X GET "https://flex-api.twilio.com/v1/Configuration" \
  -u "$TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN"
```

### API Key(本番環境で推奨)

1. **Twilio Console** > **Account** > **API keys & tokens** に移動
2. **Create API Key** をクリック
3. **Standard** キータイプを選択
4. SID と Secret を安全に保存

```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 には完全なアカウントアクセス権があります。本番環境では、代わりにスコープ付きの 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:
  # 顧客フィールド
  identity: FLEX_IDENTITY
  friendly_name: FIRSTNAME
  attributes.email: email
  attributes.phone: SMS

  # インタラクションメトリクス
  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

  # カスタム属性
  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
```

## API エンドポイント

Tajo は以下の Twilio Flex および関連 API エンドポイントと統合します。

| エンドポイント | メソッド | API | 目的 |
| --- | --- | --- | --- |
| `/v1/Configuration` | GET | Flex | Flex 設定を取得 |
| `/v1/Interactions` | GET | Flex | インタラクションを一覧取得 |
| `/v1/Channels` | GET | Flex | Flex チャンネルを一覧取得 |
| `/v1/WebChannels` | POST | Flex | Web チャットチャンネルを作成 |
| `/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 プラグイン統合

```javascript
// Flex UI プラグイン内 - 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 全体でレート制限を適用します。

| API | レート制限 | 備考 |
| --- | --- | --- |
| **Flex API** | 100 リクエスト/秒 | アカウント単位 |
| **Conversations API** | 100 リクエスト/秒 | アカウント単位 |
| **TaskRouter API** | 30 読み取りリクエスト/秒 | ワークスペース単位 |
| **TaskRouter Events** | 20 リクエスト/秒 | ワークスペース単位 |

Event Streams

大量のイベント処理には、TaskRouter イベントをポーリングする代わりに Twilio Event Streams の使用を検討してください。Event Streams は Webhook または Kinesis を介してリアルタイムでイベントをプッシュします。

## トラブルシューティング

### 一般的な問題

| 問題 | 原因 | 解決策 |
| --- | --- | --- |
| 401 Unauthorized | SID またはトークンが無効 | Twilio Console で Account SID と Auth Token を確認 |
| 403 Forbidden | Flex が有効化されていない | Twilio アカウントで Flex が有効化されているか確認 |
| 会話の欠落 | 日付範囲が間違っている | 同期日付範囲を拡大するか会話の状態を確認 |
| タスクがトラッキングされない | TaskRouter ワークスペースの不一致 | 正しいワークスペース SID を確認 |
| プラグインが発火しない | イベントリスナーが登録されていない | Flex プラグインがデプロイされアクティブか確認 |

### デバッグモード

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

### 接続テスト

```bash
tajo connectors test twilio-flex
# ✓ Flex API 接続成功
# ✓ Conversations API にアクセス可能
# ✓ TaskRouter ワークスペースが見つかりました
# ✓ エージェントリスト読み取り可能
# ✓ キュー設定がロードされました
```

## ベストプラクティス

1. **Auth Token よりも API Key を使用する** - API キーはスコープ付きで個別に取り消せます
2. **Event Streams を活用する** - プッシュベースのイベントは TaskRouter のポーリングよりも効率的
3. **Flex プラグインを構築する** - UI プラグインを使用してタスク完了イベントをリアルタイムでキャプチャ
4. **チャンネルを一貫してマッピングする** - 音声、SMS、チャットデータを統一された Brevo イベントに正規化
5. **CSAT スコアをトラッキングする** - エクスペリエンス駆動のセグメンテーションのため満足度データを Brevo に同期
6. **キューメトリクスを監視する** - 待機時間データを使用してプロアクティブな顧客コミュニケーションをトリガー

## セキュリティ

- **Account SID + Auth Token** - 標準的な Twilio 認証
- **API キー** - 本番使用向けの取り消し可能な非ルート資格情報
- **HTTPS のみ** - すべての API 通信は TLS 1.2 以上で暗号化
- **Webhook 検証** - `X-Twilio-Signature` で Twilio Webhook 署名を検証
- **PCI コンプライアンス** - Twilio Flex は PCI DSS Level 1 準拠
- **暗号化されたストレージ** - 資格情報は Tajo で保存時に暗号化

## 関連リソース

- [Gorgias コネクタ](https://tajo.io/jp/docs/connectors/support/gorgias)
- [Jira コネクタ](https://tajo.io/jp/docs/connectors/custom/jira)
- [顧客同期スキル](https://tajo.io/jp/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/jp/docs/contact-management)
