할 수 있는 일
게이트웨이 오류 코드를 SDK 오류 클래스로 받아요. 전부 공통 베이스(TelloError /
TelloException)를 상속하고, 게이트웨이 코드를 code 필드에 담고 있어요.
분기는 code로 하고 메시지로는 하지 마세요. 메시지는 언제든 다시 쓰일 수 있는 표시용
문자열이에요.
명령 단위 오류는 소켓을 닫지 않고 error 이벤트 구독자에게도 전달돼요. 통화를 끝낸 오류라면
waitClosed가 그 오류를 다시 던져요.
명령 검증 · 세션 상태
createCall 거부: 계정 정책
전부 CallRefusedError예요. 통화가 만들어지기 전에 거부되므로 call.created도 callId도
과금도 없어요. 앞의 세 가지는 계정 소유자가 조치할 수 있어요.
createCall 거부: 서비스측 상태
전부 CallProviderError예요. 호출자가 원인을 만들지 않았고 고칠 수도 없어요.
게이트웨이는 이 거부들을 재시도하지 않아요. 거부는 한 번 전달되고 연결은 바로 다시
createCall을 낼 수 있는 상태가 돼요. 재시도 정책은 여러분 몫이고, 나중에 성공할 수 있는
것은 concurrentLimitExceeded · callProviderDraining · callProviderUnavailable
세 가지뿐이에요.
연결 종료
4401·1001 말고 다른 코드로 닫혀도, 통화가 진행 중이었다면 ConnectionClosedError가
나요. 통화가 없는 상태의 종료는 오류가 아니에요.
하트비트 타임아웃으로 끊길 때는 close 프레임 없이 소켓이 종료돼요.
주의사항
- 재연결·세션 재개 프로토콜이 없어요. 비정상 종료는 통화를 처음부터 다시 시작해요.
- 언어별로 클래스 이름만 달라요. Java는
Error 대신 Exception을 써요
(ValidationException 등).
관련 문서