Sinch SIP 트렁킹

Sinch Elastic SIP Trunking을 ElevenLabs Agents에 연결합니다.

이 가이드를 따르기 전에 ElevenLabs SIP 트렁킹 가이드 및 Sinch Voice SIP 트렁킹 가이드를 먼저 읽어보세요.

개요

이 가이드에서는 Sinch Voice 애플리케이션을 ElevenLabs Agents에 직접 연결하는 방법을 설명합니다. 이 통합을 사용하면 Sinch 번호와 라우팅은 그대로 유지하면서 ElevenLabs가 음성 AI 에이전트 경험을 처리합니다.

Sinch SIP 트렁킹 작동 방식

Sinch SIP 트렁크는 Sinch 네트워크와 ElevenLabs 플랫폼 간의 양방향 연결입니다.

  1. 수신 통화: Sinch Voice 애플리케이션에 할당된 DID가 통화를 수신합니다. Sinch는 트렁크 수신 설정의 정적 엔드포인트로 구성된 ElevenLabs 오리지네이션 주소에 INVITE를 전송합니다.
  2. 발신 통화: ElevenLabs에서 시작한 통화는 애플리케이션의 정규화된 도메인 이름(FQDN) SIP 주소로 전송되며, Sinch가 이를 PSTN으로 라우팅합니다.
  3. 인증: Sinch는 발신 인증(SIP 자격 증명)을 요구하며 트렁크로 들어오는 트래픽에 대해 ACL 인증(IP 허용 목록)을 지원합니다.

요구 사항

시작하기 전에 다음을 준비했는지 확인하세요.

  1. 에이전트가 구성된 활성 ElevenLabs 계정
  2. Sinch Build 대시보드에서 음성 애플리케이션을 만든 Sinch 계정
  3. Sinch에서 구매하여 애플리케이션에 할당한 전화번호(DID) 최소 1개

수신 통화 구성(Sinch에서 ElevenLabs로)

애플리케이션의 착신 전환을 ElevenLabs SIP 주소로 지정합니다.

1

Sinch Build 대시보드에 로그인

Sinch 계정에 로그인한 후 연결할 애플리케이션으로 이동합니다.

2

ElevenLabs용 정적 엔드포인트 추가

애플리케이션의 착신 전환 설정에서 통화 이벤트 핸들러를 SIP Forwarding으로 업데이트하고 ElevenLabs 오리지네이션 주소를 대상으로 하는 정적 SIP URI를 추가합니다.

  • DID: 전화를 걸 Sinch 전화번호
  • 주소: sip.rtc.elevenlabs.io
  • 포트 및 전송 방식: 5061/TLS, 5060/TCP

예: sip:15551234567@sip.rtc.elevenlabs.io:5061;transport=tls.

ElevenLabs 워크스페이스에서 격리된 데이터 레지던시 리전 또는 정적 IP SIP 인프라를 사용하는 경우 sip.rtc.elevenlabs.io 대신 해당 엔드포인트를 사용하세요. 사용 가능한 리전은 데이터 레지던시를 참조하세요.

3

애플리케이션에 DID 할당

에이전트에 연결할 전화번호를 이 애플리케이션에 할당합니다.

발신 통화 구성(ElevenLabs에서 Sinch로)

발신 통화의 경우 ElevenLabs는 Sinch 애플리케이션에 SIP INVITE를 전송하고 이를 통해 인증합니다.

1

Sinch 리전의 FQDN 확인

Sinch 리전의 SIP FDQN을 확인합니다. 이는 ElevenLabs에 입력할 터미네이션 주소입니다. sip: 접두사는 제외하고 호스트 이름만 입력하세요.

2

SIP 자격 증명 입력

Sinch 애플리케이션의 키와 시크릿을 안전하게 복사합니다. ElevenLabs에서 사용자 이름과 비밀번호로 사용됩니다.

3

착신 전환 번호

Sinch 애플리케이션은 통화를 착신 전환 주소로 전달합니다. 발신 통화 요청에 지정된 번호로 전화를 걸려면 애플리케이션 설정에서 이 필드를 비워 두세요.

ElevenLabs에서 설정 완료

1

SIP 트렁크 전화번호 가져오기

다음 설정을 사용하여 SIP 트렁킹 가이드에 따라 Sinch 번호를 가져옵니다.

설정값
전화번호Sinch DID(예: 15551234567)
전송 방식TLS
미디어 암호화TCP의 경우 Disabled, 트렁크가 TLS 및 SRTP로 설정된 경우 Allowed 또는 Required
주소Sinch 트렁크 FQDN, 호스트 이름만 입력
SIP 트렁크 사용자 이름Sinch 애플리케이션 키
SIP 트렁크 비밀번호Sinch 애플리케이션 시크릿

양쪽에서 전송 방식 및 암호화 설정을 일치시키세요.

2

에이전트 할당

Phone Numbers 대시보드에서 번호에 에이전트를 할당합니다. 이제 DID로 걸려오는 통화가 해당 에이전트에 연결됩니다.

3

발신 통화 테스트

전화번호 메뉴 또는 발신 통화 API를 통해 에이전트에서 Sinch 애플리케이션을 경유해 전화를 겁니다.

curl -X POST https://api.elevenlabs.io/v1/convai/sip-trunk/outbound-call \
-H "xi-api-key: $ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "agent_7101k5zvyjhmfg983brhmhkd98n6",
"agent_phone_number_id": "phnum_8901k4t9z5defmb8vh3e9361y7nj",
"to_number": "+15551234567"
}'

전체 요청 스키마는 SIP 트렁크를 통한 발신 통화를, 발신 캠페인 실행 방법은 일괄 통화를 참조하세요.

전환 구성

에이전트는 transfer_to_number 시스템 도구를 사용해 통화를 상담원에게 전환합니다.

Sinch 트렁크에서는 컨퍼런스 전환만 작동합니다. SIP REFER 및 블라인드 전환은 실패합니다.

컨퍼런스 전환

ElevenLabs는 Sinch 트렁크를 통해 대상 번호로 전화를 걸고, 양쪽 참가자를 컨퍼런스에 연결한 다음 에이전트를 연결 해제합니다.

대신 Sinch Voice API v2 사용

위 설정에서는 ElevenLabs가 전체 음성 경로를 처리합니다. Sinch가 통화 제어를 담당해야 한다면 Sinch Voice API v2를 사용해 통화에 응답하고 자체 로직을 적용한 뒤 릴레이 서버 없이 SVAML을 통해 두 번째 연결을 ElevenLabs 에이전트에 브리지할 수 있습니다. 이 모델은 에이전트가 참여하기 전에 자동 응답기 감지, 통화 녹음, 번호 마스킹 등의 Sinch 기능을 삽입하려는 경우나, 에이전트가 더 큰 Sinch 통화 흐름의 한 단계인 경우에 더 적합합니다.

다른 일반적인 시나리오는 Sinch의 SIP를 통한 ElevenLabs AI 에이전트 통합 튜토리얼을 참조하세요.

문제 해결

  • 트렁크의 정적 수신 엔드포인트가 사용하려는 포트 및 전송 방식으로 sip.rtc.elevenlabs.io를 대상으로 하는지 확인하세요.
  • DID가 해당 트렁크에 할당되어 있는지 확인하세요.
  • ElevenLabs의 번호가 Sinch에서 전송하는 번호와 일치하는지(앞의 + 포함) 확인하세요.
  • 엔드포인트 또는 ACL을 변경한 후 최소 60초 기다렸다가 다시 테스트하세요.
  • 방화벽에서 TCP의 경우 5060, TLS의 경우 5061 포트의 SIP 시그널링을 허용하고 RTP를 차단하지 않는지 확인하세요.
  • ElevenLabs의 SIP 트렁크 사용자 이름 및 비밀번호가 Sinch 트렁크의 자격 증명과 일치하는지 확인하세요.
  • Address 필드에 sip: 접두사 없이 트렁크 FQDN만 포함되어 있는지 확인하세요.
  • 대상 국가에 대한 국가 권한이 트렁크에서 활성화되어 있는지 확인하세요.
  • 표시하는 발신자 ID가 Sinch에서 해당 트렁크에 허용하는 번호인지 확인하세요.
  • ACL 인증을 사용하는 경우 ElevenLabs 시그널링은 분산된 주소 풀에서 도착한다는 점에 유의하세요. 다이제스트 인증으로 전환하거나 정적 IP 인프라로 이전하세요.
  • 방화벽에서 양방향 UDP RTP를 허용하며 특정 정적 주소로 제한되지 않는지 확인하세요.
  • 미디어 암호화가 일치하는지 확인하세요. TLS Sinch 트렁크는 SRTP를 예상하므로 ElevenLabs에서 미디어 암호화를 Allowed 또는 Required로 설정하세요.
  • 문제가 TLS 또는 SRTP 관련인지 분리하려면 TCP 및 미디어 암호화를 비활성화한 상태로 테스트하세요.
  • 트렁크에서 G711이 제공되는지 확인하세요. ElevenLabs는 G711 및 G722를 지원합니다.

BYE에 대한 481 응답은 일반적으로 요청이 해당 통화의 다이얼로그 상태를 보유하지 않은 SIP 서버에 도달했음을 의미합니다. 공유 sip.rtc.elevenlabs.io 주소가 아니라 200 OK에서 반환된 Contact URI로 다이얼로그 내 요청을 전송하세요. TLS를 통한 BYE 또는 REFER가 인증서 유효성 검사에 실패하면, 트렁크 인증서가 발급된 FQDN을 전화번호 설정의 Remote domains 필드에 추가하세요.

FAQ

프로덕션 환경에서는 Sinch 트렁크의 SRTP 미디어와 함께 5061의 TLS를 사용하세요. 5060의 TCP는 검증을 위한 적절한 시작점입니다. UDP는 ElevenLabs에서 실험적 기능이므로 프로덕션 트래픽에 사용해서는 안 됩니다.

ElevenLabs는 G711(8kHz) 및 G722(16kHz)를 지원합니다. 공통으로 사용할 수 있도록 Sinch 트렁크에서 G711을 계속 제공하세요.

수신 INVITE의 커스텀 X- 헤더는 동적 변수로 노출됩니다. 예를 들어 X-Contact-ID는 {{sip_contact_id}}가 됩니다. X-Call-ID 및 X-Caller-ID는 system__call_sid 및 system__caller_id에 매핑됩니다. 전체 정규화 규칙은 SIP 트렁킹을 참조하세요.

유용한 링크