您當(dāng)前的位置是:  首頁(yè) > 新聞 > 國(guó)內(nèi) >
 首頁(yè) > 新聞 > 國(guó)內(nèi) >

MRCP協(xié)議學(xué)習(xí)筆記-控制會(huì)話(huà)中的消息類(lèi)型說(shuō)明

2018-05-28 10:30:05   作者:   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  在前面的分享中,我們簡(jiǎn)單介紹了MRCP客戶(hù)端與服務(wù)器端如何通過(guò)TCP對(duì)會(huì)話(huà)通道進(jìn)行管理,F(xiàn)在我們對(duì)控制通道的管理進(jìn)行更加詳細(xì)地介紹,具體介紹的內(nèi)容包括:不同的消息類(lèi)型,其消息結(jié)構(gòu),消息交互的模式,定義和獲取會(huì)話(huà)參數(shù)的機(jī)制,媒體資源服務(wù)器所使用的標(biāo)準(zhǔn)頭消息體。因?yàn)槲覀儍?nèi)容和篇幅的關(guān)系,我們分為幾個(gè)部分來(lái)逐步介紹以上內(nèi)容,今天的講座僅覆蓋控制會(huì)話(huà)的第一部分內(nèi)容-三種不同的消息類(lèi)型。
  1、我們前面的概要中已經(jīng)介紹過(guò),MRCP 支持了三種類(lèi)型的MRCP消息。這三種消息可以支持整個(gè)MRCP協(xié)商的流程。它們分別是:request 消息,response消息和event消息。MRCP 客戶(hù)端對(duì)媒體資源服務(wù)器端發(fā)起一個(gè)請(qǐng)求,然后媒體資源服務(wù)器端會(huì)響應(yīng)一個(gè)消息,媒體資源服務(wù)器對(duì)每個(gè)請(qǐng)求消息綁定一個(gè)事件狀態(tài)的消息,通知客戶(hù)端請(qǐng)求的處理狀態(tài)。以下實(shí)例是一個(gè)最簡(jiǎn)單的處理流程,媒體服務(wù)器端立即回復(fù)了一個(gè)所有事件完成的消息。
  在下面的示例中則包含了多個(gè)事件響應(yīng)消息,使用這些事件消息來(lái)說(shuō)明媒體資源服務(wù)器對(duì)事件的處理狀態(tài),讓客戶(hù)端能夠獲悉當(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的沒(méi)有太大的差別。我們從字面意思都可以理解每個(gè)狀態(tài)的含義。我們這里介紹一下三種狀態(tài)的具體含義:
  • PENDING:表示此請(qǐng)求已經(jīng)在媒體資源服務(wù)器的請(qǐng)求隊(duì)列中,等待處理。處理流程是按照先進(jìn)先出的方式進(jìn)行,需要進(jìn)一步的事件更新。
  • IN-PROGRESS:表示請(qǐng)求正在被處理,還沒(méi)有完成,需要進(jìn)一步的事件更新。
  • COMPLETE:表示此請(qǐng)求已經(jīng)完成,媒體資源服務(wù)器不會(huì)對(duì)MRCP客戶(hù)端繼續(xù)發(fā)送任何關(guān)于此請(qǐng)求的響應(yīng)消息。
  3、請(qǐng)求消息有時(shí)也稱(chēng)之為:request methods。它具有自己特定的語(yǔ)法格式,它是由MRCP客戶(hù)端發(fā)起。其初始格式為:
  MRCP/2.0 message-length method-name request-id
  第一部分表示MRCP版本,一般情況下,都是一樣的內(nèi)容。message-length則設(shè)定了消息體的長(zhǎng)度,它包括了起始行,頭域值和消息體本身。
  method-name則根據(jù)客戶(hù)端對(duì)不同的媒體資源類(lèi)型請(qǐng)求來(lái)支持不同的method。SPEAK是針對(duì)語(yǔ)音合成的媒體資源類(lèi)型來(lái)說(shuō)的;RECOGNIZE則對(duì)語(yǔ)音識(shí)別來(lái)說(shuō)的。另外SET-PARAMS 和 GET-PARAMS是支持所有媒體類(lèi)型,支持設(shè)置媒體類(lèi)型參數(shù)和獲取參數(shù)。
  request-id是一個(gè)唯一的請(qǐng)求ID,一個(gè)32bit的整數(shù)值,初始化時(shí),此值比較小,以后在此會(huì)話(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)碼也基本類(lèi)似。2xx 表示成功狀態(tài)碼;4xx表示客戶(hù)端錯(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客戶(hù)端請(qǐng)求的事件正在處理的狀態(tài),在一個(gè)會(huì)話(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è)特定的事件。不同的資源媒體類(lèi)型可以提供不同的事件消息名稱(chēng)。例如,SPEAK-COMPLETE是針對(duì)語(yǔ)音合成的媒體資源類(lèi)型來(lái)說(shuō)的,而RECOGNITION-COMPLETE則是針對(duì)語(yǔ)音識(shí)別媒體資源類(lèi)型來(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中的三種消息體類(lèi)型,然后介紹了事件消息體的三種事件消息,筆者進(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

【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專(zhuān)題