SIPcall Guide
Last updated
Last updated
SIPcall은 애플리케이션과 일반 전화 간 전화를 연결 할 수 있도록 구현한 것입니다. 통화 발신자는 caller, 착신자를 callee라는 통신 용어로 구분합니다. Omnitalk SDK를 이용하여 offerCall(), answerCall()을 각각 호출하고 해당 이벤트 메시지에 대응하는 것으로 전화 기능을 간단히 구현할 수 있습니다.
에서는 audiocall의 흐름을 sequence diagram으로 보여줍니다.
Developer's Guide의 에서 장치 설정 및 개발 공통 사항을 참고하시기 바랍니다.
Omnitalk SDK 초기화를 제외한 모든 API 기능은 유효한 세션의 존재를 전제로 하고 있습니다. 세션의 생성을 위해 createSession API를 호출합니다. 사용하고 싶은 번호나 문자열을 userId로 전달해 등록할 수 있으며 생략시엔 Omnitalk 서버에서 부여한 임의의 id를 리턴받을 수 있습니다.
offerCall API를 이용하여 전화 발신 요청을 할 수 있습니다.
callType: 전화 타입을 의미합니다. CallType은 Omnitalk SDK에서 enum type으로 제공합니다. SIP 통화를 위해서는 sipcall
을 전달하시면 됩니다.
callee: 전화 수신자의 실제 전화번호(일반전화, 모바일) 전달하시면 됩니다.
record: Optional 파라미터로, 녹음 여부를 의미합니다. (defalut = false)
애플리케이션이 makeSipNum API를 이용하여 callNumber를 생성한 상태에서 caller가 offerCall(전화 요청)을 하여RINGING_EVENT
를 받은 경우, callee는 별도의 인수를 전달하지 않고 answerCall()을 호출하여 전화를 수신할 수 있습니다. 수신 거절을 하고싶은 경우 RINGING_EVENT
에서 받은 caller의 session을 인수로 전달하여 leave()를 호출하시면 됩니다.
애플리케이션이 callNumber를 생성하기 전 caller가 offerCall(전화 요청)을 하여 RINGING_EVENT
를 받지 못한 경우, callee는 answerCall()의 파라미터 callType과 caller에 직접 인수를 전달하여 전화를 수신할 수 있습니다. 이 경우, 옴니톡 서버에서 애플리케이션 백엔드로 별도의 이벤트로 call type과 caller의 정보를 제공드릴 예정입니다.
callType: 전화 타입을 의미합니다. caller가 offerCall()을 호출할 떄와 동일하게 sipcall
을 전달하시면 됩니다.
caller: caller(전화 발신자)의 userId를 전달하시면 됩니다.
음성 통화 연결이 성공하면 caller, callee 양층 모두 CONNECTED_EVENT
를 수신합니다.
전화 연결 전, 또는 전화 통화중에 입력(마이크) 장치를 변경할 수 있도록 API를 제공합니다.
setAudioInput() 또는 set AudioOutput()에 deviceId를 전달하여 입출력 장치를 변경할 수 있습니다.
offerCall 호출 성공시 caller는 RINGBACK_EVEVT
, callee는 RINGING_EVENT
를 수신합니다. ( 참고)
전화 통화중에 음소거를 할 수 있도록 API를 제공합니다. 사용법과 자세한 내용은 API Reference의 부분을 참조 바랍니다. mute/unmute API의 파라미터인 track type은 Omnitalk SDK에서 제공합니다. 예시는 아래와 같습니다.
우선, 사용 가능한 입력 장치 목록을 조회할 수 있는 를 통해서 사용하고자 하는 장치의 deviceId를 획득합니다.