本發(fā)明涉及計算機和電子通信領域。更具體地,提供一種用于建立并且保持voip(互聯(lián)網(wǎng)協(xié)議承載語音,voiceoverinternetprotocol)呼叫的系統(tǒng)、裝置以及方法。
背景技術:
現(xiàn)有voip方案具有有限的靈活性,意味著如果參與voip呼叫的設備的地址(例如,ip地址)改變,voip連接通常失敗并且一方或兩方參與者必須重新發(fā)起呼叫。此外,根據(jù)現(xiàn)有的程序建立voip呼叫通常要求大量的協(xié)議協(xié)商,這可能減損用戶的體驗。
技術實現(xiàn)要素:
在本發(fā)明的一些實施方式中,用于促進建立和保持voip呼叫的系統(tǒng)從呼叫者設備接收呼叫或呼叫邀約,將其轉發(fā)至被呼叫者的設備,并且為兩個設備識別可獲得的用于中繼它們的數(shù)字化語音通信的多個候選中繼實體。每個設備與一個或全部中繼綁定,以使得它們分配傳輸端點,并且如果并且當變得需要時,它們中的一方或兩方選擇一個中繼來使用。
一個或多個中繼將設備的外部網(wǎng)絡地址通知給設備并且每個設備通過系統(tǒng)將其(內部和外部)地址傳遞給彼此。設備嘗試建立端對端連接,以進行它們的呼叫,但是,可根據(jù)需要或視情況在端對端操作模式與中繼操作模式之間動態(tài)地切換。
在一些實施方式中,隨著一方或兩方設備漫游至不同的網(wǎng)絡,它們與所選擇的中繼(和/或一個或多個其他中繼)重新建立通信,以獲得它們的新的(外部)地址,并且再次與另一設備共享新的地址,并且它們繼續(xù)嘗試建立端對端連接。當不能連接時,設備使用所選擇的中繼來中繼它們的數(shù)字化通信。
可將設備的地址確定優(yōu)先級或確定次序,以指示哪一地址優(yōu)先或更可能取得成功。例如,當一個設備漫游至另一設備使用的網(wǎng)絡之外的網(wǎng)絡時,可將該設備的外部地址優(yōu)先化,wi-fi地址可優(yōu)先于蜂窩地址(即,語音服務供應商的數(shù)據(jù)網(wǎng)絡內的地址)等。
在涉及方法、儲存介質、系統(tǒng)及計算機程序產(chǎn)品的所附權利要求書中具體公開了根據(jù)本發(fā)明的實施方式,其中,在一個權利要求范疇(例如,方法)中提及的任何特征也可在另一權利要求范疇(例如,系統(tǒng))中要求保護。僅出于形式原因而選擇所附權利要求中的從屬關系或者向后引用。然而,也可要求保護由故意向后引用至任一之前權利要求而產(chǎn)生的任何主題(具體地,多項引用關系),使得權利要求及其特征的任何組合被公開并且能夠被保護,而不管所附權利要求中是否選定出該從屬關系。能夠要求保護的主題不僅包括所附權利要求中記載的特征的組合,而且還包括權利要求中的特征的任何其他組合,其中,權利要求中提及的每個特征能夠與權利要求中的任何其他特征或其他特征的組合相結合。進一步地,在單獨權利要求中能夠要求保護文中描述或描繪的任何實施方式及特征,和/或文中描述或描繪的任何實施方式及特征能夠與文中描述或描繪的任何實施方式及特征任意組合地被保護或者與所附權利要求的任何特征組合地被保護。
在根據(jù)本發(fā)明的實施方式中,支持經(jīng)由一個或多個計算機網(wǎng)絡進行的語音呼叫的計算機實施方法,該方法包括:
從呼叫者設備接收呼叫邀約,其中,呼叫邀約識別被呼叫者設備或被呼叫者設備的用戶;
將多個候選中繼服務器的地址發(fā)送至呼叫者設備和被呼叫者設備;
從呼叫者設備和被呼叫者設備中的一方或兩方中接收對多個候選中繼服務器之中的一個中繼服務器的選擇;并且
以包括呼叫者設備、所選擇的中繼服務器以及被呼叫者設備的中繼操作模式臨時執(zhí)行語音呼叫;
其中,在語音呼叫過程中,呼叫者設備和被呼叫者設備在中繼操作模式與端對端操作模式之間切換至少一次,在端對端操作模式中,它們直接執(zhí)行語音呼叫,而無需多個候選中繼服務器中的任一個。
在根據(jù)本發(fā)明的實施方式中,方法可包括:
在多個候選中繼服務器中的每個中繼服務器處,接收來自呼叫者設備和被呼叫者設備中的每個設備的連接;并且
在多個候選中繼服務器中的一個或多個中繼服務器處,對呼叫者設備和被呼叫者設備中的每個設備識別設備的外部地址。
呼叫者設備和被呼叫者設備中的至少一方可基于識別的發(fā)送至多個候選中繼服務器的通信與從多個候選中繼服務器接收的通信之間的時間延遲選定所選擇的中繼服務器。
接收對多個候選中繼服務器之中的一個中繼服務器的選擇可包括:
從呼叫者設備和被呼叫者設備中的第一設備接收所識別的時間延遲;
將收到的時間延遲轉發(fā)至呼叫者設備和被呼叫者設備中的另一設備;并且
從另一設備接收對所選擇的中繼服務器的識別。
在根據(jù)本發(fā)明的實施方式中,方法可包括:在與多個候選中繼服務器不同的通信服務器處:
接收呼叫者設備和被呼叫者設備的外部地址;并且
將外部地址轉發(fā)至呼叫者設備和被呼叫者設備中的另一設備。
在根據(jù)本發(fā)明的實施方式中,方法可包括:在呼叫者設備和被呼叫者設備中的一方從第一網(wǎng)絡漫游至第二網(wǎng)絡之后:
在所選擇的中繼服務器處,從一方設備接收新的連接;
從所選擇的中繼服務器對一方設備識別該一方設備的新外部地址;
在通信服務器處接收新外部地址;并且
將新外部地址從通信服務器轉發(fā)至呼叫者設備和被呼叫者設備中的另一方。
在根據(jù)本發(fā)明的實施方式中,方法可包括:響應與接收呼叫邀約,在與多個候選中繼服務器不同的一組通信服務器處,:
確定被呼叫者設備與通信服務器中的一個之間是否存在當前通信連接;并且
如果被呼叫者設備與通信服務器中的一個之間不存在通信連接,則向被呼叫者設備發(fā)送關于呼叫邀約的推送通知。
僅在呼叫者設備和被呼叫者設備嘗試發(fā)起端對端操作模式之后,才發(fā)起以中繼操作模式臨時執(zhí)行的語音呼叫。
僅在呼叫者設備和被呼叫者設備執(zhí)行下列操作之后,才發(fā)起以中繼操作模式臨時執(zhí)行的語音呼叫:
建立端對端操作模式;并且
端對端操作模式隨后失敗。
在根據(jù)本發(fā)明的實施方式中,方法可包括:
在語音呼叫過程中,接收對多個候選中繼服務器之中的第二中繼的選擇。
呼叫邀約可識別多個被呼叫者設備或多個被呼叫者設備的用戶。
在根據(jù)本發(fā)明的實施方式中,一種非暫時性計算機可讀介質可儲存指令,當處理器運行指令時,使計算機執(zhí)行支持經(jīng)由一個或多個計算機網(wǎng)絡執(zhí)行的語音呼叫的方法,該方法可包括:
從呼叫者設備接收呼叫邀約,其中,呼叫邀約識別被呼叫者設備或被呼叫者設備的用戶;
將多個候選中繼服務器的地址發(fā)送至呼叫者設備和被呼叫者設備;
從呼叫者設備和被呼叫者設備中的一方或兩方中接收對多個候選中繼服務器之中的所選擇中繼服務器的選擇;并且
以包括呼叫者設備、所選擇的中繼服務器、以及被呼叫者設備的中繼操作模式臨時執(zhí)行語音呼叫;
其中,在語音呼叫過程中,呼叫者設備和被呼叫者設備在中繼操作模式與端對端操作模式之間切換至少一次,在端對端操作模式下,它們直接執(zhí)行語音呼叫,無需多個候選中繼服務器中的任一個。
在根據(jù)本發(fā)明的實施方式中,一種用于支持經(jīng)由一個或多個計算機網(wǎng)絡執(zhí)行的語音呼叫的系統(tǒng)可包括:
多個通信服務器,每個通信服務器均包括儲存指令的非暫時性計算機可讀介質,當處理器運行指令時,使通信服務器配置為:
從呼叫者設備接收呼叫邀約,其中,呼叫邀約識別被呼叫者設備或被呼叫者設備的用戶;
將多個中繼服務器的地址發(fā)送至呼叫者設備和被呼叫者設備;并且
從呼叫者設備和被呼叫者設備中的一方或兩方接收對多個中繼服務器之中的一個中繼服務器的選擇;和
多個中繼服務器,每個中繼服務器均包括儲存指令的非暫時性計算機可讀介質,當處理器運行指令時,使中繼服務器配置為:
以包括呼叫者設備、所選擇的中繼服務器、以及被呼叫者設備的中繼操作模式臨時執(zhí)行語音呼叫。
每個中繼服務器的計算機可讀介質進一步儲存指令,當處理器運行指令時,使中繼服務器配置為:
從呼叫者設備和被呼叫者設備中的每個設備接收連接;并且
對呼叫者設備和被呼叫者設備中的每個設備識別設備的外部地址。
呼叫者設備和被呼叫者設備中的至少一方可基于識別的發(fā)送至多個中繼服務器的通信與從多個中繼服務器接收的通信之間的時間延遲選定所選擇的中繼服務器。
接收對多個中繼服務器之中的一個中繼服務器的選擇可包括:
在通信服務器中的一個服務器處,從呼叫者設備和被呼叫者設備中的第一設備接收所識別的時間延遲;
將收到的時間延遲從一個通信服務器轉發(fā)至呼叫者設備和被呼叫者設備中的另一設備;并且
在一個通信服務器處,從另一設備接收對所選擇的中繼服務器的識別。
在根據(jù)本發(fā)明的實施方式中,用于支持經(jīng)由一個或多個計算機網(wǎng)絡執(zhí)行的語音呼叫的系統(tǒng)可包括:在通信服務器中的一個通信服務器處,
接收呼叫者設備和被呼叫者設備的外部地址;并且
將外部地址轉發(fā)至呼叫者設備和被呼叫者設備中的另一方。
在根據(jù)本發(fā)明的實施方式中,用于支持經(jīng)由一個或多個計算機網(wǎng)絡執(zhí)行的語音呼叫的系統(tǒng),其中:
所選擇的中繼服務器的計算機可讀介質進一步儲存指令,當處理器運行指令時,使所選擇的中繼服務器在呼叫者設備和被呼叫者設備中的一方從第一網(wǎng)絡漫游至第二網(wǎng)絡之后配置為:
在所選擇的中繼服務器處,從一個設備接收新連接;并且
對一方設備識別該一方設備的新外部地址;以及
每個通信服務器的計算機可讀介質進一步儲存指令,當處理器運行指令時,使通信服務器配置為:
接收新的外部地址;并且
將新的外部地址轉發(fā)至呼叫者設備和被呼叫者設備中的另一方設備。
在根據(jù)本發(fā)明的實施方式中,用于支持經(jīng)由一個或多個計算機網(wǎng)絡執(zhí)行的語音呼叫的系統(tǒng)可包括:
客戶端邏輯,在呼叫者設備和被呼叫者設備中的每個設備上運行并且包括指令,當處理器運行指令時,使處理器對于多個中繼服務器中的每個中繼服務器配置為:
將綁定請求發(fā)送至中繼服務器;并且
如果從中繼服務器收到確認,則測量綁定請求的發(fā)送與綁定請求的確認的接收之間的延遲。
客戶端邏輯進一步可包括指令,當處理器運行指令時,使處理器配置為:
在呼叫者設備和被呼叫者設備中的一個設備處,接收通過呼叫者設備和被呼叫者設備中的另一設備測量的一個或多個中繼服務器延遲;并且
基于在呼叫者設備和被呼叫者設備處測量的總中繼服務器延遲選擇一個中繼服務器。
每個通信服務器的計算機可讀介質可進一步儲存指令,當處理器運行指令時,使通信服務器響應于收到呼叫邀約而配置為:
確定被呼叫者設備與通信服務器中的一個服務器之間是否存在當前通信連接;并且
如果被呼叫者設備與通信服務器之間不存在通信連接,則向被呼叫者設備發(fā)送關于呼叫邀約的推送通知。
僅在呼叫者設備和被呼叫者設備嘗試發(fā)起端對端操作模式之后,才發(fā)起以中繼操作模式臨時執(zhí)行的語音呼叫。
僅在呼叫者設備和被呼叫者設備執(zhí)行下列操作之后,才發(fā)起以中繼操作模式下臨時執(zhí)行的語音呼叫:
建立端對端操作模式;并且
端對端操作模式隨后失敗。
呼叫邀約可識別多個被呼叫者設備或多個被呼叫者設備的用戶。
在根據(jù)本發(fā)明的進一步實施方式中,一個或多個計算機可讀非暫時性儲存介質包含軟件,軟件可操作為在被執(zhí)行時,執(zhí)行根據(jù)本發(fā)明或任意上述實施方式的方法。
在根據(jù)本發(fā)明的進一步實施方式中,一種系統(tǒng)包括:一個或多個處理器;和至少一個存儲器,該至少一個存儲器耦接至處理器并且包括由處理器可運行的指令,處理器可操作為在運行指令時執(zhí)行根據(jù)本發(fā)明或任意上述實施方式的方法。
在根據(jù)本發(fā)明的進一步實施方式中,一種計算機程序產(chǎn)品,優(yōu)選地,包括計算機可讀非暫時性儲存介質,可操作為在數(shù)據(jù)處理系統(tǒng)上被執(zhí)行時,執(zhí)行根據(jù)本發(fā)明或任意上述的實施方式的方法。
附圖說明
圖1是根據(jù)一些實施方式的用于建立并且保持voip呼叫的系統(tǒng)的框圖。
圖2a-b是示出根據(jù)一些實施方式的建立并且保持voip呼叫的方法的時序圖。
圖3是根據(jù)一些實施方式的用于支持voip呼叫的建立和保持的裝置的框圖。
具體實施方式
呈現(xiàn)以下說明以使本領域技術人員制造和使用文中描述的實施方式。所公開的實施方式的各種變形對本領域技術人員是易于顯而易見,并且在不背離本公開的范圍的情況下,文中限定的一般性原理可適用于其他實施方式和應用。
在一些實施方式中,提供的系統(tǒng)、裝置及方法用于建立和保持兩個設備之間的voip(互聯(lián)網(wǎng)協(xié)議承載語音)通信會話(例如,voip呼叫)。voip連接是動態(tài)的,意味著它能夠視情況或根據(jù)需要在不同模式之間來回切換,諸如其中通過另一實體(例如,中繼服務器)來將設備的數(shù)字化音頻通信進行中繼的中繼模式和其中各設備直接通信(即,無中繼實體)的端對端(p2p)模式。
例如,各設備能夠通過連接至例如同一
盡管將文中呈現(xiàn)的實施方式描述為實施為支持voip呼叫,但是可將系統(tǒng)、方法以及裝置適用于因為它們并不采用例如互聯(lián)網(wǎng)協(xié)議而并不嚴格符合voip呼叫的其他形式的數(shù)字化視頻和音頻(例如,語音)通信。
在一些實施方式中,可將文中描述的方法整合到移動和/或固定計算和/或通信設備(例如,智能電話、平板電腦)中安裝的通信應用中。在一些具體的實施方式中,應用是其中除voip呼叫之外的經(jīng)由符合ieee802.11標準(例如,
圖1是根據(jù)一些實施方式的用于建立和保持voip呼叫的系統(tǒng)的框圖。
在這些實施方式中,通信系統(tǒng)120的用戶操作其中運行相同或不同操作系統(tǒng)(例如,安卓、黑莓、ios、諾基亞s40、塞班、視窗電話)的各種便攜式通信設備。因此,設備102、104由不同的用戶操作并且在功能、應用、實用性方面等方面進行類似或不同配置。然而,它們中的每個設備均執(zhí)行由通信系統(tǒng)120托管(hosted)的通用通信應用的版本。
當用于參與文中描述的voip或一些其他形式的數(shù)字化音頻通信時,設備102、104中的一個由呼叫者(或者主叫方)操作并且因此可被定義為呼叫者設備,而另一個由被呼叫者(或被叫方)操作并且因此可被定義為被呼叫者設備。
示出的設備102、104之間的數(shù)字化音頻通信可以是直接(端對端模式下)或間接(中繼模式下)的。在后者情況下,通信系統(tǒng)120內或隸屬于通信系統(tǒng)120的中繼服務器從各個設備接收數(shù)據(jù)包(packet)或其他通信要素(communicationelement)并且將它們中繼給另一個或者朝著另一個進行中繼。
系統(tǒng)120是用于托管由多個用戶同時使用的通信應用或服務的數(shù)據(jù)中心、計算機網(wǎng)絡或計算資源的其他協(xié)作集合或者至少是該應用或服務的服務器部分。如上所述,在一些實施方式中,應用為用戶提供voip能力以及從他或她的通信設備(例如,設備102)與由一個或多個其他用戶操作的通信設備(例如,設備104)間來往的文本、音頻記錄、照片、視頻、以及多媒體的即時消息。
由系統(tǒng)120托管的通信應用與設備102、104兼容并且包括在設備的本地操作系統(tǒng)下運行的客戶端邏輯。操作一種類型的設備并且訂購一個通信服務器供應商的用戶能夠參與voip呼叫并且與操作其他類型的設備且訂購其他通信服務供應商的用戶交換消息。因此,voip呼叫者或主叫方可使用一個設備平臺,而被呼叫者或被呼叫方使用不同的平臺。
在一些實施方式中,被呼叫者或被叫方可使用耦接至pots(舊式普通電話業(yè)務)的傳統(tǒng)陸線電話參與呼叫。在這些實施方式中,系統(tǒng)120中的部件用作傳統(tǒng)電話連接的端點并且提供模數(shù)轉換和數(shù)模轉換。
通信服務器122是系統(tǒng)120的托管用戶與該系統(tǒng)連接并且促進用戶之間的通信交換的前端部件。因為服務器122能夠從各個用戶接收用于傳遞至一個或多個其他用戶的實時文本消息和聊天會話通信,所以服務器122可被稱之為“聊天”服務器。盡管可將通過通信服務器122處理的一些消息定義為“聊天”消息,然而,它們并不局限于文本內容而是可(或還)包含嵌入的、附加的、或相關聯(lián)(例如,鏈接的)媒體內容以及協(xié)議級消息。
通信服務器122還有助于在與系統(tǒng)120耦接的設備之間建立和保持voip呼叫。如下所述,例如,通信服務器120可中繼或幫助建立相關的呼叫參數(shù)(例如,使用那種編解碼器或編碼方案,應用那種采樣率),提供被動參與或主動參與呼叫的設備經(jīng)其可傳遞非音頻數(shù)據(jù)(例如,它們的網(wǎng)絡地址、當前狀態(tài)(status)、呼叫的接受或拒接)的路徑、根據(jù)需要幫助從一個模式至另一模式的切換等。
通信服務器122還可用作系統(tǒng)120中的其他部件的入口。因此,當用戶請求另一用戶的狀態(tài)或更新配置文件或其他信息時,例如,通過與他或她連接的通信服務器可將他或她的動作路由至適當?shù)南到y(tǒng)部件。
示出性地,只要用戶與系統(tǒng)120是在線的并且在他或她的設備上運行應用,則包括voip呼叫期間,可以保持設備與通信服務器122之間的連接或會話。當用戶關閉設備上的應用或終止呼叫時,他或她的連接可持續(xù)一段時間(例如,五分鐘、十五分鐘)。
狀態(tài)服務器124維護用戶和/或用戶設備的狀態(tài)或多種狀態(tài)。因此,狀態(tài)服務器儲存一些或全部的用戶配置文件,包括適用的偏好(例如,優(yōu)選的可聽和/或可視警報、顯示給其他用戶的狀態(tài)信息)、設備類型/型號、配置文件照片等。由狀態(tài)服務器關于用戶維護的一些狀態(tài)信息僅可在用戶與系統(tǒng)120的當前連接的持續(xù)時間內存留;其他信息可無限期地存留。一個或多個狀態(tài)服務器124還可確定或幫助確定數(shù)字化音頻呼叫(例如,voip呼叫)的目標或潛在接收者的資格。
此外,狀態(tài)服務器124儲存根據(jù)需要向用戶設備推送消息時所需的信息,諸如,經(jīng)由用戶的服務供應商與設備通信時所需的設備令牌。該設備令牌也可以或者可選地被稱為“設備uri(統(tǒng)一資源標識符)”、“注冊id”、“pin”(個人識別碼),或者可具有一些其他的名字。該令牌對特定設備或特定用戶是唯一的。在一些情形中,諸如,當被呼叫者設備尚未(例如,經(jīng)由通信服務器122)連接至系統(tǒng)120時,可將推送消息發(fā)送至該設備,以將其喚醒并且使其連接至系統(tǒng),之后呼叫嘗試或邀約可被傳遞,并且該令牌可被對應的服務供應商所要求以便傳遞消息。
在voip呼叫的中繼操作模式過程中,使用中繼服務器126以在呼叫者與被呼叫者設備之間中繼數(shù)字化音頻。在一些實施方式中,僅當端對端模式不可用時才執(zhí)行中繼操作模式。在中繼模式過程中,通信設備可周期性地或定期地嘗試激活端對端模式,尤其當設備之一改變網(wǎng)絡—諸如從一種wi-fi網(wǎng)絡改變至另一種網(wǎng)絡、從wi-fi網(wǎng)絡改變至移動運營商的網(wǎng)絡(或反之亦然)等的任何時候。
系統(tǒng)120內可部署任意數(shù)目(例如,一個或多個)通信服務器、狀態(tài)服務器、中繼服務器、和/或其他服務器。在其他實施方式中,諸如通過被合并成更少的部件或劃分出額外的部件而以不同的方式分配服務器122、124、126的功能。
系統(tǒng)120的服務器可以是包括適合于執(zhí)行歸因于它們的功能的不同的硬件資源(例如,處理器、存儲器、通信接口)和軟件資源(例如,程序代碼、數(shù)據(jù))的單獨物理計算機系統(tǒng)。在一些可替代的實施方式中,任一或全部服務器可以是共享硬件和/或軟件資源的虛擬計算機。因此,執(zhí)行不同功能(或相同功能)的多個軟件服務器模塊可駐留于系統(tǒng)120內的一個服務器計算機上。
一個或多個網(wǎng)絡150提供系統(tǒng)120與用戶設備之間以及不同用戶設備之間的通信路徑,并且可包括數(shù)據(jù)和/或語音通信信道。為了執(zhí)行數(shù)據(jù)通信,網(wǎng)絡150可包括互聯(lián)網(wǎng)、一個或多個內聯(lián)網(wǎng)、lan(局域網(wǎng))、wan(廣域網(wǎng))、和/或性質上可以是有線和/或無線的其他點到點或分布式連接。為了執(zhí)行語音通信,一個或多個網(wǎng)絡150可包括由不同電信服務供應商管理并且虛擬地實施任意無線技術,諸如全球移動通信系統(tǒng)(gsm)、增強數(shù)據(jù)率的gsm演進(edge)、長期演進(lte)、碼分多址接入(cdma)、演進數(shù)據(jù)優(yōu)化(ev-do)等的有線和/或無線語音通信鏈路。
因此,網(wǎng)絡150可包括圖1中未示出的各種實體,諸如,路由器、網(wǎng)關、交換機、基站(例如,無線接入點、nodeb、演進nodeb等),和/或用于建立、維護、交換、或通過其他方式操縱數(shù)據(jù)和/或數(shù)字化語音連接的其他設備。
圖2a和圖2b形成了示出根據(jù)一些實施方式的建立并且保持voip呼叫的方法的時序圖。
在這些實施方式中,呼叫者使用第一客戶端設備(例如,智能電話、計算設備)操作其中特征支持與一個或多個他方進行voip和/或其他實時數(shù)字化音頻通信的通信應用。呼叫者210表示呼叫者和/或呼叫者的設備。被呼叫者使用第二客戶端設備操作同一應用或兼容的應用,并且被呼叫者240表示被呼叫者和/或被呼叫者的設備。
在一些實施方式中,可在多于兩方之間建立呼叫。例如,來自呼叫者的呼叫邀約可識別多個不同的被呼叫者(或被呼叫者設備)或可包括對一組被呼叫者或一組設備進行識別的組標識符。
由包括一個或多個通信服務器(例如,聊天服務器)、中繼服務器、和/或其他部件的應用主機系統(tǒng)(例如,圖1中的系統(tǒng)120)托管、操作、或者通過其他方式管理通信應用。在一些實施方式中,通信服務器220可以是應用主機系統(tǒng)中的一些其他部件。此外,盡管將示出的方法描述為使用一個通信服務器與呼叫者和被呼叫者進行通信,然而,在其他方法中,可以采用兩個或更多個協(xié)作的通信服務器,每個通信服務器均主持與其中一方的連接。
中繼服務器230是應用主機系統(tǒng)的另一部件或者由與本文描述的應用主機系統(tǒng)協(xié)作地動作的另一實體提供。
在voip呼叫從呼叫者210至被呼叫者240發(fā)起之前,至少呼叫者設備連接至應用主機系統(tǒng)(例如,通信服務器220)。例如,呼叫者可以與一個或多個其他用戶交換文本(例如,聊天)消息,其他用戶可包括或可不包括被呼叫者240。因此,在呼叫者能夠發(fā)起呼叫之前,其必須連接至系統(tǒng)。他可手動登錄來驗證其身份,或者他的設備可自動將其登錄。示出性地,當用戶啟動應用或發(fā)起呼叫時,用戶的設備可自動打開到應用主機系統(tǒng)的連接。
同樣,在呼叫能夠被連接至被呼叫者240之前(假設被呼叫者接受呼叫),她或他的設備需要登錄。因此,盡管雙方必須是應用的登入用戶并且連接至系統(tǒng),以便參與voip呼叫,然而,他們的設備可自動進行連接而在他們的角度上來說無需額外動作,除非根據(jù)需要操縱應用來進行voip呼叫或接受要約的呼叫。
因此,在時間250,呼叫者激活應用內的控制(control),允許他對被呼叫者發(fā)起實時數(shù)字化或數(shù)字音頻呼叫。示出性地,控制可以設置在與被呼叫者對應的聯(lián)系人或聯(lián)系人卡片的列表內,設置在發(fā)送至被呼叫者或從被呼叫者接收的消息內或與該消息相關聯(lián)地設置,或者設置在一些其他上下文中。呼叫邀約利用諸如應用主機系統(tǒng)知道的標識符(例如,電話號碼、電子郵件地址)等識別呼叫者和被呼叫者(或他們的設備),提供呼叫者設備支持的音頻參數(shù)(例如,(多個)編解碼器、采樣率)、呼叫者210的本地或內部地址(以及可能的端口)和/或其他信息。
作為響應,通信服務器220確認呼叫邀約并且根據(jù)需要,識別可獲得的用于所請求呼叫的中繼操作模式的一組中繼服務器(包括圖2a和圖2b的中繼服務器230)。在一些實施方式中,可以識別所有現(xiàn)存的中繼服務器;在其他實施方式中,例如,基于呼叫者210和/或被呼叫者240的位置可以識別全部服務器的子集。中繼細節(jié)示出性地包括至少一個地址(例如,和端口),諸如,ip(互聯(lián)網(wǎng)協(xié)議)地址和tcp(傳輸控制協(xié)議)或udp(用戶數(shù)據(jù)報協(xié)議)端口、加上由應用主機系統(tǒng)產(chǎn)生并且驗證已授權呼叫者210使用一個或多個中繼服務器的中繼令牌。應注意,此令牌可以與以上提及的設備令牌(或設備uri)不同。
除了向呼叫者210提供中繼細節(jié)之外,通信服務器220還將呼叫邀約及相同或相似中繼細節(jié)轉發(fā)至被呼叫者240或者向被呼叫者240轉發(fā)呼叫邀約及相同或相似中繼細節(jié)。如果被呼叫者當前連接至應用主機系統(tǒng),則在時間252,呼叫邀約被傳遞并且被呼叫者設備可響鈴(或發(fā)出蜂鳴、振動、或呈現(xiàn)一些其他警報,取決于設備如何進行配置)。
然而,如果被呼叫者240當前并未連接至系統(tǒng),則可向被呼叫者設備發(fā)送推送通知,以使應用開啟并且連接至系統(tǒng),使得呼叫邀約可被傳遞。例如,可以由設備的操作系統(tǒng)的供應商經(jīng)由谷歌云消息(gcm)或蘋果推送通知服務(apns)傳遞或轉發(fā)該通知。提供給被呼叫者240的中繼細節(jié)可識別被識別給呼叫者210的相同中繼服務器或者可識別一些其他組的可獲得中繼。被呼叫者設備還接收中繼令牌,以授權其使用中繼服務器230。
被呼叫者可拒絕或忽略呼叫邀約,在這種情況下,經(jīng)由通信服務器220將拒絕返回至呼叫者(可能與拒絕原因一起),但是,圖2a和圖2b中所示的方法假設她接受或將要接受邀約的呼叫。
同時,在時間252之時或附近,呼叫者的及被呼叫者的設備與被識別給它們的包括中繼服務器230的一些或全部中繼服務器綁定,如果并且當它們采用中繼操作模式時,這使得一個或多個中繼服務器分配用于中繼各方之間的數(shù)字化音頻通信的端點。
中繼服務器確認該綁定(如果它們能夠綁定的話)并且向呼叫者設備及被呼叫者設備中的每個提供設備的外部地址,可替代地,外部地址可被稱之為其反身地址或公共地址。在這些實施方式中,各個設備已獲知其自身的本地或內部地址(例如,其本地網(wǎng)絡內)并且能夠將本地或內部地址提供至應用主機系統(tǒng)(例如,通信服務器220),但是,它們可能不知道它們的外部地址。
在所示出的方法中,在設備的本地網(wǎng)絡內(例如,網(wǎng)絡地址轉換或nat實體的一側上)使用內部地址,而它們在這些網(wǎng)絡外(例如,位于nat實體的另一側/公共側上)通過它們的外部地址被知曉。通過與(多個)中繼服務器230通信,設備獲知它們的外部地址。
一旦收到其外部地址,呼叫者210將該地址報告給通信服務器220,通信服務器220將其轉發(fā)給被呼叫者240。與該外部地址一起,呼叫者發(fā)送(并且通信服務器轉發(fā))與已綁定的(多個)中繼服務器230相關的延遲信息。
具體地,在所示出的實施方式中,為了選擇多個中繼服務器中的一個,供各方在中繼操作模式期間使用,它們基于發(fā)送至中繼的通信(例如,綁定請求)以及中繼響應(例如,它們的確認)中包含的延遲選定(或它們中的一個選定)單個中繼服務器。
例如,呼叫者可計算其對各個中繼服務器的請求以及它們的響應中包含的延遲,并且(與呼叫者的外部地址一起)將對做出響應的各個服務器觀察出的延遲報告給被呼叫者。被呼叫者將其觀察到的延遲相加到呼叫者所報告的值,以得出各個服務器的總延遲,然后,選擇具有最低總延遲的中繼服務器。如圖2a中所示,被呼叫者可不發(fā)送其綁定請求并且開始測量延遲,直至其收到呼叫邀約之后,而呼叫者可以在知道中繼服務器的細節(jié)(例如,它們的地址)后立即進行。
任一方或雙方可在有限的時間段內或在整個呼叫過程中向未做出響應的中繼服務器繼續(xù)發(fā)送請求。因為即使在建立呼叫之后,一方也可繼續(xù)獲得延遲值,所以所選擇的中繼服務器可在建立呼叫之前和/或在呼叫過程中做出改變。
因此,各方的設候選擇中繼服務器,而非具有由應用主機系統(tǒng)為它們選擇的一個中繼服務器,并且能夠非常快速地做出選擇。在其他實施方式中,可以應用其他方法來選擇一個中繼服務器并且可考慮或可不考慮延遲或定時信息。
在時間256,被呼叫者接受所邀約(offered)的voip呼叫,并且接受消息、被呼叫者設備的外部地址和所選擇的中繼服務器的標識符(例如,地址)被發(fā)送至通信服務器220。作為接受消息的一部分,被呼叫者設備發(fā)送其與呼叫者設備已經(jīng)提供的內容(例如,(多個)編解碼器、采樣率、地址/端口)對應的操作參數(shù)。如果僅向各方提供一個中繼服務器,則被呼叫者可省去對所選擇的中繼服務器的識別,或者可簡單確認對該一個服務器的選擇或接受。如果多個中繼服務器可用,并且被呼叫者在其接受呼叫邀約的時間以前尚未選擇呼叫用的一個中繼服務器,則可隨后發(fā)送所選擇的中繼服務器的標識符。
在一些實施方式中,通信服務器220或一些其他系統(tǒng)部件可確定由一個或兩個設備能夠使用或將使用于呼叫的呼叫參數(shù)。對一方設備的參數(shù)的選擇可取決于由該設備之前(成功)實施的參數(shù)、設備的當前配置和/或其他因素。
在接受呼叫不久之后,被呼叫者240嘗試發(fā)起端對端(pzp)操作模式和中繼操作模式中的一個或兩者。
在所示出的方法中,兩個設備首先轉到中繼操作模式,這是部分由于它們已經(jīng)打開與中繼服務器230的連接,但尚不能夠建立或驗證p2p連接性。然而,在一些其他實施方式中,設備首先嘗試建立p2p連接及p2p操作模式。
然而,即使開始中繼操作模式,被呼叫者240也開始試圖驗證與呼叫者210的連接性。示出性地,p2p連接性檢查可包含:一個設備嘗試聯(lián)系在其知道的任何或所有地址(例如,內部和/或外部的)處的其他設備,以確定是否存在可行路徑。如果若干次連接請求(例如,10次)失敗,則可假定缺少連接性(并且在至少一段時間內終止檢查)。
如果兩個設備能夠聯(lián)系至另一個,它們可開始協(xié)商p2p連接。在所示出的方法中,漸進地執(zhí)行協(xié)商(例如,當每一方設備變得意識到另一設備的(多個)有關地址),而非突然執(zhí)行。
同時,通信服務器220向呼叫者210轉發(fā)接受消息、被呼叫者的外部地址以及所選擇的中繼服務器的標識(例如,地址)?,F(xiàn)在,呼叫者設備能夠在與被呼叫者240協(xié)商(或嘗試協(xié)商)開始p2p操作模式的同時,也開始與中繼服務器230的數(shù)字化語音數(shù)據(jù)通信。
因此,在時間260之時或左右,呼叫者和被呼叫者能夠在中繼操作模式下開始它們的voip通信,但是,可以通過嘗試聯(lián)系彼此及交換任何必要的通信參數(shù),繼續(xù)嘗試建立p2p模式。如果它們成功,它們將自動切換至該操作模式,作為喜歡的模式。然而,此外,voip呼叫可以是非對稱的,意味著一方可在一種模式(例如,p2p)下發(fā)送數(shù)據(jù),而另一方在另一種模式(例如,中繼)下進行發(fā)送。這可僅在短暫時間段內、相當長的時間段內、或整個呼叫期間發(fā)生。
在一些實施方式中,在稍后時間一方或兩方設備移動時,在這種情況下,它們連接至不同的網(wǎng)絡,這意味著它們的內部地址和外部地址可能發(fā)生改變。
如圖2b中所示,例如,在時間270,呼叫者設備移動(或被移動)并且連接至不同的wi-fi網(wǎng)絡、移動運營商網(wǎng)絡或其他網(wǎng)絡。因此,呼叫者設備向中繼服務器230(和/或其他中繼服務器)發(fā)送新的綁定請求,中繼服務器確認該綁定并且識別設備的新外部地址。新的綁定請求可包括系統(tǒng)之前提供給呼叫者210的同一令牌或者呼叫者設備可在新的綁定請求之前獲得一個新的令牌。
然后,呼叫者210將其新的外部地址轉發(fā)至通信服務器220(如果服務器未獲知的話,加上其內部地址),并且通信服務器將(多個)新地址轉發(fā)至被呼叫者240。呼叫者210還使用其新地址發(fā)起中繼操作模式的新重復。
在時間272,一旦收到呼叫者的新外部地址,被呼叫者可回到中繼操作模式。具體地,如果各方已經(jīng)傳送p2p并且被呼叫者停止經(jīng)由p2p連接接收數(shù)據(jù)包,將立即經(jīng)由中繼服務器230開始voip呼叫的中繼操作模式,但是,還將嘗試重新協(xié)商p2p連接。如果失敗,各方可保持于中繼操作模式中。
同時,呼叫者210使用被呼叫者240的已知地址,開始試圖從其(多個)新地址發(fā)起中繼模式。如果成功,它們將協(xié)商p2p模式的操作。
在一些實施方式中,通過設備自身或一些其他實體,呼叫者210和/或被呼叫者240的地址被確定優(yōu)先級,以反映各自應被給定的優(yōu)先級。例如,wi-fi地址通常比蜂窩地址給予更高的優(yōu)先級,并且內部地址優(yōu)先于外部地址(如果雙方的設備在同一網(wǎng)絡內)。
然而,當呼叫中斷時,諸如,當一個設備改變網(wǎng)絡時,可臨時給予其新外部地址最高的優(yōu)先級而無論該地址在wi-fi網(wǎng)絡內還是在蜂窩網(wǎng)絡內。
應當理解的是,voip呼叫的建立和/或保持可從一種情景或環(huán)境改變至另一情景或環(huán)境,因此,這些任務中包含的通信的內容、格式以及順序可從一種實施方式到另一實施方式而不同。具體地,任意給定的實體可以不同的定時發(fā)送或者接收圖2a和圖2b中所示的各種通信或類似通信,并且一些通信可與其他通信的路徑相交或交叉。
例如,如果給定設備不能進行后臺處理,則可比圖2a和圖2b中所示的稍后來執(zhí)行一些動作(諸如,在接受呼叫之前,歸屬于被呼叫者240的這些動作)。
在圖2a和圖2b中的方法的一些實施方式中,每一方設備均保持與通信服務器220的持續(xù)連接(例如,tcp連接),但是,在中繼模式和p2p模式的一個或兩者中,經(jīng)由無連接協(xié)議(例如,udp)進行數(shù)字化語音通信。然而,如果udp不可用,如果嘗試建立udp連接失敗,或出于一些其他原因,設備可對數(shù)字化語音通信采用tcp或一些其他合適的協(xié)議。
在一些實施方式中,對呼叫質量進行監(jiān)控,并且如果質量降至預定閾值以下,則可觸發(fā)從一種操作模式至另一操作模式的切換。
圖3是根據(jù)一些實施方式的用于支持voip呼叫的建立與保持的裝置的框圖。應當理解的是,在其他實施方式中,裝置300可包括用于支持這些活動的多個獨立或半獨立部件,諸如,通信服務器、中繼服務器、狀態(tài)服務器、和/或應用主機系統(tǒng)的其他部件等。
圖3中的裝置300包括(多個)處理器302、存儲器304、以及儲存器306,儲存器306可包括一個或多個電、光學和/或磁儲存部件。裝置300可耦接(永久或臨時)至鍵盤312、定點設備314、以及顯示器316。為清晰起見,裝置可包括省去的其他部件,諸如,經(jīng)由有線和/或無線通信鏈路通信的通信模塊、與諸如其他儲存設備、代理服務器、路由器、負載平衡器、網(wǎng)絡服務器、其他裝置等其他外部設備接口連接的接口部件。
裝置的儲存器306儲存可被加載到存儲器304中的邏輯以供(多個)處理器302運行。除操作和支持由該裝置托管并且由多個用戶使用的應用所必需的其他邏輯之外,這些邏輯包括連接邏輯322和中繼邏輯324。儲存器306還可包括下載到諸如智能電話、平板電腦、和/或其他設備等客戶端設備中并且在它們上運行的可選客戶端應用邏輯326。存儲器304和/或儲存器306還可儲存由裝置300產(chǎn)生或使用的各種數(shù)據(jù),諸如,用戶狀態(tài)、用戶賬戶狀態(tài)、用戶聯(lián)系人列表、支持與用戶客戶端設備通信的參數(shù)等。
連接邏輯322包括用于接收并且管理與由裝置300托管的通信應用的用戶所操作的客戶端設備進行的連接的處理器可執(zhí)行指令。這些指令允許裝置接收連接請求,應用(多個)正確的協(xié)議以建立/保持連接,終止連接,交換支持應用的協(xié)議消息,接收并且傳送用戶之間交換的通信,交換通信參數(shù)和/或用于進行voip呼叫的其他信息等。
中繼邏輯324包括用于通過提供用于中繼通信的傳輸端點、識別用戶設備的網(wǎng)絡地址、和/或采取其他動作而支持用戶的數(shù)字化語音通信的處理器可執(zhí)行指令。
可選的客戶端邏輯326包括用于在用戶的客戶端設備上運行應用的處理器可執(zhí)行指令,包括執(zhí)行voip呼叫。因此,如上所述,客戶端邏輯允許用戶發(fā)起并且響應呼叫邀約、綁定一個或多個中繼模塊或服務器、測量與中繼實體相關聯(lián)的延遲、選擇中繼操作模式過程中所使用的一個中繼、(當中繼操作模式有效時)通過所選擇的中繼發(fā)送和接收數(shù)字化音頻通信、與另一用戶建立端對端通信連接、(當端對端模式操作有效時)將數(shù)字化音頻通信直接發(fā)送至另一用戶和從另一用戶接收數(shù)字化音頻通信、在改變網(wǎng)絡之后重新建立通信連接等。
在一些實施方式中,連接邏輯322和中繼邏輯324被合并,進一步細分或者在不同的裝置中操作。
執(zhí)行本發(fā)明中的一些實施方式的環(huán)境可包含諸如手持式計算機或通信設備等的通用計算機或專用設備。為清晰起見,可省去該些設備(例如,處理器、存儲器、數(shù)據(jù)儲存器、顯示器)的一些細節(jié)。歸屬一個或多個任務或功能給它的諸如處理器或存儲器等部件可以是臨時被配置為執(zhí)行該指定任務或功能的通用部件,或可以是被制造成執(zhí)行該任務或功能的特定部件。文中使用的術語“處理器“指一個或多個電子電路、器件、芯片、處理核心、和/或被配置為處理數(shù)據(jù)和/或計算機程序代碼的其他部件。
在具體實施方式中描述的數(shù)據(jù)結構和程序代碼通常儲存在非暫時性計算機可讀儲存介質中,其可以是能夠儲存供計算機系統(tǒng)使用的代碼和/或數(shù)據(jù)的任何設備或介質。非暫時性計算機可讀儲存介質包括但不限于易失性存儲器、非易失性存儲器、諸如光盤驅動器、磁帶、cd(壓密盤)以及dvd(數(shù)字通用盤或數(shù)字視頻盤)等的磁性及光學儲存設備、固態(tài)驅動器和/或現(xiàn)在已知或后期開發(fā)的其他非暫時性計算機可讀儲存介質。
在具體實施方式中描述的方法及處理可體現(xiàn)為能夠儲存在上述的非暫時性計算機可讀儲存介質中的代碼和/或數(shù)據(jù)。當處理器或計算機系統(tǒng)讀取并且運行代碼并且操縱介質中儲存的數(shù)據(jù)時,處理器或計算機系統(tǒng)執(zhí)行被體現(xiàn)為代碼和數(shù)據(jù)結構并且被儲存在介質內的方法和處理。
僅出于示出和描述之目的,呈現(xiàn)了對本發(fā)明的實施方式的以上描述。它們并不旨在窮盡本發(fā)明或將本發(fā)明局限于公開的形式。相應地,許多改造和變形對本領域技術人員是顯而易見的。由所附權利要求而非前面的公開內容限定本發(fā)明的范圍。