- Channel-Identifier: 此頭域在請求,響應和我事件消息中是必須強制支持的。此值用來(lái)確認通道對消息的唯一性。標準格式為:MRCP會(huì )話(huà)@媒體類(lèi)型:Channel-Identifier: 466453af837@speechrecog
- Active-Request-Id-List:此值可能出現在請求或響應中,但是沒(méi)有在事件消息中出現。此列表可以列出多項請求的ID。此值會(huì )經(jīng)常出現在響應的事件消息中,它可能表示某些請求要被停止或已經(jīng)完成。例如,SPEAK請求中的SPEAK-COMPLETE或RECOGNIZE中的RECOGNITION-COMPLETE可選消息。此值也可能出現在語(yǔ)音合成的媒體類(lèi)型中,例如PAUSE等。例如,MRCP客戶(hù)端可以發(fā)出一個(gè)STOP請求,要求某些請求停止:
- Content-Base:此頭可以包含一個(gè)相對的URL地址,此地址包含在請求中的可能需要解析的Content-Base,用來(lái)支持某些語(yǔ)法。語(yǔ)法格式:
- Content-Encoding:此值定義對內容解析解析。如果有多個(gè)解析列表支持時(shí)。語(yǔ)法格式示例:Content-Encoding: gzip。
- Content-ID:此值是對消息內容在消息體中進(jìn)行識別的ID號,或作為多個(gè)消息中的單個(gè)ID號。如果此值出現在請求中,它要求媒體資源服務(wù)器在一定會(huì )話(huà)時(shí)間內保存媒體內容數據,將來(lái)通過(guò)MRCP的URL獲取此值。其格式示例為:Content-ID: menu@example.com。
- Content-Length:此值表示消息體的長(cháng)度。
- Content-Location:此值表示消息體中的資源定位。其語(yǔ)法格式為:

這里支持了相對路徑和絕對路徑。媒體資源服務(wù)器可以通過(guò)此設置來(lái)優(yōu)化某些操作。用戶(hù)可以通過(guò)緩存來(lái)獲取歷史記錄值,而不需要每次通過(guò)媒體資源服務(wù)器來(lái)獲取。
- Content-Type:MRCP支持了一系列非常嚴格的MIME媒體類(lèi)型來(lái)表示其內容,例如,speech synthesis markup,speech 語(yǔ)法和識別結果。其語(yǔ)法格式示例為:Content-Type: application/ssml+xml。
- Proxy-Sync-Id:通過(guò)媒體服務(wù)器結合事件來(lái)此值用來(lái)提供一種協(xié)調功能,當在媒體資源中發(fā)生DTMF輸入或語(yǔ)音合成后,系統檢測到了一個(gè)打斷行為,通過(guò)添加一個(gè)事件ID來(lái)跟蹤消息。當媒體資源服務(wù)器第一次在媒體流中遇到語(yǔ)音或DTMF輸入時(shí),媒體資源服務(wù)器端會(huì )檢測到一個(gè)打斷的檢測消息,那么MRCP客戶(hù)端就會(huì )從事件中收到一個(gè)START-OF-INPUT。然后,MRCP客戶(hù)端會(huì )馬上發(fā)送一個(gè)BARGE-IN-OCCURRED請求到語(yǔ)音合成服務(wù)器端,服務(wù)器端則決定是否停止語(yǔ)音數據的回放。這里,是否回放還要取決于SPEAK請求中設置了參數Kill-On-Barge-In為true。在一些部署應用環(huán)境中,語(yǔ)音合成服務(wù)器和輸入檢測功能結合非常緊密,檢測響應的速度非常快,檢測協(xié)調功能是通過(guò)其內部進(jìn)行的。為了實(shí)現其類(lèi)似的部署環(huán)境,在START-OF-INPUT的事件消息中,媒體資源服務(wù)器需要添加一個(gè)識別碼來(lái)確認此事件,這樣就構成了一個(gè)Proxy-Sync-Id。MRCP 客戶(hù)端會(huì )在接下來(lái)的BARGE-IN-OCCURRED請求中轉發(fā)同樣的ID,這樣媒體資源會(huì )使用同樣的打斷檢測事件中的ID來(lái)協(xié)調這個(gè)請求。其格式為:proxy-sync-id = "Proxy-Sync-Id" ":" 1*VCHAR CRLF。
- Accept:通常情況下,表示在響應消息中,指定的某些媒體類(lèi)型是可以接受的。此頭域也用來(lái)說(shuō)明在客戶(hù)端的請求中限定了某些媒體類(lèi)型。例如:Accept: application/sdp。
- Accept-Charset:此頭域用來(lái)設置請求中可接受的字符設置方式。它在某些環(huán)境中是非常有用的,例如指定在RECOGNITION-COMPLETE事件中的結果(NLSML)中的字符設置。
- Fetch-Timeout:此值支持MRCP客戶(hù)端通過(guò)URL來(lái)訪(fǎng)問(wèn)媒體資源服務(wù)器的超時(shí)設置。默認以毫秒為單位。
- Cache-Control:此頭值用來(lái)定義緩存獲取的控制方式。在上面的頭域設置中,我們如果使用了緩存的設置。這里,的設置會(huì )控制緩存的獲取規則。它實(shí)際上繼承了HTTP請求中的Cache-Control方式,一般都支持了刷新時(shí)間,存活時(shí)長(cháng)等參數。具體的語(yǔ)法格式為:

這里,我們通常會(huì )設置cache-directive 的訪(fǎng)問(wèn)機制。max-age 表示MRCP客戶(hù)端會(huì )容許媒體資源服務(wù)器端在一定的時(shí)間內使用此內容數據。max-stale表示MRCP客戶(hù)端允許媒體資源服務(wù)器端使用緩存的數據,此數據訪(fǎng)問(wèn)超時(shí)設置已經(jīng)超過(guò)了限定的值(max-stale)。min-fresh表示MRCP客戶(hù)端允許的HTTP服務(wù)器最小的響應時(shí)間設置。
Set-Cookie / Set-Cookie2:此值用來(lái)跟蹤MRCP客戶(hù)端的訪(fǎng)問(wèn)狀態(tài),它實(shí)際上繼承了HTTP的Cookies 使用方式。系統可以通過(guò)SET-PARAMS和GET-PARAMS來(lái)獲取當前的數據,例如:

Vendor-Specific:此值支持MRCP客戶(hù)端獲取具體的參數信息內容。獲取到的數據可能是多個(gè)參數,參數之間通過(guò)分號加以區分。

Logging-Tag:此頭域僅使用在SET-PARAMS和GET-PARAMS中。此頭域會(huì )和會(huì )話(huà)消息所關(guān)聯(lián)。媒體資源服務(wù)器可以此標簽來(lái)標注一個(gè)特別的會(huì )話(huà)內容,支持管理員對特定的會(huì )話(huà)進(jìn)行排查。
在本章節,我們僅對MRCP中會(huì )話(huà)的16個(gè)頭域值逐一進(jìn)行了介紹。這16個(gè)頭值也是MRCP 的標準頭值。這些頭值有的可以支持set方式,有的可以支持get方式。具體的應用我們將在未來(lái)的講座中會(huì )做更加詳細地介紹。


unimrcp-MRCP協(xié)議學(xué)習分享,QQ群號:208136295
關(guān)注微信公眾號:asterisk-cn,獲得有價(jià)值的行業(yè)分享
freepbx 技術(shù)論壇:www.ippbx.org.cn
Asterisk, freepbx技術(shù)文檔: www.freepbx.org.cn
歐米(Omni)智能客服解決方案
融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com