RTC與SIP互通所涉及的問題
要想讓RTC與SIP互通,要解決兩個層面的問題:信令層和媒體層。
兩個網絡使用的信令機制不同,所以要進行信令的轉換,才能完成媒體的協商,建立會話。媒體層要完成編碼的轉換,以及rtp/srtp轉換等功能。
優質通信三要素
- 信令層的協商:穩定的信令是實現RTC與SIP互通的基礎,保達、異常處理、斷線重連等機制。
- SIP協議與RTC協議互轉的處理:上述已經探討了,RTC與SIP互通需要媒體層協議的轉換。
- 加速線路:媒體在服務間的中轉,丟包以及延遲的處理。就近接入、節點選擇等。
ARCall-RTC與SIP互通解決方案
為何制定RTC與SIP互通的開源方案
RTC與SIP互通是基于市場的呼叫中心解決方案的需求,隨著RTC技術的廣泛應用,各個環節的應用需求層出不窮,傳統的SIP呼叫中心也需要升級技術方案,我們在給貝殼找房,浙江省公安廳等大型企業提供技術方案后進行項目分析發現:我們在提供服務時客戶更關注的是自己的業務流程,如何讓客戶快速的集成,以及集成后靈活的改造方案來應對多變的需求,是項目能夠順利快速推進的重要因素。
anyRTC全球超過200數據中心,覆蓋200+國家和地區,國內線路涵蓋華東、華南、華北、西南、東北、西北、香港、臺灣??蛻艟徒尤?、根據智能算法,給出最優路徑。
開源說明
開源代碼地址
開源的RTC和SIP互通的網關代碼,其中使用了三大模塊:RTC,RTM,SIP,相關的模塊以庫的形式提供,支持linux和windows平臺。
開源的網關代碼支持與ArCall開源項目互通,支持呼叫流程制定和修改。
開源的網關支持三種模式:
- IVR呼叫中心模塊適用于呼叫中心,手機/網頁/小程序客戶端呼入IVR,通過語音導航實現相應的業務流程。
- SIP主動呼RTC模塊適用于客戶坐席主動呼叫消費者,支持SIP呼叫客戶端,支持SIP直呼手機號等。
- RTC直呼SIP座機適用于企業內外網互通,通過App客戶端直接呼叫員工或指定坐席的工位座機。
呼叫流程
這里用到了anyRTC的實時消息SDK,請查看詳細API說明
項目地址
1,狀態流轉圖
呼叫邀請中,主叫可以通過 LocalInvitation 對象提供的 getState 方法查詢當前呼叫邀請的有關狀態;被叫可以通過 SDK 返回的 RemoteInvitation對象的 getState方法查詢當前呼叫邀請的相關狀態。
LocalInvitationState
下圖描述了與主叫相關的呼叫邀請狀態流轉圖:
RemoteInvitationState
下圖描述了與被叫相關的呼叫邀請狀態流轉圖:
2,API 時序圖
取消已發送呼叫邀請
接受/拒絕呼叫邀請
注意事項及限制條件
- 主叫設置的呼叫邀請 content 的字符串長度:8 KB,格式為 UTF-8。
- 被叫設置的呼叫邀請響應 response 的字符串長度:8 KB,格式為 UTF-8。
- 呼叫邀請的 channel ID 僅用于與老信令互通時設置。設置的 channel ID 必須與老信令 SDK 設置相同才能實現互通。字符串長度:64 字節,格式為 UTF-8。
結語
SIP與RTC互通,我們完成了一整套的呼叫,通信流程,以及異常處理。更多場景玩法等待您去挖掘~