- 如何通過(guò)SBC實(shí)現公網(wǎng)注冊SIP話(huà)機演示,實(shí)現聯(lián)通COP對接通話(huà)
- 圖解邊界會(huì )話(huà)控制器(SBC)的20個(gè)最常用功能
- SIP系列講座-邊界會(huì )話(huà)控制器-SBC全面剖析
- 基于OpenSIPS實(shí)現電話(huà)錄音解決方案探討
為了進(jìn)一步完善SIP呼叫錄音的討論,今天,筆者在以前的錄音分享技術(shù)討論的基礎上,進(jìn)一步討論一些和SIP電話(huà)呼叫中的一些非常細節的說(shuō)明和其相關(guān)的行業(yè)規范,通過(guò)規范和解決方案的示例討論,讀者獲得更多關(guān)于SIP呼叫錄音的技術(shù)策略和部署方式。
更多技術(shù)分享,關(guān)注SIP技術(shù)學(xué)習
筆者這里主要討論的內容包括:錄音解決方案背景介紹,關(guān)于SIPREC的技術(shù)細節說(shuō)明(Session Recording Protocol),相關(guān)技術(shù)架構討論,基于SIP的媒體錄音場(chǎng)景規范(SIPREC)以及數據規范的討論,SBC對SIPREC的支持和以及其他問(wèn)題討論。
1、錄音解決方案背景介紹
呼叫中心或IPPBX是幫助企業(yè)用戶(hù)和客戶(hù)主要溝通的工具。根據一家美國公司對市場(chǎng)的調查中,在最近幾年,語(yǔ)音仍然是企業(yè)用戶(hù)和客戶(hù)互動(dòng)的首先方式。

以下部分圖片來(lái)自于互聯(lián)網(wǎng)
在呼叫中心或者語(yǔ)音使用比較高的行業(yè)中,服務(wù)行業(yè)是一個(gè)需求非常旺盛的行業(yè),客服中心是非常關(guān)鍵的部門(mén)。為了保證其服務(wù)和其他業(yè)務(wù)那個(gè)在一種可控的環(huán)境下進(jìn)行,雙方的錄音是最好的憑證。另外,語(yǔ)音呼叫結合電話(huà)錄音也是服務(wù)行業(yè)的一個(gè)必然的趨勢,以下是美國行業(yè)調查數據:
資料來(lái)源:https://www.telemessage.com/voice-call-recording-latest-market-and-compliancetrends-infographic/
當然,錄音也不僅僅局限于客服的一種需求,其他行業(yè)也存在巨大的市場(chǎng)。以下示例說(shuō)明了各種環(huán)境下對錄音的需求:

但是,隨著(zhù)呼叫中心或客服中心技術(shù)的不斷發(fā)展,很多呼叫中心和客服中心的技術(shù)也發(fā)生了巨大的變化,從很早的本地部署方式逐漸升級為基于云的部署方式,客服或坐席人員也出現了分布式的部署方式。因此,隨著(zhù)呼叫中心或客服中心技術(shù)和管理方式的變化導致了錄音解決方案的變化。我們知道,傳統的PSTN的錄音或者IP錄音是通過(guò)高阻三通方式或鏡像錄音實(shí)現呼叫錄音,但是,這些部署很難滿(mǎn)足對現代云部署技術(shù)的支撐,它們也滿(mǎn)足不了非常細節的業(yè)務(wù)功能。因此,傳統的錄音設備或者本地錄音方式面臨著(zhù)很大的挑戰。
隨著(zhù)呼叫中心或客服系統朝云平臺的遷移,基于云平臺的錄音解決方案也逐漸形成了自己的市場(chǎng)。同時(shí),錄音解決方案可以非常方便地和人工智能的接口實(shí)現無(wú)縫對接支持。因此,基于云的呼叫中心配合云錄音方案將更加普及。

在基于云部署的呼叫中心的使用場(chǎng)景中,絕大部分的呼叫中心使用了基于SIP協(xié)議的解決方案。目前,基于SIP協(xié)議的技術(shù)架構中,基于SIP協(xié)議對媒體錄音的規范是SBC,軟交換,媒體服務(wù)器部署時(shí)需要支持的協(xié)議規范(SIPREC)。一些比較主流的SBC廠(chǎng)家,媒體服務(wù)器都已經(jīng)支持了SIPREC-基于SIP的媒體錄音協(xié)議。這看來(lái)也是一個(gè)市場(chǎng)發(fā)展的必然趨勢。為了更快了解這些相關(guān)的技術(shù)和規范,在本文章中,筆者在接下來(lái)的章節中會(huì )逐步介紹SIPREC相關(guān)的技術(shù)規范,它們包括:
RFC5341-基于SIP的媒體錄音使用場(chǎng)景規范:Use Cases and Requirements for SIP-Based Media Recording (SIPREC)
RFC7245-SIP媒體錄音技術(shù)架構:
An Architecture for Media Recording Using the Session Initiation Protocol
RFC 7865-SIP錄音時(shí)的metadata:
Session Initiation Protocol (SIP) Recording Metadata
RFC7866-SIP錄音的呼叫流程:
Session Initiation Protocol (SIP) Recording Call Flows
因為篇幅的關(guān)系,我們不可能在一篇文章中涵蓋所有的技術(shù)細節,除了簡(jiǎn)略介紹以上規范以外,筆者還要結合目前主流的SBC應用場(chǎng)景和其他的問(wèn)題進(jìn)行多方面的討論來(lái)完善目前關(guān)于基于SIP媒體錄音解決方案的討論。
2、SIPREC背景知識
根據前面章節的介紹,因為某些商業(yè)環(huán)境的要求,系統可能需要對呼叫會(huì )話(huà)進(jìn)行錄音。SIPREC是基于SIP協(xié)議對媒體錄音的場(chǎng)景規范(RFC6341)。其全名為:
Use Cases and Requirements for SIP-Based Media Recording (SIPREC)
在整個(gè)SIPREC的規范中,包括了SRC和SRS兩個(gè)核心部分。它們之間的通信會(huì )話(huà)包括了錄音內容本身和一些相關(guān)的metadata,通過(guò)錄音內容和metadata的關(guān)聯(lián),系統就可以實(shí)現對SIP呼叫的媒體錄音的完成流程處理。因為對SIP呼叫的錄音,涉及了很多的業(yè)務(wù)模式和其他相關(guān)的技術(shù),因此,其規范也相對比較寬泛,不可能?chē)栏裣薅ǖ椒浅<毠澋募夹g(shù)范疇。讀者一定要清楚,一些其他業(yè)務(wù)要求和技術(shù)要素不在此官方的說(shuō)明范圍之內。這些要素包括:
- 關(guān)于法律強制錄音的規定流程不在此規范討論范圍之內
- 關(guān)于媒體注入,編碼轉換,安全問(wèn)題不在本規范討論范圍之內
- 通過(guò)網(wǎng)絡(luò )鏡像方式錄音Passive 錄音方式不在本規范討論范圍之內
此規范僅討論active 錄音方式,和如何通過(guò)SRC對SRS發(fā)送媒體流的處理場(chǎng)景。以下是一個(gè)關(guān)于SIPREC和SIP呼叫流程的圖例說(shuō)明:

在以上的圖例中,用戶(hù)端可以是SIP終端, 呼叫中心,或者IPPBX,通過(guò)一個(gè)B2BUA實(shí)現對外網(wǎng)呼叫。這里的SRC是SBC,SRC客戶(hù)端再發(fā)送通信會(huì )話(huà)包括SIPREC metadata和RTP到第三方的SIPREC服務(wù)器端。在呼叫環(huán)境中,涉及了各種環(huán)境場(chǎng)景和控制流程,具體細節和各種錄音場(chǎng)景我們在第四章節中做具體說(shuō)明。
3、技術(shù)架構討論-RFC7245
在上面的章節中,我們介紹了關(guān)于SIPREC的一些背景知識和規范的局限性。SIPREC的工作方式是基于SIP媒體會(huì )話(huà)錄音的技術(shù)架構來(lái)實(shí)現的。因此,我們有必要針對媒體錄音技術(shù)架構進(jìn)行討論包括。關(guān)于SIP媒體會(huì )話(huà)錄音的技術(shù)架構,RFC7245對此有明確的規范說(shuō)明。在RFC7245中,官方協(xié)議中首先定義了多個(gè)關(guān)鍵詞,然后說(shuō)明了技術(shù)架構中具體的結構,創(chuàng )建錄音會(huì )話(huà)和記錄metadata數據。
在RFC7245中所規定的幾個(gè)關(guān)鍵詞包括:
- 支持錄音意識用戶(hù)代理- Recording-aware User Agent (UA):此UA可以意識到其拓展已經(jīng)關(guān)聯(lián)到了通信會(huì )話(huà)(CS)。其拓展參數可以通知其UA錄音會(huì )話(huà)已啟動(dòng)或表示其狀態(tài),可以啟動(dòng),暫停和完全停止等消息。
- 無(wú)錄音意識用戶(hù)代理-Recording-unaware User Agent (UA):此UA意識不到其拓展已經(jīng)關(guān)聯(lián)到了通信會(huì )話(huà)(CS)。無(wú)錄音意識代理將通過(guò)其他手段通知其UA錄音會(huì )話(huà)已啟動(dòng)或表示其狀態(tài),可以啟動(dòng),暫停和完全停止等消息。
- Recording Metadata:描述SRS服務(wù)器端需要的相關(guān)錄音身份確認數據,包括通信會(huì )話(huà)和dialog狀態(tài)信息等。一般情況下,這些metadata會(huì )和復制媒體錄音一起發(fā)送到SRS服務(wù)器端。
- Replicated Media:由SRC客戶(hù)端創(chuàng )建的媒體流復制數據流,發(fā)送到SRS服務(wù)器端。它可能包括語(yǔ)音和視頻數據。
其他幾個(gè)概念在下面的章節中會(huì )加以說(shuō)明,包括:Session Recording Server,Session Recording Client,Communication Session (CS)和Recording Session (RS)。
對于介于SRS和SRC之間的錄音會(huì )話(huà)來(lái)說(shuō),它仍然借助了SIP dialogs和SDP的正常處理流程來(lái)進(jìn)行處理。但是,它又對SIP拓展了其他的頭域值(例如,headers,tags等)來(lái)滿(mǎn)足媒體錄音的需求。在此規范中規定,復制的媒體數據需要通過(guò)實(shí)時(shí)方式發(fā)送到SRS服務(wù)器端,不能使用SRC緩存方式發(fā)送。
從媒體錄音的技術(shù)架構來(lái)說(shuō),SRC是一個(gè)邏輯構件,它可以介于多個(gè)應用部署的環(huán)境中。它本身必須是一個(gè)B2BUA的結構,這樣SRC才能對RTP媒體,對SIP信令進(jìn)行控制,最重要的是可以對會(huì )話(huà)進(jìn)行管理。關(guān)于B2BUA的概念,讀者可以查閱筆者的歷史文檔來(lái)進(jìn)一步學(xué)習,這里不再做過(guò)多解釋。另外,特別提醒讀者,SIP proxy不能作為SRC來(lái)工作,因為proxy不能touch到媒體語(yǔ)音流。這就是為什么opensips如果需要支持SIPREC時(shí),opensips必須加載B2BUA模塊,作為一個(gè)B2BUA來(lái)使用。

當然,SIP endpoints也可以作為一個(gè)SRC,這種情況下,終端會(huì )對SRS發(fā)送復制的媒體。如果終端需要對SRS服務(wù)器端發(fā)送錄音時(shí),它可以發(fā)送一個(gè)INVITE請求,創(chuàng )建會(huì )話(huà)后發(fā)送,SRC對SRS發(fā)送媒體錄音。同樣,如果SRS需要啟動(dòng)錄音時(shí),它可以對SRC終端發(fā)送INVITE會(huì )話(huà),然后開(kāi)始錄音。

錄音會(huì )話(huà)可以由SRS或者SRC創(chuàng )建。SRC創(chuàng )建的錄音會(huì )話(huà)的目的是對SRS發(fā)送媒體錄音流數據。如果有SRC創(chuàng )建錄音會(huì )話(huà)時(shí),它主要執行以下幾個(gè)步驟:
- SRC查詢(xún)定位SRS的URL地址,按照解析方式來(lái)解析SRS地址。
- 發(fā)送INVITE請求,創(chuàng )建一個(gè)dialog,然后發(fā)送到SRS。
- 在INVITE請求中包括一個(gè)錄音指示,表示會(huì )話(huà)已經(jīng)創(chuàng )建,希望發(fā)送媒體錄音。
- 如果馬上要發(fā)送復制媒體時(shí),在SDP中包含一個(gè)“a=sendonly”,表示馬上發(fā)送媒體錄音。如果還沒(méi)有準備好發(fā)送媒體的話(huà),包含一個(gè)“a=inactive”。
- 復制的媒體流被錄音然后發(fā)送到SRS服務(wù)器端。
同樣,SRS也可以對SRC發(fā)送請求來(lái)啟動(dòng)一個(gè)錄音會(huì )話(huà),它需要執行以下幾個(gè)流程:
SRS查詢(xún)SRC URL地址,通過(guò)地址解析后獲取SRC地址。
SRS對SRC發(fā)送INVITE請求。
在SRS發(fā)送的INVITE中包括一個(gè)媒體錄音指示,表示要創(chuàng )建一個(gè)錄音會(huì )話(huà)來(lái)進(jìn)行媒體錄音。
確認會(huì )話(huà)數據內容。在實(shí)際環(huán)境中,確認消息取決于SRC的策略設置。
如果馬上要發(fā)送復制媒體時(shí),在SDP中包含一個(gè)“a=sendonly”,表示馬上發(fā)送媒體錄音。如果還沒(méi)有準備好發(fā)送媒體的話(huà),包含一個(gè)“a=inactive”。
如果SRS服務(wù)器端不知道哪個(gè)媒體會(huì )話(huà)需要錄音的話(huà),SRS服務(wù)器端可以執行一個(gè)協(xié)商機制,它可以先對SRC發(fā)送一個(gè)無(wú)實(shí)際意義的INVITE,然后SRC客戶(hù)端對其發(fā)送一個(gè)初始的offer。
在媒體錄音進(jìn)行過(guò)程中,SRS或者SRC任意一方可以暫停或者重新啟動(dòng)錄音。通過(guò)SDP中包含一個(gè)inactive來(lái)暫停錄音,或者通過(guò)SDP中包含“recvonly”或“sendonly”重新啟動(dòng)錄音。
通常情況下,在一個(gè)簡(jiǎn)單的會(huì )話(huà)中,在SRC客戶(hù)端,RTP媒體流可能包含兩個(gè)媒體數據流。這些媒體流必須在發(fā)送到SRS服務(wù)器端之前進(jìn)行混音。如果沒(méi)有混音的媒體發(fā)送到SRS時(shí),需要同時(shí)分開(kāi)發(fā)送兩個(gè)媒體流的metadata。
在實(shí)際部署環(huán)境中,雙方媒體可能需要進(jìn)行媒體轉換處理,B2BUA可以執行此功能。如果SRC端不能執行媒體轉換處理的話(huà),它需要對SRS發(fā)送不同的媒體格式,SRS服務(wù)器端需要支持多種媒體格式。
4、SIPREC使用場(chǎng)景討論
- 在SIPREC的規范中,它說(shuō)明了幾個(gè)基于SIP的錄音使用場(chǎng)景。這些場(chǎng)景都可以支持SIPREC規范RFC6341。在此規范中,一些必要的定義需要再次說(shuō)明一下:
- SRS-全稱(chēng)是Session Recording Server,它是一個(gè)具體的媒體服務(wù)器或媒體采集服務(wù)器,是一個(gè)用戶(hù)代理,同時(shí)匯總各種媒體流的metadata。SRS典型的部署方式是一個(gè)多口可拓展的服務(wù)器類(lèi)型。
- SRC-全稱(chēng)是Session Recording Client,它是一個(gè)SIP用戶(hù)代理,負責對服務(wù)器端發(fā)送媒體流數據,它本身是一個(gè)邏輯功能單元,可以支持多個(gè)物理設備,在實(shí)際應用環(huán)境中,SRC可以是SIP終端話(huà)機,媒體網(wǎng)關(guān)或者SBC。SRC同時(shí)對SRS服務(wù)器發(fā)送metadata。
- Communication Session (CS),通信會(huì )話(huà)創(chuàng )建于一個(gè)SIP或者多個(gè)用戶(hù)代理之間的會(huì )話(huà),是一個(gè)正在被錄音的會(huì )話(huà)對象。
- Recording Session (RS):為通信會(huì )話(huà)(CS)錄音目的創(chuàng )建的介于SRS和SRC之間的SIP會(huì )話(huà)。
關(guān)于SRS,SRC和CS直接的關(guān)系,讀者可查閱此示例:

在RFC6341中說(shuō)明了12個(gè)應用場(chǎng)景,每一種場(chǎng)景都包含了具體的描述。

- 全時(shí)錄音:對RS對一個(gè)CS(參考以下示例),系統對所有呼叫進(jìn)行錄音,典型的應用場(chǎng)景包括呼叫中心,企業(yè)客服和金融呼叫流程等。
- 選擇性錄音:當CS錄音創(chuàng )建后,啟動(dòng)RS錄音。如果CS沒(méi)有啟動(dòng),系統不會(huì )錄音。
- 停止啟動(dòng)錄音:當呼叫在CS期間時(shí),可以啟動(dòng)停止RS錄音。系統可以通過(guò)用戶(hù)界面按鈕或者其他熱鍵啟動(dòng)錄音。這里注意,在CS期間,可能會(huì )生成一個(gè)或者多個(gè)RS錄音。
- 持續錄音:一個(gè)RS可以捕捉一個(gè)或多個(gè)CS錄音。此錄音方式通常應用于某些場(chǎng)景中,例如前臺總機,轉每個(gè)特定的分機號碼或者呼叫。整個(gè)RS需要對多個(gè)環(huán)節中的終端錄音,包括了轉接時(shí)的靜音等。最后,這些錄音的metadata可以關(guān)聯(lián)在一起,錄音文件可以合并。這里可能涉及了編碼協(xié)商的流程。

- 實(shí)時(shí)錄音控制:在RS錄音期間,如果有特別業(yè)務(wù)要求,某些個(gè)人隱私或者安全信息不能錄音時(shí),實(shí)時(shí)錄音控制方式可以停止對某一段時(shí)間內的錄音暫停/關(guān)閉,需要時(shí)重新開(kāi)啟。信用卡信息輸入就是一個(gè)比較常見(jiàn)的例子,如果用戶(hù)需要對系統服務(wù)人員報信用卡或者其他身份信息時(shí)就要暫停錄音。
- IVR入口錄音:對系統IVR進(jìn)行錄音,包括其metadata等。
- 企業(yè)移動(dòng)端錄音:系統對企業(yè)辦公人員進(jìn)行錄音。這些員工可能經(jīng)常不在辦公室環(huán)境中上班,他們經(jīng)常使用移動(dòng)端和企業(yè)呼叫中心或者通信系統進(jìn)行溝通,這些員工的呼叫需要被錄音。比較常見(jiàn)的場(chǎng)景包括銷(xiāo)售人員,保險銷(xiāo)售等。
- 分布式錄音或集中式錄音:一些企業(yè),銀行,連鎖機構等辦公系統的電話(huà)呼叫需要通過(guò)部署在不同地區或者集中管理的電話(huà)系統進(jìn)行呼叫。系統需要對呼叫進(jìn)行錄音,并且對其每個(gè)RS的metadata進(jìn)行存儲。這樣方便管理每一個(gè)呼叫和其相關(guān)人分機。
- 復雜呼叫流程:復雜呼叫流程是一個(gè)比較抽象的說(shuō)法,沒(méi)有特別具體的定義,此場(chǎng)景比較靈活,寬泛。簡(jiǎn)單來(lái)說(shuō),一個(gè)呼叫進(jìn)入到系統用戶(hù),客戶(hù)電話(huà)可能首先被前臺人員接聽(tīng),然后轉到具體的坐席人員。如果坐席人員不能回答客戶(hù)問(wèn)題的話(huà),坐席人員可能需要再呼叫坐席主管,主管來(lái)接聽(tīng)客戶(hù)的電話(huà)。坐席人員在此呼叫流程中需要首先執行呼叫停靠,然后再呼叫他/她的主管,主管接聽(tīng)客戶(hù)電話(huà)以后,坐席掛機。整個(gè)流程稱(chēng)之為復雜呼叫流程,所有的呼叫都需要錄音,并且SRC需要對SRS發(fā)送所有的metadata數據。
- 高可靠性和持續錄音:根據用戶(hù)的需求,此應用場(chǎng)景需要SRS服務(wù)器端一直保持工作狀態(tài),失效還原功能。所有創(chuàng )建的呼叫都能錄音。此場(chǎng)景要求SRS服務(wù)器端必須持續工作,無(wú)呼叫錄音服務(wù)丟失。
- 對通道和多會(huì )話(huà)錄音:一些應用場(chǎng)景要求媒體錄音是一個(gè)或者多個(gè)文件,可以實(shí)現同步存儲或者回放等功能。語(yǔ)音識別引擎可以對其明顯特定的媒體執行ASR/TTS處理。一些多渠道融合的呼叫中心或者IPPBX環(huán)境中可能需要對視頻,IM,其他數據文件進(jìn)行存儲。為了節省存儲空間,一些應用場(chǎng)景中可能需要僅多某些終端在某個(gè)特定時(shí)間段進(jìn)行錄音。
- 實(shí)時(shí)媒體處理:此場(chǎng)景在當前的呼叫中心或客服系統中實(shí)時(shí)質(zhì)檢環(huán)境中使用比較廣泛。SRS服務(wù)器端必須有能力支持語(yǔ)音識別引擎工具,這些偵查工具可以對某一段媒體進(jìn)行ASR和以及相關(guān)語(yǔ)義識別,情緒分析等工具處理,如果發(fā)現其錄音中帶有比較敏感的詞,或者客服人員態(tài)度語(yǔ)氣有問(wèn)題,應用系統的主管人員可以及時(shí)處理。通過(guò)SIPREC的metadata可以非常方便快捷地查詢(xún)到客服人員的電話(huà)座席。
當然,實(shí)現以上基于SIPREC錄音解決方案的話(huà),此規范有31個(gè)要求。筆者這里不立場(chǎng)31個(gè)具體的要求,讀者可以查閱RFC6341。
另外,除了31個(gè)要求以外,此規范討論了關(guān)于錄音存儲和metadata的安全問(wèn)題,讀者也可以查閱RFC6341來(lái)進(jìn)一步學(xué)習。
戶(hù)簽權認證處理和存儲空間回放文件的處理。這些機制都和其他的安全機制是一致的。用戶(hù)可以查閱其他協(xié)議的安全處理機制來(lái)執行。
參考資料:
https://tools.ietf.org/html/rfc6341
https://tools.ietf.org/html/rfc7245
https://www.miarec.com/
www.freepbx.org.cn
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube/configuration/cube-book/voi-sip-recording.pdf
第二部分陸續發(fā)布。


SIPlab@知識星球學(xué)習SIP語(yǔ)音相關(guān)技術(shù)
asterisk@知識星球免費獲取關(guān)于A(yíng)sterisk的完整知識資料
關(guān)注微信公眾號:asterisk-cn,獲得有價(jià)值的Asterisk行業(yè)分享
Asterisk freepbx,FreeSBC技術(shù)文檔: www.freepbx.org.cn
融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
Asterisk/FreePBX中國合作伙伴,官方qq技術(shù)分享群(3000人):589995817