---
title: "Twilio Flex 커넥터"
description: "Tajo를 통해 Twilio Flex의 콘택트 센터 상호작용, 상담원 활동, 고객 대화를 Brevo와 동기화하는 완전한 통합 가이드입니다."
url: https://tajo.io/kr/docs/connectors/custom/twilio-flex/
markdown: https://tajo.io/kr/docs/connectors/custom/twilio-flex.md
lang: ko-KR
robots: noindex
---

Tajo 사전 이용 신청

이름과 회사 이메일 주소를 입력하세요. 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 콘택트 센터를 Tajo를 통해 Brevo에 연결하여 통합된 고객 상호작용 기록, 대화 후 마케팅 플로, 지원 기반 참여 분석을 구현하십시오.

## 개요

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

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

### 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 | 웹 채팅 채널 생성 |
| `/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는 웹훅 또는 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 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에서 자격 증명이 저장 시 암호화됨

## 관련 리소스

- [Gorgias 커넥터](https://tajo.io/kr/docs/connectors/support/gorgias)
- [Jira 커넥터](https://tajo.io/kr/docs/connectors/custom/jira)
- [고객 동기화 스킬](https://tajo.io/kr/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/kr/docs/contact-management)
