- MRCP協(xié)議學(xué)習(xí)筆記-MRCP背景知識(shí)介紹
- MRCP協(xié)議學(xué)習(xí)筆記-語(yǔ)音處理的基本原理
- MRCP協(xié)議學(xué)習(xí)筆記-MRCP概要
- MRCP學(xué)習(xí)筆記 - 通過(guò)SIP協(xié)議實(shí)現(xiàn)會(huì)話管理
- MRCP協(xié)議學(xué)習(xí)筆記-控制會(huì)話中的消息類型說(shuō)明
1、我們前面的概要中已經(jīng)介紹過(guò),MRCP 支持了三種類型的MRCP消息。這三種消息可以支持整個(gè)MRCP協(xié)商的流程。它們分別是:request 消息,response消息和event消息。MRCP 客戶端對(duì)媒體資源服務(wù)器端發(fā)起一個(gè)請(qǐng)求,然后媒體資源服務(wù)器端會(huì)響應(yīng)一個(gè)消息,媒體資源服務(wù)器對(duì)每個(gè)請(qǐng)求消息綁定一個(gè)事件狀態(tài)的消息,通知客戶端請(qǐng)求的處理狀態(tài)。以下實(shí)例是一個(gè)最簡(jiǎn)單的處理流程,媒體服務(wù)器端立即回復(fù)了一個(gè)所有事件完成的消息。
在下面的示例中則包含了多個(gè)事件響應(yīng)消息,使用這些事件消息來(lái)說(shuō)明媒體資源服務(wù)器對(duì)事件的處理狀態(tài),讓客戶端能夠獲悉當(dāng)前事件的狀態(tài)。
在MRCP的事件狀態(tài)中,事件狀態(tài)包含了三種不同的狀態(tài)消息:COMPLETE,PENDING和IN-PROGRESS。
2、MRCP 事件狀態(tài)都表示了各自不同的處理流程。如果熟悉SIP事件的讀者可能也了解SIP的消息事件,MRCP的事件狀態(tài)事實(shí)上和SIP的沒有太大的差別。我們從字面意思都可以理解每個(gè)狀態(tài)的含義。我們這里介紹一下三種狀態(tài)的具體含義:
- PENDING:表示此請(qǐng)求已經(jīng)在媒體資源服務(wù)器的請(qǐng)求隊(duì)列中,等待處理。處理流程是按照先進(jìn)先出的方式進(jìn)行,需要進(jìn)一步的事件更新。
- IN-PROGRESS:表示請(qǐng)求正在被處理,還沒有完成,需要進(jìn)一步的事件更新。
- COMPLETE:表示此請(qǐng)求已經(jīng)完成,媒體資源服務(wù)器不會(huì)對(duì)MRCP客戶端繼續(xù)發(fā)送任何關(guān)于此請(qǐng)求的響應(yīng)消息。
3、請(qǐng)求消息有時(shí)也稱之為:request methods。它具有自己特定的語(yǔ)法格式,它是由MRCP客戶端發(fā)起。其初始格式為:
MRCP/2.0 message-length method-name request-id
第一部分表示MRCP版本,一般情況下,都是一樣的內(nèi)容。message-length則設(shè)定了消息體的長(zhǎng)度,它包括了起始行,頭域值和消息體本身。
method-name則根據(jù)客戶端對(duì)不同的媒體資源類型請(qǐng)求來(lái)支持不同的method。SPEAK是針對(duì)語(yǔ)音合成的媒體資源類型來(lái)說(shuō)的;RECOGNIZE則對(duì)語(yǔ)音識(shí)別來(lái)說(shuō)的。另外SET-PARAMS 和 GET-PARAMS是支持所有媒體類型,支持設(shè)置媒體類型參數(shù)和獲取參數(shù)。
request-id是一個(gè)唯一的請(qǐng)求ID,一個(gè)32bit的整數(shù)值,初始化時(shí),此值比較小,以后在此會(huì)話中,因?yàn)椴粩鄤?chuàng)建新的請(qǐng)求,此值會(huì)逐漸遞增。以下是一個(gè)請(qǐng)求示例的消息內(nèi)容:
MRCP/2.0 267 SPEAK 10000
Channel-Identifier: 43b9ae17@speechsynth
Content-Type: application/ssml+xml
Content-Length: 150
xmlns="http://www.w3.org/2001/10/synthesis">
Hello world!
4、響應(yīng)消息是由媒體資源服務(wù)器返回的消息,其起始格式為:
MRCP/2.0 message-length request-id status-code request-state
此格式的前三個(gè)值的含義和請(qǐng)求中的格式是一樣的,我們這里不再介紹。媒體資源服務(wù)器端響應(yīng)消息中增加了status-code 和request-state。
這里的狀態(tài)碼和SIP中的狀態(tài)碼也基本類似。2xx 表示成功狀態(tài)碼;4xx表示客戶端錯(cuò)誤碼;5xx表示服務(wù)器端錯(cuò)誤碼。
請(qǐng)求狀態(tài)事件(request-state)剛才我們做了介紹,表示媒體資源服務(wù)器端對(duì)請(qǐng)求的處理響應(yīng)。具體的格式為:
MRCP/2.0 79 10000 200 IN-PROGRESS
Channel-Identifier: 43b9ae17@speechsynth
以上消息表示媒體資源服務(wù)器正在處理此通道的語(yǔ)音合成請(qǐng)求。
5、在媒體資源服務(wù)器的消息中會(huì)攜帶事件消息,其消息內(nèi)容表示了對(duì)MRCP客戶端請(qǐng)求的事件正在處理的狀態(tài),在一個(gè)會(huì)話過(guò)程中,可能有幾個(gè)不同的事件進(jìn)行更新。事件消息體支持了不同的事件狀態(tài)來(lái)表示處理狀態(tài),其基本格式為:
MRCP/2.0 message-length event-name request-id request-state
前面兩個(gè)值和請(qǐng)求響應(yīng)的是一樣的。在事件消息中增加了event-name, request-id和request-state。
event-name表示一個(gè)特定的事件。不同的資源媒體類型可以提供不同的事件消息名稱。例如,SPEAK-COMPLETE是針對(duì)語(yǔ)音合成的媒體資源類型來(lái)說(shuō)的,而RECOGNITION-COMPLETE則是針對(duì)語(yǔ)音識(shí)別媒體資源類型來(lái)說(shuō)的。
request-id是相對(duì)應(yīng)請(qǐng)求中的事件。這里要注意,事件支持對(duì)請(qǐng)求處理的結(jié)果進(jìn)行發(fā)送,它不會(huì)任意發(fā)送。
request-state表示媒體資源服務(wù)器當(dāng)前對(duì)請(qǐng)求的處理狀態(tài),我們前面也做了介紹,不再做更多介紹。下面的示例說(shuō)明,媒體資源服務(wù)器生成的響應(yīng)事件消息,媒體資源服務(wù)器正在進(jìn)行語(yǔ)音識(shí)別的事件處理,event-id是10000,檢測(cè)的是DTMF輸入。
MRCP/2.0 109 START-OF-INPUT 10000 IN-PROGRESS
Channel-Identifier: 43b9ae17@speechrecog
Input-Type: dtmf
MRCP/2.0 109 START-OF-INPUT 10000 IN-PROGRESS
Channel-Identifier: 43b9ae17@speechrecog
Input-Type: dtmf
MRCP/2.0 109 START-OF-INPUT 10000 IN-PROGRESS
Channel-Identifier: 43b9ae17@speechrecog
Input-Type: dtmf
6、在本章節(jié)的學(xué)習(xí)中,筆者首先介紹了MRCP中的三種消息體類型,然后介紹了事件消息體的三種事件消息,筆者進(jìn)一步說(shuō)明了請(qǐng)求消息體格式,響應(yīng)消息體格式和事件消息體的格式,根據(jù)不同的格式介紹了具體的數(shù)值內(nèi)容和響應(yīng)的示例。通過(guò)以上完整的介紹,讀者可以非常清楚地了解MRCP消息的基本結(jié)構(gòu)和其具體的含義。在接下來(lái)的章節(jié)中,我們會(huì)更加詳細(xì)地介紹消息體,頭域值和基本的頭域值內(nèi)容。
unimrcp-MRCP協(xié)議學(xué)習(xí)分享,QQ群號(hào):208136295
關(guān)注微信公眾號(hào):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