WePTT作為開放的平臺,提供核心的公網(wǎng)集群指揮系統(tǒng)(實時語音對講)和IM(即時通信)相關(guān)技術(shù)能力,使第三方系統(tǒng)可以簡便快捷的實現(xiàn)服務器端與客戶端的二次開發(fā)需求。開放的接口和SDK包括:服務器對接接口、Android平臺SDK、iOS平臺SDK、Windows平臺ActiveX等。
WePTT平臺核心能力服務器如下圖:
注:
1)?圖中表示的為邏輯服務,與實際部署的服務器設備無直接關(guān)系。
2)?DNS作為前置服務為DM提供負載均衡
3)?DM依據(jù)自有均衡策略為用戶分配SP
4)?多個DM對等分布,采用共享庫方式對數(shù)據(jù)訪問操作
5)?多個SP對等分布,基于路由機制通信
6)?每個SP管理一個或多個MDS
DM服務在整個系統(tǒng)中承擔所有與DB、數(shù)據(jù)等相關(guān)交互的數(shù)據(jù)管理工作,對客戶端提供TCP訪問接口,同時對其它服務也提供對應DB操作的交互接口。DB可以單獨作為服務部署在不同的設備上,采用MySQL數(shù)據(jù)庫,Master/Slaver模式,?MemCache機制。
具體職能:
SP是承載在線用戶狀態(tài)的核心處理服務,維護所有心跳用戶的語音會話和即時消息。多臺SP通過DM運行監(jiān)控模塊負載均衡,各SP之間完全對等,通過路由機制相互尋址通信。
具體職能:
媒體服務主要承擔用戶的語音通話和分組的話語權(quán)權(quán)限控制,又分兩種服務形式:1)臨時組呼叫,2)固定群組或頻道通話。
具體職能:
WePTT對講Android & iOS SDK為第三方應用在Android和iOS智能平臺上提供了可以快速實現(xiàn)對講能力的開發(fā)組件,第三方應用可通過SDK Java Package和Object-C來訪問所有這些能力,無需關(guān)心具體的邏輯實現(xiàn)和協(xié)議通信。
為了達到最好的通信性能和效果,SDK低層采用C/C++構(gòu)造相關(guān)的核心通信邏輯和模塊,透過JNI/Object-C為上層應用提供訪問接口。低層已封裝了Session、Media、Audio、Codec等關(guān)鍵的協(xié)議、算法、網(wǎng)絡操作、狀態(tài)機、控制邏輯,以及線程規(guī)則管理、節(jié)電控制等模塊。
SDK進一步為第三方應用的接口訪問進行了封裝,將C/C++很好的轉(zhuǎn)化成Android Java或Object-C面向?qū)ο蟮牧晳T和方式。包含了數(shù)據(jù)類型、數(shù)據(jù)處理、用戶交互狀態(tài)機控制、以及為調(diào)用方提供可實現(xiàn)的Listener/Deletgate作為接口,從而形成面向Android Java或Object-C程序員集成開發(fā)的接口層。整體方案分層明確,具有良好的擴充能力,保證了優(yōu)良的運行性能和低功耗運行的特征,同時使第三方二次開發(fā)的工作量盡可能降到最低。
Windows平臺中提供ActiveX控件形式的SDK,可嵌入Web或其它應用程序框架中以實現(xiàn)開放的公網(wǎng)集群指揮系統(tǒng)和IM能力。ActiveX中提供了與Web層JavaScript頁面腳本交互的技術(shù)方式,以便滿足瘦客戶模式的二次開發(fā)。
WePTT平臺為第三方系統(tǒng)提供的開放能力主要體現(xiàn)如下幾部分:
作為兩個相對獨立的系統(tǒng)對接,用戶子系統(tǒng)對接是最為關(guān)鍵的第一步。對接的基本原則是使第三方系統(tǒng)中的用戶可以一一對應到WePTT平臺,從而實現(xiàn)這些用戶可以使用WePTT所有開放的能力。WePTT平臺提供了系統(tǒng)對接常用的用戶匹配接口方式,第三方系統(tǒng)可以通過給定全網(wǎng)唯一的用戶ID匹配到WePTT中唯一對應的用戶,從而建立兩個系統(tǒng)用戶的ID對照表。
系統(tǒng)同時支持針對某一指定用戶WePTT服務的開通和關(guān)閉,以便第三方系統(tǒng)對相應用戶增值服務有效性的管理。例如第三方系統(tǒng)中WePTT服務僅作為其服務套餐之一,需要經(jīng)過一定流程或條件后再開通WePTT服務,當用戶到期時又需要將其WePTT服務關(guān)閉,可以通過平臺提供的接口來實現(xiàn)此需求。屆時WePTT平臺將根據(jù)第三方的指令對登錄WePTT服務的客戶端SDK進行有效性確認和限制,只有有效的用戶才能正常登錄和使用,基本流程大致如下圖所示:
考慮到客戶端SDK集成到第三方的APP中需要處理連接WePTT服務器的負載均衡,以及登錄流程整合后的優(yōu)化方案,系統(tǒng)設計上為第三方系統(tǒng)提供了服務端直接替客戶端獲取均衡配置的接口,這樣可以減少客戶端與服務器的交互,從而盡可能縮短客戶端登錄時間。具體流程如下圖:
WePTT服務作為一套“有狀態(tài)”的服務平臺,為第三方系統(tǒng)提供了隨時可以較為精確的查詢某指定用戶是否在線的狀態(tài)接口,以便第三方系統(tǒng)實現(xiàn)和某用戶在線情況相關(guān)的功能需求和邏輯。
在WePTT平臺中,固定會話組織形式是以“頻道”方式實現(xiàn)的,頻道中的成員之間可以在頻道內(nèi)實現(xiàn)公網(wǎng)集群指揮系統(tǒng)實時語音通話、收發(fā)即時消息等功能,頻道與頻道之間互不影響、相對隔離,類似傳統(tǒng)對講機或數(shù)字集群的頻段。平臺提供了開放的接口用于管理所有用戶的頻道。具體功能包括:頻道的創(chuàng)建、刪除、屬性變更,以及頻道內(nèi)成員及其權(quán)限和優(yōu)先級的變更設定。
WePTT平臺的核心能力是提供公網(wǎng)集群指揮系統(tǒng)實時語音對講,第三方客戶端或PC端可通過為Android、iOS以及Windows平臺封裝的SDK實現(xiàn)以下具體功能特征:
1) 賬戶登入登出:客戶端可通過SDK登入登出WePTT服務
2) 獲取頻道列表以及成員列表:SDK提供了接口和獲取用戶所屬的所有頻道列表,以及頻道中的成員信息
3) 頻道對講:所有頻道內(nèi)的成員均可連接到頻道會話,連接在同一頻道的用戶之間可以進行實時語音對講,并受話語權(quán)控制;頻道成員數(shù)限定在300人以內(nèi)
4) 臨時呼叫/應答:SDK可發(fā)起或掛斷1對1、1對多的呼叫應答,也可以接聽或拒接對講來電;在會話中主叫方可邀請其它用戶進入此會話;臨時會話成員數(shù)限定在30人以內(nèi)
5) 話語權(quán)控制:無論是頻道對講還是臨時呼叫/應答均受話語權(quán)控制,即同一時間只允許一個人講話,其它人只能聽;臨時呼叫/應答類型的會話中主叫有最高權(quán)限可直接搶斷任一成員的話語權(quán);而頻道類型的會話中,是否能搶斷別人講話取決于成員的優(yōu)先級高低,高級別成員可選擇搶斷低級別;同時頻道內(nèi)支持話語權(quán)排隊能力,即當某一個用戶在講話時,其它成員也可以申請講話,但會給所有成員呈現(xiàn)出正在排隊的狀態(tài),多個等待話語權(quán)的成員按序排隊,允許排隊的成員最大數(shù)可有系統(tǒng)后端設定
6) 會話中狀態(tài)呈現(xiàn):在會話中無論是發(fā)言、排隊、或是進出會話,其它成員均可及時看到狀態(tài)的變化
7) 用戶狀態(tài)呈現(xiàn):SDK支持用戶上下線狀態(tài)變化的即時通知和呈現(xiàn)SDK除以上功能外,還為第三方封裝了相關(guān)的基本處理,如音頻狀態(tài)控制與編解碼、網(wǎng)絡狀態(tài)切換、普通電話處理接口等,無需調(diào)用方考慮邏輯處理。同時POC在性能方面可滿足如下指標(在網(wǎng)絡狀態(tài)良好的3G環(huán)境下):
1) 臨時會話的呼叫時延(從發(fā)起呼叫到對端振鈴)不高于3000ms;
2) 頻道呼通率和臨時呼叫應答接通率不低于95%;
3) POC語音端到端的時延不高于1000ms
平臺能力上除核心的POC外,還可支持高效的IM即時通信服務,除了支持一般文本、圖片、錄音等媒介消息外,系統(tǒng)還提供可供第三方應用自定義封裝的消息類型,以便實現(xiàn)更豐富而靈活的自定義需求。
主要能力特征為:
1) 消息類型:文本、圖片、錄音、自定義報文等
2) 支持頻道內(nèi),以及1對1、1對多臨時會話的消息收發(fā)
3) 支持離線消息讀取
第三方系統(tǒng)如果有需求希望接收來自客戶端SDK上報的信息,可通過此能力實現(xiàn),WePTT會將收到的消息原文傳遞給第三方指定的服務以進行相關(guān)的服務處理,進而支持一種自下而上的通道。
第三方系統(tǒng)可通過此服務批量向指定用戶推送自定義的報文,客戶端SDK收到后將把自定義報文剝離出原文并交給第三方客戶端應用層自行處理,進而實現(xiàn)自上而下的通道。