edit

告警推送说明

告警推送

使用告警脚本

厂家可以通过编写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返回响应的内容, 具体匹配规则如下:

  1. 如果用户未上报locale则默认用户locale为en
  2. 如果存在精确匹配则返回精确匹配内容
  3. 查找最接近的匹配,例如若用户locale为zh-CN#hans,则依次查找zh-CN#Hans -> zh-CN -> zh
  4. 返回键值对的第一项

例如,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 为解码后设备上报的数据