您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

MRCP学习笔记-控制会话中的Generic headers

2018-06-04 13:31:44   作者: james.zhu   来源:CTI论坛   评论:0  点击:


  前面的讲座中,笔者介绍了控制会话的消息体,参数设置和头域值的简单说明。今天,我们会进一步详细介绍MRCP的Generic headers。在MRCP中,Generic headers 包括以下头域值:
  • Channel-Identifier: 此头域在请求,响应和我事件消息中是必须强制支持的。此值用来确认通道对消息的唯一性。标准格式为:MRCP会话@媒体类型:Channel-Identifier: 466453af837@speechrecog
  • Active-Request-Id-List:此值可能出现在请求或响应中,但是没有在事件消息中出现。此列表可以列出多项请求的ID。此值会经常出现在响应的事件消息中,它可能表示某些请求要被停止或已经完成。例如,SPEAK请求中的SPEAK-COMPLETE或RECOGNIZE中的RECOGNITION-COMPLETE可选消息。此值也可能出现在语音合成的媒体类型中,例如PAUSE等。例如,MRCP客户端可以发出一个STOP请求,要求某些请求停止:
  Active-Request-Id-List: 00001,00002
  • Content-Base:此头可以包含一个相对的URL地址,此地址包含在请求中的可能需要解析的Content-Base,用来支持某些语法。语法格式:
  Content-Base: http://www.example.com/myapp/
  • Content-Encoding:此值定义对内容解析解析。如果有多个解析列表支持时。语法格式示例:Content-Encoding: gzip。
  • Content-ID:此值是对消息内容在消息体中进行识别的ID号,或作为多个消息中的单个ID号。如果此值出现在请求中,它要求媒体资源服务器在一定会话时间内保存媒体内容数据,将来通过MRCP的URL获取此值。其格式示例为:Content-ID: menu@example.com。
  • Content-Length:此值表示消息体的长度。
  • Content-Location:此值表示消息体中的资源定位。其语法格式为:
  这里支持了相对路径和绝对路径。媒体资源服务器可以通过此设置来优化某些操作。用户可以通过缓存来获取历史记录值,而不需要每次通过媒体资源服务器来获取。
  • Content-Type:MRCP支持了一系列非常严格的MIME媒体类型来表示其内容,例如,speech synthesis markup,speech 语法和识别结果。其语法格式示例为:Content-Type: application/ssml+xml。
  • Proxy-Sync-Id:通过媒体服务器结合事件来此值用来提供一种协调功能,当在媒体资源中发生DTMF输入或语音合成后,系统检测到了一个打断行为,通过添加一个事件ID来跟踪消息。当媒体资源服务器第一次在媒体流中遇到语音或DTMF输入时,媒体资源服务器端会检测到一个打断的检测消息,那么MRCP客户端就会从事件中收到一个START-OF-INPUT。然后,MRCP客户端会马上发送一个BARGE-IN-OCCURRED请求到语音合成服务器端,服务器端则决定是否停止语音数据的回放。这里,是否回放还要取决于SPEAK请求中设置了参数Kill-On-Barge-In为true。在一些部署应用环境中,语音合成服务器和输入检测功能结合非常紧密,检测响应的速度非常快,检测协调功能是通过其内部进行的。为了实现其类似的部署环境,在START-OF-INPUT的事件消息中,媒体资源服务器需要添加一个识别码来确认此事件,这样就构成了一个Proxy-Sync-Id。MRCP 客户端会在接下来的BARGE-IN-OCCURRED请求中转发同样的ID,这样媒体资源会使用同样的打断检测事件中的ID来协调这个请求。其格式为:proxy-sync-id = "Proxy-Sync-Id" ":" 1*VCHAR CRLF。
  • Accept:通常情况下,表示在响应消息中,指定的某些媒体类型是可以接受的。此头域也用来说明在客户端的请求中限定了某些媒体类型。例如:Accept: application/sdp。
  • Accept-Charset:此头域用来设置请求中可接受的字符设置方式。它在某些环境中是非常有用的,例如指定在RECOGNITION-COMPLETE事件中的结果(NLSML)中的字符设置。
  • Fetch-Timeout:此值支持MRCP客户端通过URL来访问媒体资源服务器的超时设置。默认以毫秒为单位。
  • Cache-Control:此头值用来定义缓存获取的控制方式。在上面的头域设置中,我们如果使用了缓存的设置。这里,的设置会控制缓存的获取规则。它实际上继承了HTTP请求中的Cache-Control方式,一般都支持了刷新时间,存活时长等参数。具体的语法格式为:
  这里,我们通常会设置cache-directive 的访问机制。max-age 表示MRCP客户端会容许媒体资源服务器端在一定的时间内使用此内容数据。max-stale表示MRCP客户端允许媒体资源服务器端使用缓存的数据,此数据访问超时设置已经超过了限定的值(max-stale)。min-fresh表示MRCP客户端允许的HTTP服务器最小的响应时间设置。
  Set-Cookie / Set-Cookie2:此值用来跟踪MRCP客户端的访问状态,它实际上继承了HTTP的Cookies 使用方式。系统可以通过SET-PARAMS和GET-PARAMS来获取当前的数据,例如:
  Vendor-Specific:此值支持MRCP客户端获取具体的参数信息内容。获取到的数据可能是多个参数,参数之间通过分号加以区分。
  Logging-Tag:此头域仅使用在SET-PARAMS和GET-PARAMS中。此头域会和会话消息所关联。媒体资源服务器可以此标签来标注一个特别的会话内容,支持管理员对特定的会话进行排查。
  在本章节,我们仅对MRCP中会话的16个头域值逐一进行了介绍。这16个头值也是MRCP 的标准头值。这些头值有的可以支持set方式,有的可以支持get方式。具体的应用我们将在未来的讲座中会做更加详细地介绍。
      
 
  unimrcp-MRCP协议学习分享,QQ群号:208136295
  关注微信公众号:asterisk-cn,获得有价值的行业分享
  freepbx 技术论坛:www.ippbx.org.cn
  Asterisk, freepbx技术文档: www.freepbx.org.cn
  欧米(Omni)智能客服解决方案
  融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com
 
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题