Twilio Flex 커넥터

Twilio Flex 콘택트 센터를 Tajo를 통해 Brevo에 연결하여 통합된 고객 상호작용 기록, 대화 후 마케팅 플로, 지원 기반 참여 분석을 구현하십시오.

개요

속성
플랫폼Twilio Flex
카테고리Custom
설정 복잡도고급
공식 통합아니오
동기화 데이터고객, 대화, 이벤트
사용되는 APIFlex API, Conversations API, TaskRouter API
인증Account SID + Auth Token / API Key
Base 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 대 API Key

Auth Token은 전체 계정 접근 권한을 가집니다. 프로덕션 환경에서는 범위 지정된 API Key를 대신 사용하십시오. API Key는 다른 통합을 방해하지 않고 개별적으로 폐기할 수 있습니다.

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/WebChannelsPOSTFlex웹 채팅 채널 생성
/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는 웹훅 또는 Kinesis를 통해 실시간으로 이벤트를 푸시합니다.

문제 해결

일반적인 문제

문제원인해결 방법
401 Unauthorized잘못된 SID 또는 토큰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 Key는 범위 지정 및 개별 폐기 가능
  2. Event Streams 활용 - 푸시 기반 이벤트가 TaskRouter 폴링보다 효율적
  3. Flex 플러그인 구축 - UI 플러그인을 사용하여 태스크 완료 이벤트를 실시간으로 캡처
  4. 채널을 일관되게 매핑 - 음성, SMS, 채팅 데이터를 통합된 Brevo 이벤트로 정규화
  5. CSAT 점수 추적 - 경험 기반 세그먼테이션을 위해 만족도 데이터를 Brevo에 동기화
  6. 대기열 지표 모니터링 - 대기 시간 데이터를 사용하여 사전 고객 커뮤니케이션 트리거

보안

  • Account SID + Auth Token - 표준 Twilio 인증
  • API Keys - 폐기 가능하며 루트가 아닌 프로덕션용 자격 증명
  • HTTPS 전용 - 모든 API 통신이 TLS 1.2+를 통해 암호화됨
  • 웹훅 검증 - X-Twilio-Signature로 Twilio 웹훅 서명 확인
  • 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 어시스턴트

안녕하세요! 문서에 대해 무엇이든 물어보세요.