跳到主要内容
版本:4.0

消息模型转换概览

当采用消息队列与媒体服务进行对接时,集成系统与媒体服务之间的数据模型通常存在较大的差异,因此也面临这些消息与集成系统的数据模型之间的适配问题。 而消息模型的适配问题,主要存在于指令、指令应答这两个模型中(其他消息,一般在集成系统中并没有对应的概念,因此也不存在适配问题),针对这两个模型, 媒体服务从 4.0 开始,针对term-cmdcmd-state-chg 两个队列,提供基于JSON数据格式 和 JavaScript 脚本的消息转换机制,为集成企业的消息适配提供便利。 如果企业应用本身已在使用消息队列,并且消息数据使用的也是 JSON 格式,则可以利用本文所述的消息模型转换机制来进行消息转换。如果这个条件不满足, 则需要企业应用另行开发消息模型的转换了。

其基本工作原理是:

  1. 媒体服务加载执行消息转换的 JavaScript 脚本文件,脚本文件中导出了约定的 convertTermCmdgetAckInfo 两个函数
  2. 当媒体服务要下发指令时,会将 TermCmd 消息模型转成字符串,并为参数 调用 convertTermCmd 函数,然后从 convertTermCmd 得到转换后的企业应用自身格式的消息,再将消息 term-cmd 队列投递指令消息
  3. 当指令应答时,企业应用将自已格式的消息投递到 cmd-state-chg,媒体服务收到消息后,会将消息转换成字符串,并作为参数调用 getAckInfo 函数,然后从 getAckInfo 得到转换后的 AckInfoAckInfo 包含了媒体服务需要的应答的相关信息

要启用指令、指令应答的消息模型转换

  1. 编写 一个JavaScript 的消息转换脚本文件(module),放置到 服务程序的 config/script 目录下,文件名应使用只由字母数字组成的文件名,以 .mjs 为文件扩展名,如 e-eye.mjs,文件名(e-eye)在配置文件要引用到。