跳到主要内容
版本:4.0

消息模型转换脚本开发参考

脚本文件的位置

部署时,脚本文件应放到 $APP_PATH/config/script 目录下。其中,$APP_PATH 表示服务程序部署的目录。

convertTermCmd 和 getAckInfo 函数

convertTermCmd 函数

/**
* 将 TermCmd 模型的指令转换成企业侧的 JSON 字符串消息(返回后,由媒体服务投递到 `term-cmd` 消息队列)
*
* @param {TermCmd} cmd 指令
* @return {string | undefined} JSON 字符串消息,本例中,其结构为 `EyeGatewayMsg`
*/
function convertTermCmd(cmd): string {}

当媒体服务要下发终端指令时,会将要下发的 TermCmd 指令对象转换成 JSON 字符串调用 convertTermCmd 函数,再将函数返回的字符串投递到 term-cmd 消息队列。

getAckInfo 函数

/**
* 将企业侧的终端应答消息 JSON 字符串转换成 ActInfo 对象。
* 媒体服务从 `cmdStateChanged` 消息队列读取到将企业侧的JSON消息时,调用本方法将JSON消息转换成 ActInfo 对象。
*
* @param {string} strMsg 终端应答的 JSON 字符串,本例中,其结构为 `EyeGatewayMsg`
* @return {AckInfo | undefined} 返回 解释后的 ActInfo 对象,如果消息不相关,或解释失败,可返回 undefined
*/
export function getAckInfo(strMsg){}

内置模块及隐含工具类

为方便开发,媒体服务定义了一个名为 helper.mjs 的模块,模块中定义了 TermCmdAckInfo 两个类的结构。这个模块是一个内置的模块,直接引用即可,无需部署。

引用时,只需:

import {AckInfo, TermCmd} from './helper.mjs';

另外内置了一个隐含的工具类 utils,这个工具类定义了以下函数:

/**
* 将 YYYY-MM-DD hh:mm:ss 格式的北京时间字符串转换成 epoch millis
*
* @param {string} s YYYY-MM-DD hh:mm:ss 格式的北京时间字符串
* @return number epoch milli-seconds
*/
function strToMillis(s): number {}

/**
* 将 epoch millis 转换成YYYY-MM-DD hh:mm:ss 格式的北京时间字符串
* @param {number} millis epoch milli-seconds
* @return YYYY-MM-DD hh:mm:ss 格式的北京时间字符串
*/
function millisToStr(millis): string {}

/**
* 将 epoch millis 转换成 OFFSET_DATE_TIME 格式的字符串,结果如:2024-10-09T11:32:36.149+08:00
*
* @param millis epoch milli-seconds
* @return OFFSET_DATE_TIME 格式的字符串
*/
function millisToOdtStr(millis): string {}

/**
*
* @param s
*/
function hexToGbk(s: string): string {}

这个类可以直接引用,如调用 hexToGbk:

ap.factoryId = utils.hexToGbk(params.get("00010004"));

脚本的调试日志