消息订阅

消息订阅流程

  1. 在开放平台web端【控制台-行业视频集成应用-应用配置-消息推送地址】配置消息回调地址。
  2. 在开放平台web端【控制台-行业视频集成应用-应用配置-消息类型配置】配置需要推送的基本消息。
  3. 使用消息订阅接口订阅其他类型消息(设备告警、人脸事件消息、AI事件消息)。
  4. 开放平台把消息以发送HTTP POST请求的方式发送到回调地址。

消息订阅

接口功能

设备告警、AI事件订阅

请求地址

  https://open.andmu.cn/v3/open/api/app/alarm/subscribe

请求方式

POST,需要鉴权

请求参数

参数名称 参数类型 是否必需 参数含义 说明
subscribeInfos List Y 订阅信息集合 最大30条

subscribeInfo:

参数名称 参数类型 是否必需 参数含义 说明
deviceId String Y 设备id
event String N 订阅事件集合 为空或者不传,则为取消订阅

event可选类型如下:

  • motion(运动告警)
  • sound(声音告警)
  • regional_invasion(区域入侵)
  • border_intrusion(边界入侵)
  • cross_border_detection(越界侦测)
  • face_snap(人脸抓拍)
  • face_recognition(人脸识别结果)
  • ai (AI事件消息)

event格式: 一个json字符串数组。例如: ["motion","sound"],然后将json格式化成字符串,填入参数。

请求内容

{
  "subscribeInfos": [{"deviceId":"xxxxS_12341234adf","event":"[\"motion\",\"sound\"]"}]
}

响应参数

参数名称 参数类型 参数含义 说明
resultCode String 响应码 参考响应码定义
resultMsg String 响应描述

返回数据示例

{
    "resultCode": "000000",
    "resultMsg": "成功"
}

订阅查询

接口功能

查询已经订阅消息的设备以及订阅的事件

请求地址

  https://open.andmu.cn/v3/open/api/app/alarm/subscribe/query

请求方式

POST,需要鉴权

请求参数

参数名称 参数类型 是否必需 参数含义 说明
deviceId String N 设备id
page int Y 页数
pageSize int Y 页大小 最大10000

请求内容

{
    "deviceId": "xxxxS_12341234adf",
    "page": 1,
    "pageSize": 100
}

响应参数

参数名称 参数类型 参数含义 说明
resultCode String 响应码 参考响应码定义
resultMsg String 响应描述
total Integer 记录数 分页查询时使用
page Integer 当前页 分页查询时使用
pageSize Integer 页大小 分页查询时使用
data List 响应数据 响应数据,支持普通业务数据以及列表两种方式

data数据模型

参数名称 参数类型 参数含义 说明
deviceId String 设备id
event String 订阅事件集合 例:["motion","sound"]

返回数据示例

{
    "resultCode": "000000",
    "resultMsg": "成功",
    "total": 1,
    "page": 1,
    "pageSize": 100,
    "data": [
          {
               "deviceId":"xxxxS_12341234adf",
               "event":"[\"motion\",\"sound\"]"
           }
     ]
}

消息格式

消息统一数据结构:

参数名称 参数类型 参数含义 说明
appId String 应用id
sig String 签名 MD5(appId+secret),计算值为32位小写
msgList list 消息列表

msgList数据格式:

参数名称 参数类型 参数含义 说明
msgType String 消息类型 参考消息类型
timeStamp String 消息时间戳 13位毫秒
data String 消息内容 不同的消息类型,data的格式不同,请根据消息类型分别解析
{
    "appId": "xxx",
    "sig": "xxx",
    "msgList": [{
        "msgType": "xxx",
        "timeStamp": "xxx",
        "data": {
            "xxx": "xxx"
        }
    }, {
        "msgType": "xxx",
        "timeStamp": "xxx",
        "data": {
            "xxx": "xxx"
        }
    }]
}

消息类型

消息类型 说明
MESSAGE_DEVICE_BIND 设备绑定消息
MESSAGE_DEVICE_UNBIND 设备解绑消息
MESSAGE_DEVICE_ONLINE 设备上线消息
MESSAGE_DEVICE_OFFLINE 设备下线消息
MESSAGE_DEVICE_MOTION 设备运动告警消息
MESSAGE_DEVICE_SOUND 设备声音告警消息
MESSAGE_REGIONAL_INVASION 区域入侵消息
MESSAGE_BORDER_INTRUSION 边界入侵消息
MESSAGE_CROSS_BORDER_DETECTION 越界侦测消息
MESSAGE_FACE_SNAP 人脸抓拍消息
MESSAGE_FACE_RECOGNITION 人脸识别结果
MESSAGE_AI AI事件消息

设备绑定解绑消息

从开放平台获取设备绑定消息。

消息类型:

设备绑定消息:MESSAGE_DEVICE_BIND

设备解绑消息:MESSAGE_DEVICE_UNBIND

data结构

参数名称 参数类型 参数含义 说明
deviceId String 设备id
tokenNum String token号

示例

设备绑定消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_DEVICE_BIND",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "tokenNum": "11654109845187"
        }
    }]
}

设备解绑消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_DEVICE_UNBIND",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "tokenNum": "11654109845187"
        }
    }]
}

设备上下线消息

从开放平台获取已绑定设备的上下线消息。

消息类型:

设备上线:MESSAGE_DEVICE_ONLINE

设备下线:MESSAGE_DEVICE_OFFLINE

data结构

参数名称 参数类型 参数含义 说明
deviceId String 设备id
onlineTime String 上线时间 上线消息存在
offlineTime String 离线时间 离线消息存在

示例

设备上线消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_DEVICE_ONLINE",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "onlineTime": "1579141371720"
        }
    }]
}

设备下线消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_DEVICE_OFFLINE",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "offlineTime": "1579141371720"
        }
    }]
}

设备告警消息

从开放平台获取设备告警消息。该消息是由设备触发后通知平台。

消息类型:

运动告警消息:MESSAGE_DEVICE_MOTION

声音告警消息:MESSAGE_DEVICE_SOUND

区域入侵消息:MESSAGE_REGIONAL_INVASION

边界入侵消息: MESSAGE_BORDER_INTRUSION

越界侦测消息:MESSAGE_CROSS_BORDER_DETECTION

data结构

参数名称 参数类型 参数含义 说明
deviceId String 设备id
detectTime String 告警时间 毫秒

示例

运动告警消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_DEVICE_MOTION",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303"
        }
    }]
}

声音告警消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_DEVICE_SOUND",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303"
        }
    }]
}

区域入侵告警消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_REGIONAL_INVASION",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303"
        }
    }]
}

边界入侵告警消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_BORDER_INTRUSION",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303"
        }
    }]
}

越界侦测告警消息:

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_CROSS_BORDER_DETECTION",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303"
        }
    }]
}

人脸事件消息

从开放平台获取设备人脸事件消息。人脸抓拍事件消息由前端设备触发。

消息类型:

人脸抓拍消息:MESSAGE_FACE_SNAP

人脸识别结果:MESSAGE_FACE_RECOGNITION

data结构

参数名称 参数类型 参数含义 说明
deviceId String 设备id
detectTime String 事件触发时间 毫秒
alarmContext String 事件的内容 不同的消息类型,告警的内容不同,请根据消息类型分别解析

人脸抓拍消息

alarmContext结构

参数名称 参数类型 参数含义 说明
url String 人脸抓拍的图片下载地址 有效期1个小时

示例

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_FACE_SNAP",
        "timeStamp": "1583317657000",
        "data": {
            "alarmContext": "{\"url\": \"http://oss-open.andmu.cn/andmu/open/xxxx\"}",
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303"
        }
    }]
}

人脸识别结果:

alarmContext结构
参数名称 参数类型 参数含义 说明
faceUrl String 人脸图片 有效期1个小时
faceId String 人脸ID 同一个人的人脸ID相同,人员新增接口返回的监控人员id
gender String 性别 AI识别出的性别:男、女、未知
age int 年龄 AI识别的年龄
snapTime int 抓拍时间戳 13位时间戳
snapUrl String 抓拍图片 有效期1个小时
similarity String 相似度 最大100,返回100以内数值,string传输

示例

{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_FACE_RECOGNITION",
        "timeStamp": "1583317657000",
        "data": {
            "alarmContext": "{\"faceUrl\": \"http:/xxxx\",\"faceId\": \"11\",\"gender\": \"男\",\"age\": 1,\"snapTime\": 1654657463521,\"snapUrl\": \"http://xxxx\"}",
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303"
        }
    }]
}

AI事件消息

从开放平台获取设备ai事件消息。

消息类型:

AI事件消息:MESSAGE_AI

data结构

参数名称 参数类型 参数含义 说明
deviceId String 设备id
detectTime String 事件触发时间 毫秒
alarmContext String 事件的内容 不同的AI事件,告警的内容不同,请根据AI事件编码分别解析
{
    "...": "...",
    "msgList": [{
        "msgType": "MESSAGE_AI",
        "timeStamp": "1583317657000",
        "data": {
            "deviceId": "xxxxS_abcde",
            "detectTime": "1584599831303",
            "alarmContext":"参考下面alarmContext字符串格式"
        }
    }]
}

事件编码

AI事件编码(eventCode) 事件说明
001001 人脸检测
002001 人体检测
003001 车辆检测
000001 明厨亮灶三白检测
000002 抽烟检测
000003 打电话检测
000004 玩手机检测
000005 手套检测
000006 烟火检测
000007 垃圾桶状态检测
000008 老鼠检测
000000 其他事件
005001 人员倒地
005002 人员聚集
005003 绊线入侵
005004 区域入侵
005005 滞留徘徊检测
005006 在岗离岗检测
005007 快速奔跑
005008 逆行检测
005009 游泳检测
005010 钓鱼检测
005011 出店经营
005012 流动摊贩
005013 门前脏乱
005014 乱堆物料
005015 违规撑伞
005016 违规户外广告
005017 暴露垃圾
005018 沿街晾晒
005019 橱窗张贴
005020 非机动车违停
005021 机动车违停
005023 电瓶车进电梯
005024 消防占道
005025 物品遗留
005026 道路积水检测
005027 水位尺水位检测
005028 漂浮物堆积检测
005029 排污口排污识别
005030 横幅检测
005031 烟雾检测
005032 火焰检测
005033 工程车密闭不严
005034 工程车抛洒滴漏
005035 异常停车
005036 拥堵检测
005037 交通流量
005038 违章变道
005039 车辆逆行
005040 施工检测
005041 路障检测
005042 交通事故
005043 压线检测
005044 抛锚检测
005045 超速检测
005046 倒车检测
005047 单人作业
005048 无人作业
005049 传送带跑偏
005050 传送带大块异物
005051 传送带阻塞
005052 传送带空载
005053 客流统计
005054 人员密度超限
005055 挖沙船检测
005056 河岸垃圾倾倒
005057 工程车检测
005058 高空抛物
005059 打架斗殴
005060 区域人数统计
005061 垃圾桶垃圾溢出检测
005062 垃圾桶未盖盖检测
005063 厨师服检测
005064 厨师帽检测
005065 口罩检测
005066 安全帽检测
005067 围栏翻越
005068 电子围栏
005069 占道经营
005070 河道偷钓
005071 未穿防护服
005072 未戴安全帽
005073 垃圾识别
005074 无证游商
005075 渣土车识别
005076 攀高检测
005077 反光衣检测
005078 危险犬类识别
005079 人群聚集【*】
005080 车辆违停【*】
005081 遗撒物检测
005082 垃圾堆放
005083 行人检测
005084 非机动车检测
005085 垃圾桶检测

alarmContext结构

消息字段 类型(长度) M/O 描述
taskId String M 任务id,与创建任务时id对应
sourceId string M 视频源唯一标识,建议与设备ID对应,保证唯一性
sourceName string O 资源名称,资源的描述信息
taskStatus String M 任务状态(1-调度中,2-执行中,3-暂停,4-已完成,5-异常)
events object[] M 事件信息
analysisTime String M 事件分析时间,格式yyyy-MM-dd HH:mm:ss
bkgUrl String O 处理背景图片url地址,三方平台需要自己存储,一天后地址失效。
videoUrl String O 视频片段url地址,三方平台需要自己存储,一天后地址失效。
eventCode string M AI事件编码
eventAttr object O 发生事件的全局属性,object具体值根据需要返回属性值的事件定义。部分事件返回属性详见附录E
info object[] M 事件信息
rect object O 事件框
height long O 长度,以px为单位
width long O 宽度,以px为单位
left long O X轴坐标,左上角顶点的 X 坐标,以px为单位
top long O Y轴坐标,左上角顶点的 Y 坐标,以px为单位

以上字段所有AI事件消息都有,以下字段是各自算法独有字段,字段位于事件信息(info)下面,参考最后的样例。

000001:明厨亮灶三白检测:

消息字段 类型(长度) M/O 描述
mask string O 是否戴口罩:no-否,yes-是,unknown-未知
chefcloth string O 是否规范穿厨师服:no-否,yes-是, unknown-未知
upperColor string O 上身颜色:"unknown"(未知),"red"(红), "orange"(橙), "yellow"(黄), "green"(绿), "blue"(蓝), "violet"(紫), "pink"(粉), "black"(黑), "white"(白), "grey"(灰), "brown"(棕)
hat string O 是否戴帽子:no-否,yes-是,unknown-未知

000002:抽烟检测:

消息字段 类型(长度) M/O 描述
smoke string O 是否抽烟:no-否,yes-是,unknown-未知

000003:打手机检测:

消息字段 类型(长度) M/O 描述
usePhone string O 是否打手机:no-否,yes-是,unknown-未知

000004:看手机检测

消息字段 类型(长度) M/O 描述
watchPhone string O 是否看手机:no-否,yes-是,unknown-未知

000005:手套检测

消息字段 类型(长度) M/O 描述
glove string O 是否规范佩戴手套:no-否,yes-是,unknown-未知

000006:烟火检测

消息字段 类型(长度) M/O 描述
fire string O 是否存在烟火:no-否,yes-是,unknown-未知

000007:垃圾桶检测

消息字段 类型(长度) M/O 描述
trashbox string O "垃圾桶状态:0 - 正常,1 - 垃圾桶满溢,2 - 垃圾桶倾倒,3 - 垃圾桶未盖,4 - 状态未知

000008:老鼠检测

消息字段 类型(长度) M/O 描述
mouse string O 是否有老鼠:no-否,yes-是,unknown-未知

其他事件:其他事件定义

消息字段 类型(长度) M/O 描述
objectAttr object O object具体值根据需要返回属性值的事件定义。部分事件返回属性详见附录E

附录E

005053:客流统计

消息字段 类型(长度) M/O 描述
numEnter long O 进入客流
numLeave long O 离开客流

示例

{
    "taskId": "dcef3af8-fa1a-4401-bda9-a08364fe17f2",
    "sourceId": "dcef3af8-fa1a-4401-bda9-a08364fe17f1",
    "sourceName": "大厦23楼分析点位",
    "taskStatus": 3,
    "events": [{
            "analysisTime": "2022-12-23 00:00:00",
            "bkgUrl": "http://10.12.30.72:10000/oss-file/456.jpg",
            "eventCode": "000005",
            "info": [{
                "rect": {
                    "height": "37",
                    "left": "253",
                    "top": "154",
                    "width": "38"
                },
                "mouse": "yes"
            }]
        },
        {
            "analysisTime": "2022-12-23 00:00:00",
            "bkgUrl": "http://10.12.30.72:10000/oss-file/456.jpg",
            "eventCode": "0000xx",
            "eventAttr": "{\"xxxx\": \"xxxx\", \"xxxx\": \"xxxx\"}",
            "info": [{
                "rect": {
                    "height": "137",
                    "left": "223",
                    "top": "14",
                    "width": "381"
                },
                "objectAttr": "{\"xxxx\": \"xxxx\", \"xxxx\": \"xxxx\"}"
            }]
        }
    ]
}