Twilio Flex Connector

เชื่อมต่อ Twilio Flex contact center กับ Brevo เพื่อประวัติการโต้ตอบลูกค้าที่รวมกัน เวิร์กโฟลว์การตลาดหลังการสนทนา และ analytics การมีส่วนร่วมที่ขับเคลื่อนด้วยการสนับสนุนผ่าน Tajo

ภาพรวม

คุณสมบัติค่า
แพลตฟอร์มTwilio Flex
หมวดหมู่แบบกำหนดเอง
ความซับซ้อนในการตั้งค่าขั้นสูง
การผสานรวมอย่างเป็นทางการไม่
ข้อมูลที่ซิงค์ลูกค้า การสนทนา เหตุการณ์
APIs ที่ใช้Flex API, Conversations API, TaskRouter API
การยืนยันตัวตนAccount SID + Auth Token / API Key
Base URLhttps://flex-api.twilio.com

ฟีเจอร์

  • การซิงค์การสนทนา - ส่งต่อการโต้ตอบทางเสียง SMS WhatsApp และแชทไปยัง timelines ของ Brevo
  • การเพิ่มความสมบูรณ์โปรไฟล์ลูกค้า - ซิงค์ข้อมูลลูกค้า Flex กับแอตทริบิวต์ผู้ติดต่อ Brevo
  • แคมเปญหลังการโต้ตอบ - ทริกเกอร์เวิร์กโฟลว์ Brevo หลังจากการสนทนาสนับสนุนสิ้นสุด
  • การติดตามเหตุการณ์ CSAT - ซิงค์ผลการสำรวจความพึงพอใจเป็นเหตุการณ์ Brevo
  • ข้อมูลกิจกรรมเจ้าหน้าที่ - ติดตาม performance metrics ของเจ้าหน้าที่สำหรับรายงานการดำเนินงาน
  • Queue analytics - ส่งต่อข้อมูลเวลารอและการละทิ้งสำหรับการปรับปรุงประสบการณ์

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:

  1. บัญชี Twilio ที่เปิดใช้งาน Flex
  2. Twilio Account SID และ Auth Token ของคุณ
  3. Flex instance ที่มี channels ที่ใช้งานอยู่ (เสียง SMS แชท หรือ WhatsApp)
  4. TaskRouter workspace ที่กำหนดค่าแล้ว
  5. บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
  6. บัญชี Tajo ที่มีการสมัครสมาชิกที่ใช้งานอยู่

การยืนยันตัวตน

Twilio Flex ใช้วิธีการยืนยันตัวตนมาตรฐานของ Twilio

ข้อมูลประจำตัวบัญชี

Terminal window
# 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 (แนะนำสำหรับ Production)

  1. ไปที่ Twilio Console > Account > API keys & tokens
  2. คลิก Create API Key
  3. เลือกประเภท key เป็น 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 กับ API Key

Auth Token ของคุณมีสิทธิ์เข้าถึงบัญชีทั้งหมด สำหรับ production ใช้ scoped API Keys แทน API Keys สามารถถูกเพิกถอนแยกกันโดยไม่รบกวนการผสานรวมอื่น

การเชื่อมต่อกับ 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:
# 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

API Endpoints

Tajo ผสานรวมกับ Twilio Flex และ API endpoints ที่เกี่ยวข้องต่อไปนี้:

EndpointเมธอดAPIจุดประสงค์
/v1/ConfigurationGETFlexดูการกำหนดค่า Flex
/v1/InteractionsGETFlexแสดงรายการ interactions
/v1/ChannelsGETFlexแสดงรายการ Flex channels
/v1/WebChannelsPOSTFlexสร้าง web chat channel
/v1/ConversationsGETConversationsแสดงรายการการสนทนา
/v1/Conversations/{sid}/MessagesGETConversationsแสดงรายการข้อความการสนทนา
/v1/Conversations/{sid}/ParticipantsGETConversationsแสดงรายการผู้เข้าร่วม
/v1/Workspaces/{sid}/TasksGETTaskRouterแสดงรายการ tasks
/v1/Workspaces/{sid}/WorkersGETTaskRouterแสดงรายการ workers (เจ้าหน้าที่)
/v1/Workspaces/{sid}/TaskQueuesGETTaskRouterแสดงรายการ task queues
/v1/Workspaces/{sid}/EventsGETTaskRouterแสดงรายการเหตุการณ์ workspace

ตัวอย่างโค้ด

เริ่มต้น Connector

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

ทริกเกอร์แคมเปญหลังการสนทนา

// 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');
});

การผสานรวม Flex Plugin

// 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.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 บังคับใช้ rate limits ในทุก APIs:

APIขีดจำกัดอัตราหมายเหตุ
Flex API100 คำขอ/วินาทีต่อบัญชี
Conversations API100 คำขอ/วินาทีต่อบัญชี
TaskRouter API30 คำขออ่าน/วินาทีต่อ workspace
TaskRouter Events20 คำขอ/วินาทีต่อ workspace

Event Streams

สำหรับการประมวลผลเหตุการณ์ปริมาณสูง ควรพิจารณาใช้ Twilio Event Streams แทนการ polling TaskRouter events Event Streams ส่ง push events แบบเรียลไทม์ผ่าน webhooks หรือ Kinesis

การแก้ไขปัญหา

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
401 UnauthorizedSID หรือ token ไม่ถูกต้องตรวจสอบ Account SID และ Auth Token ใน Twilio Console
403 ForbiddenFlex ไม่ได้เปิดใช้งานตรวจสอบว่า Flex ถูกเปิดใช้งานบนบัญชี Twilio ของคุณ
การสนทนาหายไปช่วงวันที่ไม่ถูกต้องขยาย sync date range หรือตรวจสอบสถานะการสนทนา
Tasks ไม่ถูกติดตามTaskRouter workspace ไม่ตรงกันตรวจสอบ workspace SID ที่ถูกต้อง
Plugin ไม่ทำงานEvent listener ไม่ได้ลงทะเบียนตรวจสอบว่า Flex plugin ถูก deploy และใช้งานอยู่

โหมด Debug

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

ทดสอบการเชื่อมต่อ

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

แนวทางปฏิบัติที่ดีที่สุด

  1. ใช้ API Keys แทน Auth Tokens - API Keys สามารถกำหนดขอบเขตและเพิกถอนแยกกันได้
  2. ใช้ Event Streams - เหตุการณ์แบบ push มีประสิทธิภาพมากกว่าการ polling TaskRouter
  3. สร้าง Flex Plugin - ใช้ UI plugin เพื่อจับเหตุการณ์การสำเร็จงานแบบเรียลไทม์
  4. แมป channels อย่างสม่ำเสมอ - ปรับมาตรฐานข้อมูลเสียง SMS และแชทเป็นเหตุการณ์ Brevo ที่รวมกัน
  5. ติดตามคะแนน CSAT - ซิงค์ข้อมูลความพึงพอใจกับ Brevo สำหรับการแบ่งกลุ่มตามประสบการณ์
  6. ตรวจสอบ queue metrics - ใช้ข้อมูลเวลารอเพื่อทริกเกอร์การสื่อสารกับลูกค้าเชิงรุก

ความปลอดภัย

  • Account SID + Auth Token - การยืนยันตัวตน Twilio มาตรฐาน
  • API Keys - ข้อมูลประจำตัวที่ไม่ใช่ root สามารถเพิกถอนได้สำหรับ production
  • HTTPS เท่านั้น - การสื่อสาร API ทั้งหมดเข้ารหัสผ่าน TLS 1.2+
  • การตรวจสอบ Webhook - ตรวจสอบลายเซ็น webhook ของ Twilio ด้วย X-Twilio-Signature
  • ความสอดคล้องกับ 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

สวัสดี! ถามฉันเกี่ยวกับเอกสารได้เลย