Skip to main content

할 수 있는 일

게이트웨이가 보내는 이벤트를 타입별로 구독해요. 핸들러는 동기·비동기 모두 되고 등록 순서대로 처리돼요. 핸들러가 예외를 던져도 수신 루프는 죽지 않아요. 원본 프레임은 언제나 raw에서 볼 수 있어요. SDK가 승격하지 않은 필드가 필요할 때 쓰세요.
핸들러는 연결 전에 등록하세요. 연결 후 등록하면 초기 프레임을 놓쳐요.

공통 필드

통화 스트림 이벤트는 type·version·sessionId·callId·timestamp를 공통으로 실어요. call.summaryerror는 스트림 이벤트가 아니라 명령 응답이에요. 게이트웨이가 sessionId·timestamp를 보내지 않으므로 두 필드가 비어 있어요. 필드명 표기는 언어별 관례를 따라요. Python은 snake_case(turn_index), Go는 PascalCase(TurnIndex)예요.

통화 진행

call.created가 초기 상태 queued를 뜻해요. call.statusChanged는 상태가 queued에서 바뀐 뒤부터 와요.

명령 응답

명령이 검증되어 넘어갔다는 접수 확인일 뿐이에요. answer가 실제로 말해진 것은 뒤따르는 agent.turn으로 확인해요. sendDtmf는 톤이라 애초에 agent.turn이 없어요.

종단

종단 이벤트가 오면 통화 스트림이 끝나요. 취소는 종단 이벤트가 아니라 call.statusChanged(status: cancelled)로 와요. waitClosed는 넷 중 아무거나에서 풀려요.

그 밖

auth.ok는 연결 함수가 내부에서 소비하고 다시 내보내지 않아요. call.summarydurationSeconds·transcript·summary·creditCharged는 null일 수 있어요.

통화 상태

statuspreviousStatus에 들어가는 값이에요.

주의사항

  • dialing·ringing은 건너뛸 수 있어요. 이미 응답된 통화는 inProgress로 바로 가므로 중간 상태에 의존하지 마세요.
  • 진행 상태는 직전 발행 상태와 중복 제거돼요. 같은 상태가 연속으로 오지 않아요.

관련 문서