告警推送说明
告警推送¶
使用告警脚本¶
厂家可以通过编写Javascript脚本自定义针对产品的告警推送逻辑。脚本使用ES5语法。以下是一个简单例子:
var onDevSend = function(message) {
if (message.cmdId === 1 && message.switch === 1){
router.addNotification('灯开了', 'light = ' + message.light, message);
router.sendAppPush('灯开了', 'light = ' + message.light);
}
};
该脚本表示设备如果上报命令(cmdId=1) 中switch
的值为1,便为设备用户的消息中心中添加一条记录,并且用APP推送消息。
router是预定义的消息路由,里面定义了添加消息及APP推送等接口。所有可用的方法见下面列表。
router.addNotification¶
语法¶
router.addNotification(subject, content)
router.addNotification(subject, content, reportData)
router.addNotification(subject, content, reportData, options)
参数¶
名称 | 类型 | 是否必须 | 例子 | 说明 |
---|---|---|---|---|
subject | String、Object | 是 | 'foo' {'zh': 'foo', 'en': 'foo'} | 通知标题,可以使用字符串或LanguageTag-String 键值对 |
content | String、Object | 是 | 'foo' {'zh': 'foo', 'en': 'foo'} | 通知内容,可以使用字符串或LanguageTag-String 键值对 |
reportData | Object | 否 | {foo: 'bar'} | 自动定义上报数据,用户在拉取设备告警时可以获得该值,默认不会显示 |
options | Object | 否 | {type: 'INFO'} | 其他选项 |
options.type | String | 否 | WARNING | 通知类型 [ WARNING, INFO ], 如果options为空,或者未指定options.type,则默认为'WARNING' |
多语言匹配规则
subject或content使用LanguageTag-String 键值对时将根据用户上报的locale返回响应的内容, 具体匹配规则如下:
- 如果用户未上报locale则默认用户locale为
en
- 如果存在精确匹配则返回精确匹配内容
- 查找最接近的匹配,例如若用户locale为
zh-CN#hans
,则依次查找zh-CN#Hans -> zh-CN -> zh
- 返回键值对的第一项
例如,subject为{en: 'foo', zh: '中文'}
,用户locale为fr
,则用户将看到'foo'(根据第4条规则)
返回值¶
空
router.sendAppPush¶
Note
使用该action发送推送给APP, APP将接受到的设备告警推送。
语法¶
router.sendAppPush(subject, content)
router.sendAppPush(subject, content, hideParams, options)
参数¶
名称 | 类型 | 是否必须 | 例子 | 说明 |
---|---|---|---|---|
subject | String、Object | 是 | 'foo' {'zh': 'foo', 'en': 'foo'} | 通知标题,可以使用字符串或LanguageTag-String 键值对 |
content | String、Object | 是 | 'foo' {'zh': 'foo', 'en': 'foo'} | 通知内容,可以使用字符串或LanguageTag-String 键值对 |
hideParams | Object | 否 | {foo: 'bar'} | APP推送隐藏参数 |
options | Object | 否 | {} | APP推送其他参数 |
options.icon | String | 否 | https://example.png/f/logo.png | 推送图标,当前仅在华为推送中生效 |
返回值¶
空
使用告警规则¶
厂家可以为产品定义告警规则,将对所有设备生效。规则由触发时机、条件、动作组成。只有满足了触发时机和条件,才执行相应的动作。 点击告警推送配置界面左上角语言切换,切换为规则列表方式,点击右下角添加按钮进入规则配置对话框。
最小触发间隔
在最小触发间隔内,相同的规则不会重复触发。例如若最小触发间隔为5秒,则在5秒,即使有相同的事件,动作也不会执行。 这可以避免一些重复触发的场景。
http动作¶
使用http动作,设备事件触发时,氦氪云将回调http动作地址,不同的触发时机消息体不同。以POST方法,http://example.org/callback 为例
当设备登录时
POST /callback HTTP/1.1
Host: example.org
Content-Type: application/json
{
"ctrlKey":"a36bd458df03444fbf5f1f10d4d50a75",
"subDevTid":null,
"action":"devLogin"
}
当设备登出时
POST /callback HTTP/1.1
Host: example.org
Content-Type: application/json
{
"ctrlKey":"a36bd458df03444fbf5f1f10d4d50a75",
"subDevTid":null,
"action":"devLogout"
}
当设备上报时
POST /callback HTTP/1.1
Host: example.org
Content-Type: application/json
{
"subDevTid":null,
"data":{
"cmdId":1,
"Light":0,
"ColorTemp":0,
"Power":0
},
"ctrlKey":"a36bd458df03444fbf5f1f10d4d50a75",
"action":"devSend"
}
data 为解码后设备上报的数据