의료 서비스를 위한 ElevenAgents: 인바운드 예약 일정 관리 에이전트 구축
- 작성자
- Nathan Pogue
- 게시일
- 최종 업데이트
듣기이 글 오디오로 듣기
전화는 여전히 의료 서비스의 첫 관문이지만, 연결이 꽉 막혀 있습니다. Mayo Clinic의 연구와 Epic의 사례 연구 데이터에 따르면 예약 일정 관리의 약 30%는 일반 업무 시간 외에 이루어집니다. 음성 사서함으로 연결되는 전화는 조용히 이루어지지 않는 예약이 되며, 이를 받아야 할 접수 직원은 과중한 업무에 시달리고 이직도 빠릅니다. 음성 에이전트는 이제 데모 단계를 넘어 이러한 공백을 메우는 방법이 되었고, 일정 관리는 가장 흔한 시작점입니다. 처리량이 많고, 반복적이며, 예측 가능하고, 임상적 판단이 필요 없는 접수 업무의 상당 부분을 차지하기 때문입니다.
의료 분야의 예약 일정 관리는 기준이 더 높습니다. 잘못된 시간대를 배정하거나 방문 사유를 잘못 알아들은 일은 단순한 불편이 아니라 안전 및 컴플라이언스 사고입니다. 접수 예약 에이전트에는 친근한 음성만으로는 부족합니다. 신뢰할 수 있는 신원 확인, 엄격한 가드레일, 사람에게 원활하게 에스컬레이션하는 경로, 보호 의료 정보를 처리할 수 있는 컴플라이언스 체계, 실제 예약 시스템에서 예약을 완료·변경·취소할 수 있는 역량이 필요합니다.
이 가이드에서는 바로 이를 ElevenAgents로 구축합니다. 샘플 EHR에 연결된 전화 접속형 에이전트가 예약을 처음부터 끝까지 생성, 변경, 취소하고, 필요할 때 담당자에게 연결합니다. 규제 대상 의료 환경을 위해 구축된 인프라에서 배포되며, 에이전트가 정해진 범위 안에서 작동하도록 지원하는 workflow, 가드레일, 테스트 및 분석 방법을 살펴봅니다.
이제 구축할 에이전트가 실시간 통화를 처음부터 끝까지 처리하는 데모를 살펴보세요:
사전 준비 사항
시작하려면 다음이 필요합니다:
- ElevenAgents 플랫폼과 ElevenLabs 음성에 접근할 수 있는 ElevenLabs 계정
- Twilio 계정과 전화번호.
- Twilio Verify에 대한 접근 권한
- 샌드박스 또는 개발자용 EHR 환경. 이 가이드에서는 HAPI FHIR를 사용합니다. 이는 HL7 FHIR 형식의 오픈소스 참조 구현체로, 합성 환자 기록을 검증하는 데 사용합니다.
- 병원의 캘린더 애플리케이션. 이 가이드에서는 ElevenLabs의 네이티브 통합을 Cal.com과 함께 사용합니다.
선택 사항
샌드박스 데이터에 접근할 수 없거나 데모 목적으로 따라 하고 있다면 HAPI FHIR R4 샌드박스 서버를 사용하고, 확인 단계에서 사용할 모의 환자 기록을 추가합니다. 터미널에서 다음 API 명령어를 모의 데이터와 함께 실행하세요:
쿼리가 정확히 하나의 기록을 반환할 때만 일치가 확인됩니다. 결과가 0개이면 일치하는 기록이 없다는 뜻이고, 2개 이상이면 검색 매개변수가 안전하게 진행하기에 충분히 구체적이지 않다는 뜻입니다.
아키텍처
이 가이드에서는 ElevenAgent와 네이티브로 통합된 Twilio 번호를 통해 작동하는 일정 관리 에이전트를 구축합니다. 인바운드 통화가 연결되면 에이전트는 제공되는 도구를 활용해 환자의 확인 정보와 예약 세부 사항을 수집합니다. 신규 진료 예약, 기존 예약 변경 또는 취소 여부를 처리하며, 필요 시 사람에게 통화를 연결할 수도 있습니다.

이 아키텍처와 도구를 사용하면 성공적인 통화 흐름은 다음 단계로 구성됩니다:
- 통화 시작: 환자가 에이전트에 연결된 Twilio 번호로 전화하면, 에이전트가 환자를 맞이하고 요청 의도를 파악합니다.
- EHR 검증: 에이전트가 EHR의 기록을 기준으로 환자 정보를 검증합니다.
- 확인: 에이전트가 SMS 도구를 사용해 최종 확인을 위한 일회용 비밀번호(OTP)를 환자의 전화번호로 전송합니다.
- 예약 또는 변경: 에이전트가 파악한 의도를 바탕으로 캘린더에서 작업합니다. 신규 예약의 경우 예약 정보를 수집하고 가능 시간을 확인하며, 예약 변경의 경우 기존 예약을 조회해 새 시간대를 찾고, 취소의 경우 기존 예약을 확인한 뒤 삭제합니다.
- 연결: 예약 또는 변경에 실패했거나, 환자가 사람과 통화하기를 요청했거나, 에이전트가 처리할 수 없는 다른 의도가 파악된 경우 통화가 상담원에게 연결됩니다.
- 확인 및 종료: 예약, 변경 또는 취소가 성공하면 에이전트가 통화 내용을 요약하고 친절하게 마무리합니다.
시스템 프롬프트와 에이전트 설정
효과적인 ElevenAgent를 구축하는 첫 단계는 시스템 프롬프트입니다. ElevenLabs의 프롬프팅 가이드에 따라, 모든 프로덕션 에이전트에 권장되는 핵심 구성 요소인 성격, 목표, 톤, 도구, 가드레일을 하나의 긴 지시문이 아닌 명확히 구분된 섹션으로 구성합니다.
의료 일정 관리 에이전트는 통화 상대의 실제 상황을 고려해야 합니다. 고령이거나, 통증을 겪고 있거나, 청력이 좋지 않거나, 전화한 이유로 불안한 사람일 수 있습니다. 성격과 톤 섹션에서는 따뜻하고 서두르지 않는 속도를 정하고, 응답을 짧고 대화체로 유지합니다. 날짜, 시간, 숫자도 화면을 읽는 방식이 아니라 사람이 말하는 방식으로 전달합니다. 목표 섹션은 신원 확인 후 발신자가 예약·변경·취소 중 무엇을 원하는지에 따라 가능 시간을 확인하고 시간대를 확정하거나, 기존 예약을 조회해 옮기거나, 삭제할 예약을 확인하는 순서로 흐름을 안내합니다. 도구에는 필요한 정확한 음성 형식의 입력값을 문서화합니다. 가드레일에는 이 분야 고유의 규칙을 담습니다. 발신자가 이미 공유한 정보보다 더 많은 PHI를 노출하지 않고, 도구가 실패했을 때 가능 시간이나 예약 세부 정보를 지어내지 않으며, 임상 질문은 발신자의 담당 의료진에게 안내하고, 긴급 증상이나 의료 응급상황을 설명하면 즉시 에스컬레이션합니다. 예약 작업 전 신원 확인은 한 번만 명시하는 것이 아니라 반복해야 하는 규칙입니다. 에이전트가 절대 놓쳐서는 안 되는 경계선입니다.
이제 추가 에이전트 구성을 설정할 수 있습니다. 첫 메시지, 다양한 언어( 언어 감지 시스템 도구가 활성화되어 있는지 확인), 원하는 LLM, 대화형 ElevenLabs 텍스트 음성 변환 모델 및 ElevenLabs 음성을 추가할 수 있습니다.
시스템 프롬프트 예시는 여기에서 확인할 수 있습니다.

가드레일
시스템 프롬프트의 가드레일 섹션은 지시문 수준의 규칙을 다루며 모델에서 높은 비중을 차지합니다. 하지만 프롬프트는 여전히 비결정적 계층이므로 긴 통화 중에는 흐트러질 수 있습니다. ElevenAgents는 자체 가드레일을 통해 독립적인 런타임 적용을 지원합니다. 여기에는 대화가 길어져도 시스템 프롬프트를 강화하는 Focus Guardrail, 에이전트가 응답하기 전에 프롬프트 인젝션 시도를 감지하는 Manipulation Guardrails, 모든 응답을 실시간으로 평가해 발신자가 듣기 전에 차단할 수 있는 Content 및 Custom Guardrails가 포함됩니다. 각 가드레일은 실행 모드(거의 지연 없는 스트리밍 또는 응답이 통과할 때까지 보류하는 차단 모드)와 트리거 발생 시 동작하는 종료 전략(통화 종료 또는 다음 턴에 수정 피드백을 주입해 재시도)을 설정합니다.
이 에이전트에는 의료 또는 병원별 규칙을 위한 커스텀 가드레일을 정의할 수 있습니다. 질환 진단이나 치료 권고, 청구 관련 질문, 약물 용량 안내, 면허를 갖춘 임상의의 조언을 대체하는 모든 응답을 차단합니다. 긴급 증상에는 사람에게 통화를 연결하는 피드백과 함께 재시도하도록 종료 전략을 설정하세요. 이렇게 하면 가드레일이 단순히 통화를 종료하는 대신 직원을 연결합니다.


도구
흐름의 각 단계에서는 환자와 대화하면서 특정 작업을 수행할 웹훅 및 통합 도구가 필요합니다.
EHR 확인 도구
환자의 EHR 기록을 기준으로 확인하려면 FHIR GET /Patient API 작업을 사용합니다. 성, 이름, 식별자, 생년월일을 LLM 입력 매개변수로 설정하고 HAPI FHIR 기본 URL을 가리키는 웹훅 도구로 추가하세요. 확인 단계의 첫 번째 도구 호출은 발신자의 이름과 생년월일을 하나의 쿼리로 엔드포인트에 전달합니다:
쿼리가 정확히 하나의 기록을 반환할 때만 일치가 확인되며, 이 조건이 충족되어야 에이전트가 예약 단계로 진행할 수 있습니다.
도구 JSON 예시는 여기에서 확인할 수 있습니다.
Twilio SMS 확인 도구
EHR 일치가 확인되면 확인 단계는 두 번째 인증 단계로 넘어갑니다. 환자에게 일회용 코드를 문자로 보내고, 다른 작업을 하기 전에 이를 확인합니다. 설정은 세 단계로 이루어집니다:
1. SMS 웹훅 도구 생성. send_SMS_verification 및 check_SMS_verification 두 도구를 구성하고 모두 Twilio Verify 서비스를 가리키도록 설정합니다. 각 도구의 URL 경로에는 Verify Service SID(Verify 서비스 설정의 VA... 값)가 필요하며, 시크릿으로 저장한 Account SID와 Auth Token으로 만든 Basic 인증 헤더도 필요합니다.
2. 시스템 변수로 수신자 설정. ElevenAgents는 시스템 변수를 제공하며, 모든 음성 통화에서 system__caller_id에 발신자의 전화번호를 자동으로 채웁니다. 따라서 발신자에게 번호를 소리 내어 말해 달라고 요청하는 대신 {{system_caller_id}} 를 To 매개변수로 전달하세요. 실제 EHR과 통합된 프로덕션 환경에서는 발신자 식별자가 아닌 환자 기록에 저장된 전화번호로 코드를 전송해야 합니다.
3. skip_turn 활성화. 이 시스템 도구를 웹훅 도구와 함께 추가하면 발신자가 문자를 찾는 동안 에이전트가 침묵을 유지할 수 있어, 멈춤 구간에 말을 덧붙이지 않습니다.
EHR 조회와 OTP 확인을 모두 통과한 발신자만 예약 단계로 진행할 수 있습니다.
두 도구의 JSON 예시는 여기 및 여기에서 확인할 수 있습니다.
캘린더 통합 도구
예약 단계에서는 실제 캘린더에서 가능 시간을 확인하고, 예약·변경·취소를 수행해야 합니다. Cal.com 통합 설정은 세 단계로 이루어집니다:
1. 통합 연결. 에이전트의 도구 탭에서 Cal.com 통합을 추가하고 Connect를 클릭하세요.
2. 이벤트 유형 고정. 각 캘린더 도구에는 이벤트 유형 ID가 필요하며, 이 ID는 Cal.com에 어떤 이벤트를 예약할지 알려 줍니다. 연결된 도구에서 이 값을 고정 매개변수로 설정하고, Cal.com 대시보드의 ID를 사용하세요.
3. 참석자 이메일 설정. 예약 도구에는 참석자 이메일도 필요합니다. 데모 목적으로는 확인 메시지가 받은편지함에 도착하도록 자신의 주소를 고정 매개변수로 설정하세요. 실제 EHR을 사용하는 프로덕션 환경에서는 하드코딩된 값이 아니라 환자 기록의 이메일을 사용해야 합니다.
이후 예약 흐름은 Greeting에서 파악한 의도에 따라 달라집니다. 신규 예약의 경우 에이전트는 calcom_get_available_slots를 호출해 시간대를 제안하기 전에 가능한 시간을 조회한 다음, calcom_create_booking을 호출합니다. 반드시 이 순서를 따라야 하며, 먼저 가능 시간을 확인해야 시간대 중복 예약을 방지할 수 있습니다. 예약 변경 또는 취소의 경우 먼저 calcom_find_bookings_by_attendee로 발신자의 기존 예약을 찾고, 해당 예약을 발신자와 확인한 다음 calcom_cancel_booking으로 삭제합니다. 예약 변경이라면 이전 예약을 취소하기 전에 새 시간대를 먼저 예약합니다.
상담원 연결
사람에게 연결하려면 ElevenLabs의 transfer_to_number 시스템 도구를 사용할 수 있습니다. Greeting, Verification, Booking 어디에서나 접근할 수 있도록 에이전트 수준에서 시스템 도구로 추가하세요. 연결 규칙에는 E.164 형식의 대상 전화번호와 실행 조건을 자연어로 추가합니다. LLM은 이러한 조건과 도구 설명을 바탕으로 언제 어디로 연결할지 결정합니다. 사람 상담원에게 통화 연결 사유를 안내하는 웜 핸드오프 메시지를 지원하므로, 기본값인 Conference 연결 유형을 유지하세요.
환자 여정 구조화
워크플로는 몇 가지 노드 유형으로 구성된 시각적 그래프 기반 대화 흐름입니다. 통화의 특정 단계를 위해 오케스트레이터 기본 에이전트 위에 시스템 프롬프트, 도구, 지식 베이스를 계층화하는 서브에이전트 노드, 특정 도구의 실행을 보장하고 성공 또는 실패에 따라 분기하는 디스패치 도구 노드, 핸드오프를 위한 에이전트 전송 및 번호 전송 노드, 통화를 마무리하는 종료 노드가 있습니다. 노드는 엣지로 연결되며, 순방향 엣지에는 모델이 실시간으로 평가해 경로를 결정하는 자연어 규칙인 LLM 조건을 추가할 수 있습니다. 에이전트는 Greeting, Verification, Booking, Transfer Notice, Close의 5개 서브에이전트 노드로 구성하며, 각 노드는 자체 도구 범위로 한정합니다. 또한 Transfer Notice에서 연결 가능한 Phone Number Transfer 노드 하나를 둡니다.
인사은 진입점입니다. 전화를 받고 병원을 소개하며, 연결하기 전에 환자의 의도를 파악합니다. 자체 도구는 없으며, 올바르게 라우팅할 만큼의 맥락만 수집합니다.
인증은 앞서 설명한 2단계 확인을 수행합니다. FHIR GET /Patient 도구로 발신자가 EHR 기록과 일치하는지 확인한 뒤, send_SMS_verification 및 check_SMS_verification 도구로 발신자가 진행하기 전에 일회용 코드를 전송하고 확인합니다. 두 관문을 모두 통과한 발신자만 진행하며, 그렇지 않은 모든 발신자는 Transfer Notice로 향하는 순방향 엣지를 따릅니다.
예약에는 앞선 섹션의 캘린더 도구가 있으며, Greeting에서 파악한 의도가 경로를 결정합니다. 신규 예약은 가능 시간을 확인하고 예약하며, 예약 변경은 기존 예약을 조회하고 새로 예약한 뒤 취소하며, 취소는 확인 후 취소합니다. 이 노드는 Transfer Notice로도 실패 개방(fail open)됩니다. 캘린더에 적합한 시간이 없거나, 발신자를 기존 예약과 연결할 수 없거나, 발신자가 직원과 통화하고 싶어 하는 경우 통화가 멈추지 않고 해당 엣지로 라우팅됩니다.
전환 안내는 나머지 workflow와 실제 핸드오프 사이에 위치합니다. 통화가 실제로 에이전트를 떠나기 전에 발신자에게 연결이 진행된다고 알리는 것(예: "지금 팀 담당자에게 연결해 드리겠습니다")만 담당하는 간단한 서브에이전트입니다. Greeting, Verification 또는 Booking에서 transfer_to_number를 직접 실행하는 대신 모든 연결 조건을 먼저 이 노드로 라우팅하면, 서브에이전트별 표현이 달라지더라도 발신자가 아무 안내 없이 연결되는 일이 없고 항상 해당 안내를 듣게 됩니다.
전화번호 전환는 transfer_to_number 도구를 기반으로 하며, Transfer Notice가 항상 전달하는 노드입니다. 이 노드의 규칙은 대상 번호와 상위 단계에서 전달된 동일한 조건(확인 실패, 명시적 요청, 완료할 수 없는 예약)을 연결하며, 발신자가 연결 안내를 들은 후 실제 핸드오프를 실행합니다.
종료는 예약이 성공한 경우에만 도달합니다. 발신자에게 예약 세부 사항을 다시 요약하고 따뜻하게 통화를 마무리합니다.
workflow JSON 템플릿 예시는 여기에서 확인할 수 있습니다.

분석 및 테스트
의료 음성 에이전트에서 대부분의 노력은 이상적인 경로가 아니라 통화가 계획대로 진행되지 않을 때도 모든 것이 올바르게 작동하게 하는 데 들어갑니다. ElevenAgents는 플랫폼에 내장된 테스트와 분석을 위해 구축되었습니다. 따라서 출시 전 테스트에 사용하는 동일한 평가 기준이 프로덕션의 모든 통화도 평가하며, 별도 도구를 연결하거나 결과를 조정할 필요가 없습니다.
성공 기준
성공 기준을 정의해 비즈니스 및 운영 목표에 맞는 구체적인 평가 기준을 수집하세요. Analysis 탭에서 각 기준은 LLM이 대화 기록에 실행하는 자연어 프롬프트이며, 근거와 함께 성공, 실패 또는 알 수 없음을 반환합니다. 이 에이전트의 기준에는 다음과 같은 항목이 포함될 수 있습니다:
patient_verified: "예약 단계로 진행하기 전에 에이전트가 EHR 조회와 SMS 일회용 코드를 모두 통해 발신자의 신원을 확인했다면 성공으로 표시합니다."appointment_booked: "환자의 예약이 완료되었다면 성공으로 표시합니다."appointment_changed: "환자가 기존 예약의 변경 또는 취소를 요청했고, 에이전트가 캘린더 이벤트를 업데이트하거나 삭제해 해당 변경을 완료한 후 결과를 발신자에게 확인해 주었다면 성공으로 표시합니다."call_escalated_when_requested: "발신자가 사람과 통화하기를 요청했고 에이전트가 통화를 연결했다면 성공으로 표시합니다. 발신자가 요청했는데 에이전트가 연결하지 않았다면 실패로 표시합니다."
데이터 수집
이 기준들을 데이터 수집 필드와 함께 사용할 수 있습니다. 예를 들어 requested_action(예약, 변경 또는 취소), appointment_date 또는 appointment_type을 추가할 수 있습니다. 이 값들은 모든 대화 기록에서 구조화된 문자열, 불리언 또는 숫자 값으로 추출되어 통화 후 웹훅을 통해 통화 결과를 추적하는 시스템으로 전달됩니다.

시뮬레이션 및 테스트
의료 분야에서 에이전트는 첫 실제 통화 전에 신뢰를 얻어야 합니다. 실패 모드는 환자 앞이 아니라 테스트에서 드러나야 합니다. 대화 시뮬레이션 API는 전체 흐름과 대상 구간 모두에서 현실적인 발신자 시나리오를 시뮬레이션하고, 프로덕션에서 사용하는 동일한 기준으로 결과를 자동 평가합니다. 별도의 테스트 전용 기준이 아니라 앞서 정의한 정확한 patient_verified 및 appointment_booked 검사를 사용합니다. 전체 통화에 대해 전체 시뮬레이션을 실행하거나, 대화 중간에서 시작하는 부분 시뮬레이션으로 단일 의사결정 지점을 검증할 수 있습니다. 후자는 전체 흐름을 다시 실행하지 않고 하나의 노드를 반복 개선하는 더 빠른 방법입니다.
이 에이전트에서는 이상적인 경로를 넘어서는 시나리오를 작성해야 합니다. 이름이 어떤 EHR 기록과도 일치하지 않는 발신자, OTP 입력을 두 번 실수하는 사람, 예약 대신 변경을 요청하는 환자, 확인 과정 중간에 명시적으로 사람을 요청하는 발신자 등이 있습니다. 이러한 명확하고 집중된 시나리오는 프로덕션에서 우연히 발생하기를 기다리는 대신 엣지 케이스, 도구 사용, 대체 로직을 포괄적으로 검증하게 해 줍니다.
Twilio 전화번호 연결
에이전트를 구축한 후 실제 번호에 연결하는 데는 몇 분밖에 걸리지 않습니다:
- ElevenLabs 대시보드에서 전화번호로 이동한 후 번호 가져오기를 클릭합니다.
- 라벨과 전화번호를 입력하고, Twilio 계정 SID 및 인증 토큰
- 을 입력합니다. 가져온 후 드롭다운에서 해당 번호를 에이전트에 할당합니다.
- 번호로 전화해 테스트한 후 Conversations 기록 대시보드에서 처음 몇 통의 통화가 예상대로 작동했는지 확인합니다.
실제 환자를 맞이할 준비
구축한 것은 단순히 전화를 받는 수준을 넘어서는 환자 일정 관리 에이전트입니다. 기록에 접근하기 전에 EHR과 2차 인증 OTP로 신원을 확인하고, Cal.com의 API를 통해 실시간 캘린더에서 직접 예약·변경·취소를 수행하며, 언제 물러나 사람에게 발신자를 연결해야 하는지도 알고 있습니다. 결정론적 workflow, 런타임 가드레일, 평가 기준은 팀에 의료 환경 배포에 필요한 감사 추적과 반복 가능한 테스트 방식을 제공합니다.
실제 운영을 시작하면 이 패턴의 가치가 드러납니다. 구축 중 정의한 평가 기준은 출시 기준이 됩니다. 에이전트가 이를 일관되게 통과하고 지표가 안정화되면 주관적 판단이 아니라 확신을 가지고 출시할 수 있습니다. 출시 후 학습은 시뮬레이션 테스트에서 프로덕션 대화 기록으로 전환됩니다. 단계적 출시부터 반복 개선을 멈춰야 할 시점까지의 이러한 실무는 이전 블로그에서 다룹니다.
HIPAA 준수를 위한 핵심 단계는 데이터 처리입니다. Zero Retention Mode를 활성화하면 통화가 끝나는 즉시 통화 녹음, 대화 기록, PII가 포함된 메타데이터가 삭제되어 전화 기반 배포에서 가장 큰 컴플라이언스 위험 요인을 차단합니다. 통화 후 웹훅과 함께 사용해도 가시성이 사라지지는 않습니다. 통화가 마무리되는 즉시 모든 예약 결과, 확인 결과, 평가 점수가 실시간으로 자체 시스템에 전송됩니다.
이제 에이전틱 음성 AI를 병원의 첫 관문에 배치할 수 있는 템플릿을 갖추었습니다. 일정 관리는 가장 많은 통화가 발생하는 시작점이며, 동일한 패턴은 환자 접수, 처방전 리필, 청구, 방문 후 후속 관리로 확장할 수 있습니다. 각 영역에서 이제 업무 시간 외 전화가 음성 사서함으로 넘어갈 필요가 없습니다. ElevenLabs의 Forward Deployed Engineering 팀은 의료 기관과 긴밀히 협력하여 이러한 배포를 구체적인 제품 기능으로 전환합니다. 의료 환경이 요구하는 컴플라이언스 체계를 갖춰 환자 대상 workflow를 ElevenAgents에 도입하려 한다면, 이 접근 방식을 사용해 보고 의견을 들려주세요.
.webp&w=3840&q=80)
.webp&w=3840&q=80)
.webp&w=3840&q=80)
.webp&w=3840&q=80)
