天天看點

web技術分享| 快速實作一個呼叫邀請 SDK

web技術分享| 快速實作一個呼叫邀請 SDK

什麼是呼叫邀請 SDK?

微信的音視訊呼叫想必大家都用過吧,它就是呼叫邀請在社交場景的表現形式之一,同時呼叫邀請還被運用到很多場景:

  • 娛樂場景:PK 連麥、搶麥
  • 教培場景:舉手發言
  • 企業服務:類企業微信
  • 金融服務:遠端面簽、保險定損
  • 更多:應急指揮排程、健康醫療
web技術分享| 快速實作一個呼叫邀請 SDK

呼叫邀請需要具備以下功能:

  • 一套完善的呼叫邀請流程
  • 音頻&視訊通訊能力
  • 自由靈活,友善業務邏輯拓展
  • 開放的媒體控制權限(管理自己的媒體輸入裝置等)

一個線上體驗的 Demo

這裡有一個簡單基礎的 DEMO,請點選體驗。

快速實作呼叫邀請 SDK

要實作一個呼叫邀請 SDK 并非易事,我們面臨的問題有很多,其中比較突出的有:應用場景廣泛,如何實作在不同場景下實作不同的業務邏輯?

應用場景的不同意味着需要處理的業務邏輯不同,如果針對不同場景去開發,既費時又費力,非明智之舉。那麼如何開發一個既要具備呼叫流程和音視訊通話能力,還要滿足在不同場景下可以實作不同業務邏輯的 SDK 呢?要想解決這個問題,我們可以給呼叫邀請的流程添加多個的生命周期,在不同的生命周期内做不同的事情,進而在不同場景下實作不同業務的邏輯 ,是以,呼叫邀請 SDK 需要具備兩個核心子產品,呼叫邀請流程 和 實時音頻通訊 。

呼叫邀請流程 :基于 IM 或者信令服務 以及消息推送服務 實作的一對一或者群組消息通知服務。

實時音頻通訊 :基于

webRTC

實作的一對一、多人的音視訊通話解決方案。

其中呼叫邀請流程十分重要,決定了什麼時候加入音視訊通話,什麼時候退出音頻通話。

基本功能

為了友善了解,下面我們以 主叫 和 被叫 兩個使用者身份了解呼叫邀請的大緻流程以及基礎功能:

主叫 :發起呼叫邀請的使用者

  • 發起呼叫邀請 :一對一、多人
  • 結束通話/取消呼叫邀請 :結束正在進行的通話或者取消(未接受/拒絕)的邀請
  • 事件通知 :呼叫邀請的狀态和流程通知

被叫 :接收到呼叫邀請的使用者

  • 接受邀請 :收到呼叫邀請之後,可執行接受邀請操作
  • 拒絕邀請 :收到呼叫邀請之後,可執行拒絕邀請操作
  • 事件通知 :呼叫邀請的狀态和流程通知

同時我們還需要考慮很多異常的問題和潛在因素,例如:

  • 呼叫邀請逾時、對方應答、未及時應答
  • 異常斷網,回話保持
  • 通話占線
  • 使用者不線上,發送推送消息
  • 等等

使用者 :每一個登入系統的使用者

  • 登入/登出系統
  • 管理媒體輸入裝置:打開/關閉、切換
  • 監聽呼叫邀請

呼叫邀請的生命周期

上面我們将使用者劃分成了兩個身份,那麼每個身份在每個呼叫邀請流程中都不一樣,也就意味着主叫的生命周期和被叫的生命周期是不一樣的,是以我們需要将整個呼叫邀請流程按照主叫和被叫 兩個身份來劃分,分别是主叫的生命周期 和被叫的生命周期 :

  • 主叫的生命周期 ,主叫發起邀請之後,直到邀請流程結束,這個過程中所有可能發生的事件,我們都會提供回調方法來實作。
    • 對方未應答
    • 對方是否收到邀請
    • 對方接受邀請
    • 對方拒絕邀請
    • 邀請失敗及原因
  • 被叫的生命周期 ,被叫在收到邀請之後,直到邀請流程結束,這個過程中所有可能發生的事件,我們都會提供回調方法來實作。
    • 未及時應答
    • 接受邀請成功
    • 拒絕邀請成功
    • 主叫取消邀請
    • 邀請失敗及原因

這樣我們就可以在不同的生命周期内做不同的事情,進而實作不同場景在業務上的需求 。下面我們列舉了一些在不同情況下,主叫和被叫對應的生命周期:

發起呼叫邀請

web技術分享| 快速實作一個呼叫邀請 SDK

取消呼叫邀請

web技術分享| 快速實作一個呼叫邀請 SDK

接受呼叫邀請

web技術分享| 快速實作一個呼叫邀請 SDK

拒絕呼叫邀請

web技術分享| 快速實作一個呼叫邀請 SDK

呼叫邀請未響應

web技術分享| 快速實作一個呼叫邀請 SDK

對方忙線中

web技術分享| 快速實作一個呼叫邀請 SDK

不線上使用者進行呼叫(推送通知)

總結

消息通知服務 = (IM || 信令服務 + 消息推送服務) + 生命周期;
呼叫邀請 SDK = 消息通知服務 + 音視訊通話;