Five9

Five9 AI Agent Connect를 사용해 Five9 VCC에서 ElevenAgents로 통화를 전환합니다.

이 가이드를 따르기 전에 ElevenLabs의 SIP 트렁크 및 사용자 지정 SIP 헤더 지원 방식을 이해하려면 SIP 트렁킹 가이드를 읽어보세요.

개요

이 가이드에서는 Five9 AI Agent Connect를 사용하여 ElevenAgents를 Five9 Virtual Contact Center(VCC)와 통합하는 방법을 설명합니다. Five9는 실시간 통화를 ElevenLabs 전화번호로 전환하고, ElevenLabs 에이전트가 대화를 처리한 후, ElevenLabs는 Five9 흐름이 계속 진행될 수 있도록 라우팅 또는 처리 결과 데이터를 Five9에 반환합니다.

Five9 통합 작동 방식

Five9 AI Agent Connect는 SIP를 통한 외부 전환을 사용하며, 통화 컨텍스트는 양방향으로 사용자 지정 SIP X- 헤더를 통해 교환됩니다.

  1. 인바운드 전환: Five9 IVR External Transfer Module이 통화를 ElevenLabs 전화번호로 전환하고, INVITE의 SIP X- 헤더로 통화 컨텍스트를 전송합니다.
  2. 대화: ElevenLabs가 통화에 응답하여 올바른 에이전트로 라우팅하고(필요한 경우 라우터 에이전트 경유), 발신자와의 대화를 처리합니다.
  3. 반환 경로: 대화가 끝나면 ElevenLabs가 라우팅 및 처리 결과 데이터를 SIP BYE에 X- 헤더로 추가합니다.
  4. AI 후 라우팅: Five9가 반환된 헤더를 통화 변수에 매핑하고, 상담원에게 전환하거나 통화를 종료하거나 처리 결과를 기록하는 등의 통화 흐름을 계속 진행합니다.

요구 사항

Five9 통합을 설정하기 전에 다음을 준비하세요.

  1. AI Agent Connect가 활성화된 Five9 VCC 도메인
  2. Five9 구성에 대한 관리자 액세스 또는 변경 작업을 수행할 Five9 구현 팀
  3. 전환된 통화를 처리할 ElevenLabs 계정 및 에이전트
  4. Five9 전환 대상에 사용할 수 있도록 ElevenLabs에 가져온 SIP 트렁크 전화번호

AI Agent Connect는 Five9 VCC의 유료 애드온이며 기본적으로 활성화되어 있지 않습니다. 이 통합을 시작하기 전에 Five9 계정 관리자에게 문의하여 도메인에서 활성화하세요.

구성 시작 전에 양측 팀은 전환 전화번호, 각 방향으로 전송할 헤더 이름, 라우팅 값 및 테스트 계획에 합의해야 합니다.

ElevenLabs 설정

1

전환 전화번호 가져오기

SIP 트렁킹 가이드에 따라 Five9가 통화를 전환할 전화번호를 가져오세요. 사용자 지정 SIP 헤더와 BYE 헤더를 사용하려면 SIP 트렁크 전화번호가 필요합니다.

+1 국가 코드가 포함된 E.164 형식(예: +18005550100)으로 번호를 가져오세요. Five9는 이 형식으로 전환을 전송하며, 형식이 일치하지 않으면 전환에 실패합니다.

2

에이전트 할당

단일 에이전트가 Five9의 모든 통화를 처리하는 경우 전화번호 대시보드에서 해당 에이전트를 전화번호에 직접 할당하세요.

여러 에이전트가 하나의 전환 번호를 공유하는 경우에는 대신 라우터 에이전트를 할당하고 하나의 번호로 여러 에이전트 라우팅을 따르세요.

3

반환 헤더 구성

대화 중 에이전트가 설정하는 동적 변수를 Five9에서 예상하는 SIP BYE 헤더 이름에 매핑하세요. BYE 헤더 구성을 참조하세요.

4

테스트 통화 실행

Five9로 테스트 통화를 진행하고 인바운드 헤더가 동적 변수로 도착하며 BYE 헤더가 예상대로 반환되는지 확인하세요. 인바운드 헤더 값은 대화 기록의 Phone Call 탭에서 확인할 수 있습니다.

하나의 번호로 여러 에이전트 라우팅

단일 Five9 전환 번호를 통해 여러 ElevenLabs 에이전트로 통화를 라우팅하려면 전화번호에 라우터 에이전트를 할당하고 Five9에서 X-AgentID와 같은 헤더로 대상 에이전트를 전송하도록 설정하세요.

인바운드 X- 헤더는 동적 변수로 노출되므로, 라우터 에이전트에서 X-AgentID를 {{sip_agentid}}로 사용할 수 있습니다. 라우터 에이전트에 에이전트 전환 도구를 구성하고, 예상되는 각 X-AgentID 값에 대해 전환 규칙을 추가하여 통화를 처리할 에이전트에 매핑하세요.

이렇게 하면 에이전트마다 별도의 전화번호를 프로비저닝하지 않아도 됩니다.

Five9에서 ElevenLabs로 전송되는 헤더

Five9는 INVITE의 SIP X- 헤더로 통화 메타데이터를 전송할 수 있습니다. 헤더 이름은 X- 접두사를 제거하고, 소문자로 변환하고, 하이픈을 밑줄로 바꾼 다음, sip_ 접두사를 추가하여 정규화됩니다.

헤더동적 변수설명
X-CallANI{{sip_callani}}발신자의 전화번호입니다.
X-CallDNIS{{sip_calldnis}}수신 전화번호입니다.
X-CallID{{sip_callid}}고유한 Five9 통화 식별자입니다.
X-CallSessionID{{sip_callsessionid}}현재 세션의 식별자입니다.
X-CallCampaign{{sip_callcampaign}}Five9 캠페인 이름입니다.
X-AgentID{{sip_agentid}}라우터 에이전트를 통한 라우팅에 사용되는 대상 ElevenLabs 에이전트입니다.

에이전트 프롬프트, 첫 메시지 및 도구에서 이 변수를 사용해 대화를 개인화하세요.

예약된 헤더 X-Call-ID 및 X-Caller-ID는 system__call_sid 및 system__caller_id 시스템 동적 변수에 매핑됩니다. Five9는 하이픈이 없는 X-CallID 및 X-CallANI를 전송하며, 이들은 대신 sip_callid 및 sip_callani로 정규화됩니다. 프롬프트에서 참조하기 전에 테스트 통화 중 어떤 변수가 채워지는지 확인하세요.

ElevenLabs에서 Five9로 반환되는 헤더

ElevenLabs는 SIP BYE로 라우팅 및 보고 데이터를 반환합니다. 다음 헤더 이름은 Five9 AI Agent Connect에 권장되는 규칙입니다.

헤더설명
X-RouteTypeFive9가 수행할 작업입니다(예: SkillTransfer).
X-RouteValue작업의 대상입니다(예: Five9 스킬 이름).
X-RouteReason고객 의도 등 라우팅 결정의 컨텍스트입니다.
X-ConversationId로그 상관관계를 위한 ElevenLabs 대화 식별자입니다.

Five9 흐름에 필요한 추가 X- 헤더를 반환할 수 있습니다. 각 헤더 값은 에이전트의 동적 변수에서 가져오므로, 에이전트가 대화 중 이 변수를 설정해야 합니다.

BYE 헤더 구성

BYE 헤더는 에이전트 동적 변수의 최종 값을 Five9에 반환합니다. 전화번호의 inbound_trunk_config에서 attributes_to_headers를 사용하여 각 동적 변수 이름을 헤더 이름에 매핑하세요. 에이전트가 설정하는 변수와 system__conversation_id 같은 시스템 동적 변수를 모두 매핑할 수 있습니다.

import os
from dotenv import load_dotenv
from elevenlabs import ElevenLabs, InboundSipTrunkConfigRequestModel
load_dotenv()
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
elevenlabs.conversational_ai.phone_numbers.update(
phone_number_id="phnum_8901k4t9z5defmb8vh3e9361y7nj",
inbound_trunk_config=InboundSipTrunkConfigRequestModel(
attributes_to_headers={
"route_type": "X-RouteType",
"route_value": "X-RouteValue",
"route_reason": "X-RouteReason",
"system__conversation_id": "X-ConversationId",
}
),
)

헤더 값은 에이전트 도구 또는 웹훅 재정의를 통해 통화 중 설정된 값을 포함하여, 대화 종료 시점의 동적 변수 값입니다. 에이전트가 종료 시 route_type을 SkillTransfer로, route_value를 billing_support로 설정한 통화는 다음 BYE 헤더를 생성합니다.

X-RouteType: SkillTransfer
X-RouteValue: billing_support
X-RouteReason: Customer needs help with an invoice
X-ConversationId: conv_7401k6a2b8cxyzmn9pq3r5s7t1uv

그런 다음 Five9는 발신자를 billing_support 스킬로 라우팅합니다.

권장 라우팅 값

Five9 흐름에서 직접 분기할 수 있도록 X-RouteType 값은 단순하고 예측 가능하게 유지하세요.

X-RouteTypeX-RouteValue 예시설명
SkillTransferbilling_support특정 Five9 스킬 큐로 통화를 전환합니다.
PhoneTransfer+18005550199외부 전화번호로 통화를 전환합니다.
Hangup비어 있음AI 상호작용 후 통화를 종료합니다.
DispositionOnlyResolved통화를 종료하고 특정 처리 결과를 기록합니다.

Five9 설정

일반적으로 Five9 구현 팀은 다음을 수행합니다.

  1. Five9 도메인에 AI Agent Connect를 활성화합니다.
  2. Five9 IVR 전환 흐름을 구성합니다.
  3. ElevenLabs 전화번호를 전환 대상으로 추가합니다.
  4. External Transfer Module을 구성합니다.
  5. ElevenLabs로 전송되는 아웃바운드 X- 헤더를 구성합니다.
  6. ElevenLabs에서 반환되는 인바운드 X- 헤더를 구성합니다.
  7. 반환된 헤더를 Five9 통화 변수에 매핑합니다.
  8. 해당 변수를 기준으로 분기하는 AI 후 라우팅 로직을 구성합니다.
  9. 엔드투엔드 테스트 통화를 진행합니다.

문제 해결

  • ElevenLabs 전화번호가 SIP 트렁크 번호로 가져와졌고 에이전트가 할당되어 있는지 확인하세요.
  • Five9 External Transfer Module에 구성된 전환 대상이 가져온 번호와 일치하는지 확인하세요.
  • 방화벽에서 구성된 전송 및 포트의 SIP 시그널링 트래픽을 허용하고 RTP 포트가 차단되지 않았는지 확인하세요.
  • Five9가 INVITE에서 X- 접두사와 함께 헤더를 전송하는지 확인하세요.
  • 정규화된 변수 이름을 확인하세요. X-AgentID는 {{X-AgentID}} 또는 {{agent_id}}가 아니라 {{sip_agentid}}가 됩니다.
  • 어떤 헤더가 도착했는지 확인하려면 대화 기록의 Phone Call 탭을 살펴보세요.
  • 사용자 지정 헤더는 system__call_sid 및 system__caller_id 시스템 변수를 재정의할 수 없습니다.
  • 통화를 수신하는 전화번호의 inbound_trunk_config에 attributes_to_headers가 설정되어 있는지 확인하세요.
  • 키는 동적 변수 이름이고 값은 헤더 이름이어야 하며, 그 반대가 아닌지 확인하세요.
  • 에이전트가 대화 중 해당 동적 변수를 실제로 설정하는지 확인하세요. 설정되지 않은 변수는 헤더 값을 생성하지 않습니다.
  • Five9가 전환되는 모든 통화에서 X-AgentID를 전송하는지 확인하세요.
  • 각 X-AgentID 값에 라우터 에이전트의 일치하는 전환 규칙이 있는지 확인하세요.
  • 라우터 에이전트의 전환 규칙이 {{sip_agentid}}를 참조하는지 확인하세요.

유용한 링크