• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 新聞 > 國內 >
     首頁(yè) > 新聞 > 國內 >

    MRCP學(xué)習筆記-控制會(huì )話(huà)的消息體、參數設置和頭域說(shuō)明

    2018-05-31 09:14:36   作者: james.zhu   來(lái)源:CTI論壇   評論:0  點(diǎn)擊:


      在上一節的分享中,我們介紹了消息類(lèi)型和基本語(yǔ)法。為了讓讀者更加清晰地了解具體的消息內容,我們在本章節會(huì )進(jìn)一步介紹消息體的內容,兩種基本的參數設置方式,幾個(gè)標準的頭域值說(shuō)明和安全性討論。
      1、顧名思義,消息體是有多種信息按照一定的順序構成的內容。其格式和SIP協(xié)議的消息體基本相似。以下是基本的內容類(lèi)型:
      這里要注意,在某些環(huán)境中,消息體可以由多個(gè)部分的信息數據來(lái)構成幫助創(chuàng )建一個(gè)完整的消息體。其具體的語(yǔ)法定義格式為:
      Content-Type: multipart/mixed; boundary=a4V3bnq129s8
      以上格式表示其消息體有多個(gè)數據構成,邊界標識(boundary)是a4V3bnq129s8。因為消息體是由多個(gè)數據構成,每個(gè)消息都要設置邊界標識來(lái)確認每個(gè)消息,并且邊界標識必須在起始處和結尾處都標識邊界,以表明這是一個(gè)多數據構成的一個(gè)完整的消息體(--a4V3bnq129s8--),邊界標識符前面的連字符表示消息體初始,結束邊界標識后面帶兩個(gè)連字符表示此完整的信息體結束。讓我們看一下以下示例:
      MRCP/2.0 521 SPEAK 20000
      Channel-Identifier: 43b9ae17@speechsynth
      Content-Type: multipart/mixed; boundary=a4V3bnq129s8
      Content-Length: 374
      --a4V3bnq129s8  // 表示第一個(gè)數據初始,以換行符結束
      Content-Type: text/uri-list
      Content-Length: 68
      http://www.example.com/file1.ssml
      http://www.example.com/file2.ssml
      --a4V3bnq129s8  // 表示第二個(gè)數據初始,以換行符結束
      Content-Type: application/ssml+xml
      Content-Length: 140
      
      
      xmlns="http://www.w3.org/2001/10/synthesis">
      Hello world!
      
      --a4V3bnq129s8--  // 帶了兩個(gè)換行符,表示多消息體數據結束
      MRCP客戶(hù)端對服務(wù)器端發(fā)送了一個(gè)SSML URL列表,包括了需要合成的消息內容,在以上的消息體中,同時(shí)包括了兩個(gè)數據結構。在MRCP的消息體中,可以通過(guò)text/uri-list來(lái)設定一個(gè)或多個(gè)URL。
      2、在某些情況下,我們不需要對會(huì )話(huà)中的某些參數進(jìn)行修改或者調整。但是有一些環(huán)境中,我們可能需要對某些參數進(jìn)行適當調整來(lái)滿(mǎn)足實(shí)時(shí)環(huán)境的要求,因此MRCP提供了兩種不同的參數設置方式來(lái)支持對某些會(huì )話(huà)中的參數進(jìn)行設置。這兩種設置方式是SET-PARAMS和GET-PARAMS。從字面意思,讀者可能就會(huì )明白,一種是用來(lái)設置參數的,另外一種是用來(lái)獲取參數。比較常見(jiàn)的例子如設置語(yǔ)音合成的聲音高低,語(yǔ)音識別的定時(shí)器設置等。現在,我們分別介紹這兩種方式。
      SET-PARAMS通過(guò)頭域來(lái)設定一個(gè)參數設置。如果媒體資源服務(wù)器返回200,則表示媒體資源服務(wù)器可以支持此參數;如果媒體資源服務(wù)器返回403表示媒體資源服務(wù)器識別一個(gè)或多個(gè)參數;404表示媒體資源服務(wù)器認為是無(wú)效參數。
      MRCP客戶(hù)端請求支持了參數設置語(yǔ)音合成的語(yǔ)言設置請求:
    • MRCP/2.099 SET-PARAMS 12309
    • Channel-Identifier:23fa32fg1@speechsynth
    • Speech-Language:fr-FR
      媒體資源服務(wù)器的響應消息:
      MRCP/2.0 77 12309 200  COMPLETE
      Channel-Identifier: 23fa32fg1@speechsynth
      上面我們介紹了如何設置SET-PARAMS 請求,GET-PARAMS 請求的處理也是同樣的原理。對于MRCP 客戶(hù)端對服務(wù)器端發(fā)送的頭域,服務(wù)器端必須返回相應的頭域和其相應的值,并且返回狀態(tài)碼 200,如果服務(wù)器端不能支持一些客戶(hù)端請求的頭域,服務(wù)器端則會(huì )拒絕這個(gè)請求,并且返回403 狀態(tài)碼。
      MRCP客戶(hù)端發(fā)送到服務(wù)器端的請求,要求獲取兩個(gè)具體的參數:
      MRCP/2.0 … GET-PARAMS 543256
      Channel-Identifier:32AECB23433802@speechsynth
      Voice-gender:
      Voice-variant:
      Vendor-Specific-Parameters:com.example.param1;
      com.example.param2
      服務(wù)器端返回到客戶(hù)端的響應和具體參數和其值:
      MRCP/2.0 … 543256 200 COMPLETE
      Channel-Identifier:32AECB23433802@speechsynth
      Voice-gender:female
      Voice-variant:3
      Vendor-Specific-Parameters:com.example.param1="Company Name";
      com.example.param2="124324234@example.com"
      根據MRCP v2 的建議,如果需要獲取的參數比較多的話(huà),返回的數值打包的數據會(huì )非常大,因此這種方法獲取參數的效率比較低,不建議用戶(hù)經(jīng)常使用這種方法來(lái)獲取服務(wù)器參數。
      3、在MRCP協(xié)議中,我們會(huì )使用兩種類(lèi)別的頭域數值。一種是針對媒體資源服務(wù)器的頭(resource-specific headers),另外一種是標準的頭(generic headers)。例如我們上面介紹的兩種管理參數的方式也可以適用于某些頭域設置,也可以適用于指定的媒體服務(wù)器參數設置。
      這里,讀者一定要注意,根據MRCP v2 的規定,generic-header 的頭域值的發(fā)送順序或經(jīng)過(guò)轉發(fā)解析時(shí),中間代理或解析器不能修改以上頭的順序。
      因為標準頭值中包括了多個(gè)具體的參數,因為篇幅的關(guān)系,我們這里不再做具體介紹,我們會(huì )在接下來(lái)的章節中繼續進(jìn)行討論。
      4、安全問(wèn)題對控制協(xié)議來(lái)說(shuō)也是一個(gè)比較大的挑戰。在基于DTMF的語(yǔ)音IVR中,我們也可以輕易獲得查詢(xún)數據,安全人員可以通過(guò)DTMF解析獲取到其登錄密碼或者賬號信息等敏感內容。在MRCP的運行環(huán)境中,我們也會(huì )遇到類(lèi)似的安全問(wèn)題。在控制協(xié)議中,我們的應用程序可能會(huì )同時(shí)需要連接多個(gè)媒體資源服務(wù)器,用戶(hù)可能通過(guò)SPEAK請求來(lái)獲取系統敏感信息,例如密碼等。媒體資源服務(wù)器則會(huì )通過(guò)NLSML 數據格式在事件消息中返回RECOGNITION-COMPLETE,這些消息會(huì )把密碼等敏感數據攜帶在在事件的消息中。為了防止安全隱患的發(fā)送,系統用戶(hù)可以考慮使用TLS或VPN等其他安全機制來(lái)增加系統的安全性。
      5、在本章節的分享中,我們首先介紹了MRCP中消息體的結構,在消息體中特別重點(diǎn)介紹了邊界標志符來(lái)區分數據包結構,筆者然后介紹了兩種管理參數的方式已經(jīng)交互流程,并且介紹了標準的headers,最后簡(jiǎn)單討論了在使用控制會(huì )話(huà)中的安全性問(wèn)題以及安全機制設置。
      在下一個(gè)章節中,我們會(huì )繼續討論generic-header的每個(gè)具體的頭的內容。
            

      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

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

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 绥滨县| 宁强县| 龙游县| 遂昌县| 吉林省| 凯里市| 河曲县| 渝中区| 温泉县| 乌审旗| 乐清市| 铁力市| 同江市| 乾安县| 丰城市| 大宁县| 桑日县| 南通市| 离岛区| 海丰县| 泰兴市| 安康市| 蚌埠市| 沧州市| 乐山市| 宁波市| 安龙县| 朝阳市| 桂平市| 宁城县| 屏南县| 拉萨市| 门头沟区| 焦作市| 伊吾县| 伊春市| 象州县| 古蔺县| 马龙县| 扶风县| 阿图什市| http://444 http://444 http://444 http://444 http://444 http://444