Twilio Flex コネクタ

Twilio Flex コンタクトセンターを Brevo に接続し、Tajo を介して統合された顧客インタラクション履歴、会話後のマーケティングフロー、サポート駆動のエンゲージメント分析を実現します。

概要

プロパティ
プラットフォームTwilio Flex
カテゴリカスタム
セットアップの複雑さ上級
公式統合いいえ
同期データ顧客、会話、イベント
使用する APIFlex API、Conversations API、TaskRouter API
認証Account SID + Auth Token / API Key
ベース URLhttps://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 の標準認証方法を使用します。

アカウント資格情報

Terminal window
# 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 を安全に保存
Terminal window
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 への接続

Terminal window
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:
# 顧客フィールド
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

イベントマッピング

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/ConfigurationGETFlexFlex 設定を取得
/v1/InteractionsGETFlexインタラクションを一覧取得
/v1/ChannelsGETFlexFlex チャンネルを一覧取得
/v1/WebChannelsPOSTFlexWeb チャットチャンネルを作成
/v1/ConversationsGETConversations会話を一覧取得
/v1/Conversations/{sid}/MessagesGETConversations会話メッセージを一覧取得
/v1/Conversations/{sid}/ParticipantsGETConversations参加者を一覧取得
/v1/Workspaces/{sid}/TasksGETTaskRouterタスクを一覧取得
/v1/Workspaces/{sid}/WorkersGETTaskRouterワーカー(エージェント)を一覧取得
/v1/Workspaces/{sid}/TaskQueuesGETTaskRouterタスクキューを一覧取得
/v1/Workspaces/{sid}/EventsGETTaskRouterワークスペースイベントを一覧取得

コード例

コネクタの初期化

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 プラグイン統合

// 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.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 全体でレート制限を適用します。

APIレート制限備考
Flex API100 リクエスト/秒アカウント単位
Conversations API100 リクエスト/秒アカウント単位
TaskRouter API30 読み取りリクエスト/秒ワークスペース単位
TaskRouter Events20 リクエスト/秒ワークスペース単位

Event Streams

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

トラブルシューティング

一般的な問題

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

デバッグモード

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

接続テスト

Terminal window
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 で保存時に暗号化

関連リソース

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AIアシスタント

こんにちは!ドキュメントについて何でもお聞きください。