『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: cjnt007

[流程系列] 【方案分享】萤石开放平台消息推送服务研究

[复制链接]

20

主题

483

帖子

3150

积分

论坛元老

Rank: 8Rank: 8

积分
3150
金钱
2667
HASS币
8
 楼主| 发表于 2024-8-2 17:14:10 | 显示全部楼层
jasona3 发表于 2024-8-2 08:48
这样对吗?
if(msg.payload.header.type == 'ys.alarm'){
    try {

我不清楚你的需求,无法给你提供建议。
msg.payload = {
            "touser": '@all',
            "toparty": "PartyID1|PartyID2",
            "totag": "TagID1 | TagID2",
            "msgtype": "news",
            "agentid": "1000888",
            "news": {
            "articles": [
                {
                    "title": "警告信息:",
                    "description": message,
                    "url": pic_url,
                    "picurl": pic_url
                }
        ]
    },
    "safe": 0
}

上面这段代码里面是在重新给 msg.payload 赋值,如果你后面还要用到msg里的数据,就要把需要的数据保存到其他变量里,或者上面的赋值换个对象。
回复

使用道具 举报

8

主题

220

帖子

1666

积分

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1446
HASS币
0
发表于 2024-8-2 22:45:25 | 显示全部楼层
cjnt007 发表于 2024-8-2 17:14
我不清楚你的需求,无法给你提供建议。

上面这段代码里面是在重新给 msg.payload 赋值,如果你后面还要 ...

将message信息赋值到msg.payload没错吧,你的图片通知函数也是一样的,我只是加了个微信推送。
if (msg.payload.header.type == 'ys.alarm') {
    try {
        let channelName = msg.payload.body.channelName;
        let alarmTime = msg.payload.body.alarmTime;
        let alarmType = msg.payload.body.alarmType;
        let alarmCode = msg.payload.body.alarmId.slice(-5);
        let alarmName = global.get('getAlarmByCode')(alarmCode).alarmName;
        let pic_id = msg.payload.body.pictureList[0].id;
        let pic_url = msg.payload.body.pictureList[0].url;
        let message;
        message = '设备名称 ' + channelName + '\n';
        message += '<img src="' + pic_url + '" />';
        message += '<br />图片ID ' + pic_id;
        message += '<br />警告时间 ' + alarmTime;
        message += '<br />警告代码 ' + alarmCode;
        message += '<br />警告类型 ' + alarmType;
        message += '<br />警告名称 ' + alarmName;
        message += '<br />推送时间 ' + global.get("formatDate")();
        msg.payload = {
            'data': {
                'title': '警告 - 萤石消息推送',
                'message': message
            }
        }
        return [msg, null];
    } catch (error) {
        return;
    };
}
//门铃呼叫

我需求也就是将接收的萤石消息推送到企业微信
海鲜市场:jasona3
回复

使用道具 举报

20

主题

483

帖子

3150

积分

论坛元老

Rank: 8Rank: 8

积分
3150
金钱
2667
HASS币
8
 楼主| 发表于 2024-8-3 11:17:06 | 显示全部楼层
jasona3 发表于 2024-8-2 22:45
将message信息赋值到msg.payload没错吧,你的图片通知函数也是一样的,我只是加了个微信推送。
if (msg.p ...

你在18楼提供的截图显示,deviceId信息在msg.payload.header节点下面,在推送节点里,你有对msg.payload={……}赋值的代码,在此代码之前,msg.payload.header.deviceId还是存在的,但重新赋值后,deviceId就被覆盖掉了。你修改代码用于企业微信推送那部分也没有问题,但你提到“json格式化节点后都有多个设备,到推送节点就没有了”,不知道你的目的或需求是什么,我只能提醒你msg.payload被重新赋值的情况,如果需要设备信息,要在msg.payload重新赋值前处理
回复

使用道具 举报

32

主题

134

帖子

1101

积分

金牌会员

Rank: 6Rank: 6

积分
1101
金钱
967
HASS币
0
发表于 2024-8-3 12:42:03 | 显示全部楼层
本帖最后由 lambilly 于 2024-8-3 12:50 编辑

为什么同样的监控头,一个图片有推送可以显示 ,一个没有推送了显示不出来 1722660165481(1).jpg
回复

使用道具 举报

20

主题

483

帖子

3150

积分

论坛元老

Rank: 8Rank: 8

积分
3150
金钱
2667
HASS币
8
 楼主| 发表于 2024-8-3 12:56:33 | 显示全部楼层
lambilly 发表于 2024-8-3 12:42
为什么同样的监控头,一个图片有推送可以显示 ,一个没有推送了显示不出来
...

你把图片URL复制出来贴到浏览器地址栏上看能不能下载下来,如果能下载,再把下载的文件加上扩展名.jgp,看能不能正常显示
回复

使用道具 举报

32

主题

134

帖子

1101

积分

金牌会员

Rank: 6Rank: 6

积分
1101
金钱
967
HASS币
0
发表于 2024-8-3 16:33:27 | 显示全部楼层
cjnt007 发表于 2024-8-3 12:56
你把图片URL复制出来贴到浏览器地址栏上看能不能下载下来,如果能下载,再把下载的文件加上扩展名.jgp, ...

我查了,C6CN的可以,C6C的不行,估计是终端问题,我换了一个了。
回复

使用道具 举报

20

主题

483

帖子

3150

积分

论坛元老

Rank: 8Rank: 8

积分
3150
金钱
2667
HASS币
8
 楼主| 发表于 2024-8-3 18:43:56 | 显示全部楼层
lambilly 发表于 2024-8-3 16:33
我查了,C6CN的可以,C6C的不行,估计是终端问题,我换了一个了。

有的终端对视频、图片设置了加密,能下载但不能正常显示,需要关掉加密设置
回复

使用道具 举报

8

主题

220

帖子

1666

积分

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1446
HASS币
0
发表于 2024-8-5 13:43:04 | 显示全部楼层
cjnt007 发表于 2024-8-3 11:17
你在18楼提供的截图显示,deviceId信息在msg.payload.header节点下面,在推送节点里,你有对msg.payload= ...

好像是alarmId不对吧?这个图片通知也没有 Image7.jpg

海鲜市场:jasona3
回复

使用道具 举报

20

主题

483

帖子

3150

积分

论坛元老

Rank: 8Rank: 8

积分
3150
金钱
2667
HASS币
8
 楼主| 发表于 2024-8-5 15:19:53 | 显示全部楼层
本帖最后由 cjnt007 于 2024-8-5 15:43 编辑
jasona3 发表于 2024-8-5 13:43
好像是alarmId不对吧?这个图片通知也没有

不知道你的是什么设备,确实alarmId和我的不同,我的alarmId最后5位就是警告代码 alarmId: "20240805151407-E3xxx0xxx-1-10000",用它可以查询警告名称

回复

使用道具 举报

3

主题

119

帖子

1558

积分

金牌会员

Rank: 6Rank: 6

积分
1558
金钱
1439
HASS币
0
发表于 2024-8-5 19:01:30 | 显示全部楼层
开启这个信令推送,手机客户端就没有告警了?你们是这样吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 18:17 , Processed in 2.089438 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表