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

 找回密码
 立即注册
查看: 7957|回复: 23

[插件集成] 钉钉应用消息推送

[复制链接]

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24313
金钱
22882
HASS币
290
发表于 2022-7-3 14:44:31 | 显示全部楼层 |阅读模式
本帖最后由 dscao 于 2023-6-25 13:12 编辑

接着前面《钉钉群机器人和企业微信群机器人+企业微信论坛修改加强版》:https://bbs.hassbian.com/thread-16932-1-1.html
再把钉钉应用做了来,钉钉应用的可信服务器初步测试支持公共代理服务器,而且支持带1个*号的通配符,比企业微信要宽松一些,另外我的微信通过公众号来认证的,需要每年300元公众号年审费用。钉钉就不需要年审的费用了。另外经测试,如果ha的ipv6有效,默认优先使用ipv6的话,不受可信服务器列表的限制。



官方文档

前期配置步骤:

批量发送单聊消息:

调试模式下,提示机器人不存在,发布后才能正常发送消息。

1.jpg

现在添加应用机器人,需要在用应内开通,还需要申请对应的权限。


1.jpg

2.JPG

3.jpg




配置:
notify:
  - platform: dingtalk_notify
    name: dingtalk        # 实体ID  比如这个出来就是notify.dingtalk
    appkey:               # 这个是钉钉应用里面新建应用的应用AppKey
    appsecret:            # 这个是钉钉应用里面新建应用的应用AppSecret
    touser: 'userid1'     # 默认接收者,用户的userid,每次最多传20个。: 如:userid1|userid2|userid3,在钉钉管理后台——内部通讯录管理——成员详情的最上显示“员工UserID”。
    https_proxies: username:[email protected]:8080   #支持https的代理服务器地址(可选项)初步测试公共代理可以使用
    resource: http://XXX.XXX.XXX.XXX:1880/endpoint   #选配服务器中转地址(可选项),默认为: https://api.dingtalk.com ,可设置为 http:xxx.xxx.com:1880/endpoint 或 http:xxx.xxx.com:1880(具体根据node-red的设置)
    resource_username: username  #选配服务器中转基本认证用户 如 node-red中的http_node username (可选项)
    resource_password: password  #选配服务器中转地址认证密码 如 node-red中的http_node password (可选项)


调用服务:

service: notify.dingtalk  #调用服务
data:
  message: 消息内容
  target: 接收者userid1|接收者userid2|接收者userid3

service: notify.dingtalk  #调用服务
data:
  message: 消息内容
  target:
    - 接收者ID1
    - 接收者ID2
    - 接收者ID3


service: notify.dingtalk
data:
  message: 发送纯文本消息,当前时间:{{now().strftime('%Y-%m-%d %H:%M:%S')}}


service: notify.dingtalk
data:
  message: 发送带标题和分隔线的纯文本消息
  title: 这是标题


service: notify.dingtalk
data:
  message: 发送带内容的链接卡片
  title: 这是标题
  data:
    type: sampleActionCard
    url: 'http://www.sogou.com'
   
   
service: notify.dingtalk
data:
  message: "#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n > ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"
  title: 这是标题
  data:
    type: sampleMarkdown   
   
service: notify.dingtalk
data:
  message: 发送图片
  title: 这是标题
  data:
    type: sampleImageMsg
    picurl: 'https://bbs.hassbian.com/static/image/common/logo.png'


service: notify.dingtalk
data:
  message: 发送带标题、内容和缩略图的链接卡片,上传本地图片(代理及中转模式下不支持)。
  title: 这是标题
  data:
    type: sampleLink
    url: 'http://www.sogou.com'
    imagepath: /config/www/1.jpg

效果:

2.jpg


示例:
service: notify.dingtalk
data:
  title: 小汽车当前位置:{{states('sensor.mycar_loc')}}
  message: >-
    小汽车当前位置:{{states('sensor.mycar_loc')}} {{"\n\n"}}
    状态刷新时间:{{"\n\n"}}{{state_attr('device_tracker.gddr_gooddriver',
    'querytime')}} {{"\n\n"}}
    车辆状态:{{state_attr('device_tracker.gddr_gooddriver', 'status')}} {{"\n\n"}}
    到达位置时间:{{"\n\n"}}{{state_attr('device_tracker.gddr_gooddriver',
    'updatetime')}}
    {{"\n\n"}}停车时长:{{state_attr('device_tracker.gddr_gooddriver',
    'parking_time')}}{{"\n\n"}}当前速度:{{state_attr('device_tracker.gddr_gooddriver',
    'speed') |round(1)
    }}km/h{{"\n\n"}}[查看地图](https://uri.amap.com/marker?position={{state_attr('device_tracker.gddr_gooddriver',
    'longitude')+0.00555}},{{state_attr('device_tracker.gddr_gooddriver',
    'latitude')-0.00240}})![https://restapi.amap.com/v3/staticmap?zoom=14&size=1024*512&markers=large,,A:{{state_attr('device_tracker.gddr_gooddriver',
    'longitude')+0.00555}},{{state_attr('device_tracker.gddr_gooddriver',
    'latitude')-0.00240}}&key=819cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx](https://restapi.amap.com/v3/staticmap?zoom=14&size=1024*512&markers=large,,A:{{state_attr('device_tracker.gddr_gooddriver',
    'longitude')+0.00555}},{{state_attr('device_tracker.gddr_gooddriver',
    'latitude')-0.00240}}&key=819cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
  data:
    type: sampleMarkdown


4.jpg


虚拟服务器上安装node-red中转服务,服务器的IP加入可信服务器。

1.jpg



钉钉应用消息接收
详见: https://bbs.hassbian.com/thread-16997-1-1.html




dingtalk_notify.zip

2.83 KB, 阅读权限: 20, 下载次数: 54

售价: 1 金钱  [记录]

2022.7.4

评分

参与人数 4金钱 +40 HASS币 +20 收起 理由
ciasdmxhxjjpd@c + 5
jjcs + 10 高手,这是高手!
+ 20 + 20 高手,这是高手!
sorrypqa + 5 感谢楼主分享!

查看全部评分

回复

使用道具 举报

51

主题

1340

帖子

5600

积分

论坛DIY达人

积分
5600
金钱
4260
HASS币
20
发表于 2022-7-3 17:18:08 | 显示全部楼层
学习了,谢谢楼主分享!
回复

使用道具 举报

3

主题

37

帖子

682

积分

高级会员

Rank: 4

积分
682
金钱
645
HASS币
0
发表于 2022-7-3 22:41:35 | 显示全部楼层
感谢分享,问下楼主怎么支持变量传递,发送变化的消息或实时传递数值 内容,感觉更加人性化。
回复

使用道具 举报

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24313
金钱
22882
HASS币
290
 楼主| 发表于 2022-7-3 22:54:50 | 显示全部楼层
本帖最后由 dscao 于 2022-7-3 23:21 编辑
sea_dark 发表于 2022-7-3 22:41
感谢分享,问下楼主怎么支持变量传递,发送变化的消息或实时传递数值 内容,感觉更加人性化。 ...

message: 发送纯文本消息,当前时间:{{now().strftime('%Y-%m-%d %H:%M:%S')}}

用模板,类似的写法啊,只要符合格式就行。
后面增加了一个示例。
回复

使用道具 举报

3

主题

37

帖子

682

积分

高级会员

Rank: 4

积分
682
金钱
645
HASS币
0
发表于 2022-7-3 23:22:09 | 显示全部楼层
dscao 发表于 2022-7-3 22:54
message: 发送纯文本消息,当前时间:{{now().strftime('%Y-%m-%d %H:%M:%S')}}

用模板,类似的写法啊, ...

怎么把比如温湿度获取其它传感器状态的值 带过来?
回复

使用道具 举报

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24313
金钱
22882
HASS币
290
 楼主| 发表于 2022-7-3 23:37:38 | 显示全部楼层
sea_dark 发表于 2022-7-3 23:22
怎么把比如温湿度获取其它传感器状态的值 带过来?
message: >-
    现在时间:{{ states("sensor.time") }},室内餐厅PM2.5为{{ 
    states("sensor.zm1_b0f893xxxxxx_pm25") }}、卧室PM2.5为{{
    states("sensor.zm1_b0f893xxxxxx_pm25") }},餐厅温度为{{
    states("sensor.zm1_b0f893xxxxxx_temperature") }}度、卧室温度为{{
    states("sensor.zm1_b0f893xxxxxx_temperature") }}度。

类似这样吧,这个一般用于音箱播报比较多。
回复

使用道具 举报

3

主题

37

帖子

682

积分

高级会员

Rank: 4

积分
682
金钱
645
HASS币
0
发表于 2022-7-4 12:18:17 | 显示全部楼层
dscao 发表于 2022-7-3 23:37
类似这样吧,这个一般用于音箱播报比较多。

能否改造下打通到nodered下?期待
回复

使用道具 举报

80

主题

388

帖子

1680

积分

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1292
HASS币
0
发表于 2022-7-4 13:01:14 | 显示全部楼层
本帖最后由 ciasdmxhxjjpd@c 于 2022-7-4 13:07 编辑
sea_dark 发表于 2022-7-4 12:18
能否改造下打通到nodered下?期待

正想这个问题。

把每个传感器,按照topic,通过 join 方法,组成一个json 格式的数据,类似

捕获.JPG

然后在数据处理部分,根据键值匹配获取。

m.JPG

再通过 钉钉发送。
参考,

pzem_with_dingtalk.json

11.14 KB, 下载次数: 7

回复

使用道具 举报

80

主题

388

帖子

1680

积分

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1292
HASS币
0
发表于 2022-7-4 13:10:04 | 显示全部楼层
想问个题外话,ha 插件开发调试,用的是什么平台,有没有教程学习下,最近在研究 weathernmc 的源码中的update 时间问题,想研究异步定时更新,且时间可自定义。这个功能已经有人实现了,但略显复杂,我想简单点。
回复

使用道具 举报

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24313
金钱
22882
HASS币
290
 楼主| 发表于 2022-7-4 17:41:24 | 显示全部楼层
ciasdmxhxjjpd@c 发表于 2022-7-4 13:10
想问个题外话,ha 插件开发调试,用的是什么平台,有没有教程学习下,最近在研究 weathernmc 的源码中的upd ...

我是看别人的代码来修改拼凑的,调试就是用了windows版的ha,每次折腾一个东西估计重启了上百次的ha。感觉效率很低。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 17:22 , Processed in 0.083060 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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