SIPcall Guide
SIPcall์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ผ๋ฐ ์ ํ ๊ฐ ์ ํ๋ฅผ ์ฐ๊ฒฐ ํ ์ ์๋๋ก ๊ตฌํํ ๊ฒ์ ๋๋ค. ํตํ ๋ฐ์ ์๋ caller, ์ฐฉ์ ์๋ฅผ callee๋ผ๋ ํต์ ์ฉ์ด๋ก ๊ตฌ๋ถํฉ๋๋ค. Omnitalk SDK๋ฅผ ์ด์ฉํ์ฌ offerCall(), answerCall()์ ๊ฐ๊ฐ ํธ์ถํ๊ณ ํด๋น ์ด๋ฒคํธ ๋ฉ์์ง์ ๋์ํ๋ ๊ฒ์ผ๋ก ์ ํ ๊ธฐ๋ฅ์ ๊ฐ๋จํ ๊ตฌํํ ์ ์์ต๋๋ค.
Call Flow ์์๋ audiocall์ ํ๋ฆ์ sequence diagram์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
Step 0. SDK ์ด๊ธฐํ ๋ฐ ๊ฐ์ฒด ์์ฑ
Developer's Guide์ Pre-requisite์์ ์ฅ์น ์ค์ ๋ฐ ๊ฐ๋ฐ ๊ณตํต ์ฌํญ์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
Step 1. ์ธ์
์์ฑ
Omnitalk SDK ์ด๊ธฐํ๋ฅผ ์ ์ธํ ๋ชจ๋ API ๊ธฐ๋ฅ์ ์ ํจํ ์ธ์ ์ ์กด์ฌ๋ฅผ ์ ์ ๋ก ํ๊ณ ์์ต๋๋ค. ์ธ์ ์ ์์ฑ์ ์ํด createSession API๋ฅผ ํธ์ถํฉ๋๋ค. ์ฌ์ฉํ๊ณ ์ถ์ ๋ฒํธ๋ ๋ฌธ์์ด์ userId๋ก ์ ๋ฌํด ๋ฑ๋กํ ์ ์์ผ๋ฉฐ ์๋ต์์ Omnitalk ์๋ฒ์์ ๋ถ์ฌํ ์์์ id๋ฅผ ๋ฆฌํด๋ฐ์ ์ ์์ต๋๋ค.
await sdk.createSession();Step 2. ๋ฐ์
offerCall API๋ฅผ ์ด์ฉํ์ฌ ์ ํ ๋ฐ์ ์์ฒญ์ ํ ์ ์์ต๋๋ค.
callType: ์ ํ ํ์ ์ ์๋ฏธํฉ๋๋ค. CallType์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. SIP ํตํ๋ฅผ ์ํด์๋
sipcall์ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.callee: ์ ํ ์์ ์์ ์ค์ ์ ํ๋ฒํธ(์ผ๋ฐ์ ํ, ๋ชจ๋ฐ์ผ) ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.
record: Optional ํ๋ผ๋ฏธํฐ๋ก, ๋ น์ ์ฌ๋ถ๋ฅผ ์๋ฏธํฉ๋๋ค. (defalut = false)
await sdk.offerCall(
callType: CallType.sipcall,
callee : '01011119999'
);offerCall ํธ์ถ ์ฑ๊ณต์ caller๋ RINGBACK_EVEVT, callee๋ RINGING_EVENT๋ฅผ ์์ ํฉ๋๋ค. (Event Message ์ฐธ๊ณ )
Step 3. ์์
callee๊ฐ callNumber๋ฅผ ์์ฑํ ์ํ์์ ์ ํ ์์ฒญ์ด ์์๋
์ ํ๋ฆฌ์ผ์ด์
์ด makeSipNum API๋ฅผ ์ด์ฉํ์ฌ callNumber๋ฅผ ์์ฑํ ์ํ์์ caller๊ฐ offerCall(์ ํ ์์ฒญ)์ ํ์ฌRINGING_EVENT๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ, callee๋ ๋ณ๋์ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์๊ณ answerCall()์ ํธ์ถํ์ฌ ์ ํ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ์์ ๊ฑฐ์ ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ RINGING_EVENT์์ ๋ฐ์ caller์ session์ ์ธ์๋ก ์ ๋ฌํ์ฌ leave()๋ฅผ ํธ์ถํ์๋ฉด ๋ฉ๋๋ค.
callee๊ฐ callNumber๋ฅผ ์์ฑํ๊ธฐ ์ ์ ํ ์์ฒญ์ด ์์ ๋
์ ํ๋ฆฌ์ผ์ด์
์ด callNumber๋ฅผ ์์ฑํ๊ธฐ ์ caller๊ฐ offerCall(์ ํ ์์ฒญ)์ ํ์ฌ RINGING_EVENT๋ฅผ ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ, callee๋ answerCall()์ ํ๋ผ๋ฏธํฐ callType๊ณผ caller์ ์ง์ ์ธ์๋ฅผ ์ ๋ฌํ์ฌ ์ ํ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ์ด๋ํก ์๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์
๋ฐฑ์๋๋ก ๋ณ๋์ ์ด๋ฒคํธ๋ก call type๊ณผ caller์ ์ ๋ณด๋ฅผ ์ ๊ณต๋๋ฆด ์์ ์
๋๋ค.
callType: ์ ํ ํ์ ์ ์๋ฏธํฉ๋๋ค. caller๊ฐ offerCall()์ ํธ์ถํ ๋์ ๋์ผํ๊ฒ
sipcall์ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.caller: caller(์ ํ ๋ฐ์ ์)์ userId๋ฅผ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.
Step 4. ์ฐ๊ฒฐ ์ฑ๊ณต
์์ฑ ํตํ ์ฐ๊ฒฐ์ด ์ฑ๊ณตํ๋ฉด caller, callee ์์ธต ๋ชจ๋ CONNECTED_EVENT ๋ฅผ ์์ ํฉ๋๋ค.
#์ค๋์ค ์ฅ์น ์ ์ด
mute/unmute
์ ํ ํตํ์ค์ ์์๊ฑฐ๋ฅผ ํ ์ ์๋๋ก API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ๋ฒ๊ณผ ์์ธํ ๋ด์ฉ์ API Reference์ mute/unmute ๋ถ๋ถ์ ์ฐธ์กฐ ๋ฐ๋๋๋ค. mute/unmute API์ ํ๋ผ๋ฏธํฐ์ธ track type์ Omnitalk SDK์์ ์ ๊ณตํฉ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ฅ์น ๋ณ๊ฒฝ
์ ํ ์ฐ๊ฒฐ ์ , ๋๋ ์ ํ ํตํ์ค์ ์ ๋ ฅ(๋ง์ดํฌ) ์ฅ์น๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก API๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฐ์ , ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋ ฅ ์ฅ์น ๋ชฉ๋ก์ ์กฐํํ ์ ์๋ getDeviceList() ๋ฅผ ํตํด์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฅ์น์ deviceId๋ฅผ ํ๋ํฉ๋๋ค.
setAudioInput() ๋๋ set AudioOutput()์ deviceId๋ฅผ ์ ๋ฌํ์ฌ ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
Last updated