Telnyx Edge를 사용해 내구성 있는 보험 인증 콜러 구축하기
요약
본 글은 보험 인증과 같은 복잡하고 취약한 전화 워크플로우를 '내구성 있는 음성 액터(durable voice actor)' 패턴으로 모델링하는 방법을 설명합니다. Telnyx Edge와 Agent SDK를 사용하여 전화를 걸고, IVR을 거치며, 구두 답변을 캡처하여 상태를 유지하는 견고한 시스템 구축 방안을 제시합니다.
핵심 포인트
- 전화 통화를 일회성 요청이 아닌 '상태를 가지는 작업(stateful job)'으로 처리해야 합니다.
- Telnyx Edge 액터는 전화를 걸고, DTMF를 보내며, 구두 답변을 캡처하는 등 복잡한 과정을 관리합니다.
- 액터를 사용하면 음성 사서함, 끊긴 통화, 재시도 백오프 등 다양한 실패 상황에 대응할 수 있습니다.
- 이 패턴은 앱이 복잡한 통신 환경에서도 흐름을 유지하고 생존성을 확보하게 합니다.
보험 인증은 겉보기에는 간단하지만 내부적으로는 복잡한 워크플로우 중 하나입니다.
환자가 예약되었습니다. 클리닉은 환자의 보장 범위가 활성화되어 있는지 알아야 합니다. 누군가가 보험사에 전화를 걸고, IVR(Interactive Voice Response)을 거치며, 회원 ID를 입력하고, 구두로 전달되는 적격성 결과를 듣고, 그 결과를 프론트 데스크 메모로 기록합니다.
이 과정은 반복적이지만 결코 사소하지 않습니다. 전화 통화는 실패할 수 있습니다. IVR은 루프에 빠지기도 합니다. 음성 사서함(Voicemail)이 남을 수도 있습니다. 구두 답변은 일관성이 없습니다. 그리고 만약 그 결과가 누락되면, 비용은 클리닉이나 환자에게 전가될 수 있습니다.
저는 이 워크플로우를 '내구성 있는 음성 액터(durable voice actor)'로 모델링하는 Telnyx 코드 예제를 만들었습니다.
코드 예제:
[https://github.com/team-telnyx/telnyx-code-examples/tree/main/insurance-verification-caller]
워크플로우 (The Flow)
프론트 데스크 시스템은 회원 ID, 플랜(plan), 제공업체 정보가 담긴 인증 작업을 시작합니다.
이후 Telnyx Edge 액터가 해당 작업을 소유하게 됩니다. 이 액터는 보험사에 전화를 걸고, 메뉴를 이동시키기 위해 DTMF(Dual-Tone Multi-Frequency) 숫자를 보내며, 구두로 전달되는 적격성 응답을 캡처하고, Jev Decision Models에 트랜스크립트를 점수화하도록 요청하며, 간결한 SMS 판정을 프론트 데스크로 전송합니다.
이 액터는 또한 다음과 같은 지루한 부분들까지 처리합니다:
- 음성 사서함(voicemail)
- 끊긴 통화(dropped calls)
- 긴 대기 시간(long holds)
- 재시도 백오프(retry backoff)
- 시도 로깅(attempt logging)
- 중복 SMS 방지(duplicate SMS prevention)
- 워크플로우 중간의 pod 재시작
이것이 제가 이 샘플을 좋아하는 이유입니다. 전화 통화를 취약한 일회성 요청이 아니라 상태를 가지는 작업(stateful job)으로 다루기 때문입니다.
Telnyx가 이 패턴에 적합한 이유 (Why Telnyx Fits This Pattern)
이 예제는 커뮤니케이션 기본 요소(communication primitives)로 Telnyx를 사용합니다:
- 아웃바운드 콜을 걸기 위한 음성 및 통화 제어(Voice and Call Control)
- 보험사 IVR을 구동하기 위한
send_dtmf기능 - 구두 답변을 캡처하는 트랜스크립션(transcription)
- 보험사의 응답을 구조화하는 Jev Decision Models
- 프론트 데스크에 알림을 보내는 메시징(Messaging)
- 내구성 있는 액터, 예약된 재시도, 상태 관리를 위한 Telnyx Edge Agent SDK
가장 중요한 단계는 이 조각들을 액터(actor) 안에 넣는 것입니다. 이 액터가 검증 작업을 수행합니다. 액터는 이미 시도했는지 여부, 녹취록이 있는지 여부, 어떤 판결이 내려졌는지 여부, 그리고 SMS를 이미 보냈는지 여부를 알고 있습니다.
이는 앱이 일반적인 통신사의 복잡한 상황 속에서도 흐름을 잃지 않고 생존할 수 있다는 것을 의미합니다.
의사 결정 모델의 역할
통신사 IVR(Interactive Voice Response) 언어는 깔끔하게 정리되어 있다고 보장할 수 없습니다. 한 시스템은 다음과 같이 말할 수 있습니다:
The member is active and eligible for coverage.
또 다른 시스템은 다음과 같이 말할 수 있습니다:
We are unable to verify eligibility at this time.
샘플은 녹취록을 Jev Decision Models로 전송하고 구조화된 결과를 요청합니다:
choice: covered | not_covered | needs_verification
score: 0-100 confidence
noul: 0-1 confidence this is a hard no-coverage result
그 후 앱은 이를 프런트 데스크 알림으로 변환합니다:
- 보장 확인됨 (Coverage confirmed)
- 미보장, 방문 전 검증 필요 (Not covered, verify before visit)
- 검증 필요 (Needs verification)
이것은 의사(clinical agent)가 아닙니다. 진단하거나, 치료를 승인하거나, 치료를 거부하거나, 청구 직원(billing staff)을 대체하지 않습니다. 이는 전화 기반의 자격 확인을 자동화하고 불확실한 사례는 사람에게 다시 라우팅합니다.
로컬에서 실행하기
git clone https://github.com/team-telnyx/telnyx-code-examples.git
cd telnyx-code-examples/insurance-verification-caller
npm install
...
샘플은 기본적으로 데모 모드(demo mode)로 설정됩니다:
DEMO_MODE=true
이를 통해 실제 전화를 걸거나 라이브 SMS 메시지를 보내지 않고도 액터의 흐름을 검사할 수 있습니다.
라이브 모드의 경우, Telnyx API 키, 통신사 번호(carrier number), 발신자 ID(outbound caller ID), 프런트 데스크 SMS 목적지, 그리고 배포를 구성해야 합니다:
telnyx-edge ship
다음 단계
프로덕션 버전은 검증 결과를 직원들이 이미 사용하는 시스템과 연결해야 합니다. 즉, PMS(Practice Management System), EHR(Electronic Health Record), 청구 대기열(billing queue), 또는 사전 승인 워크플로우(prior authorization workflow)와 같은 시스템입니다.
또한, 지불자별(payer-specific) IVR 프로필, 더 풍부한 웹훅 라우팅(webhook routing), 시도 기록 장부(attempt ledger)에 대한 감사 뷰(audit views), 그리고 재시도율(retry rates)을 위한 운영 대시보드 등을 추가할 수 있습니다. 만약 특정 지불자의 IVR이 매일 아침 실패하기 시작한다면, 직원들이 이를 확인할 수 있어야 합니다.
핵심 경계는 동일하게 유지되어야 합니다. 즉, 시스템이 통신 루프(communications loop)를 처리하고 구조화된 적격성 신호(structured eligibility signal)를 생성하는 것입니다. 최종적인 행정적 및 환자 대면 결정은 여전히 사람이 담당합니다.
리소스
- 코드: https://github.com/team-telnyx/telnyx-code-examples/tree/main/insurance-verification-caller
- 콜 제어 다이얼(Call Control dial): https://developers.telnyx.com/api-reference/call-commands/dial
- DTMF 전송(Send DTMF): https://developers.telnyx.com/api-reference/call-commands/send-dtmf
- 통화 중 녹취록(In-call transcription): https://developers.telnyx.com/docs/voice/stt/in-call-transcription
- 메시징 문서(Messaging docs): https://developers.telnyx.com/docs/messaging
- Telnyx AI 문서: https://developers.telnyx.com/docs/inference
- Telnyx Edge 문서: https://developers.telnyx.com/docs/edge
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기