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

 找回密码
 立即注册
查看: 6330|回复: 42

[插件集成] 钉钉群机器人和企业微信群机器人+企业微信论坛修改加强版

  [复制链接]

76

主题

1357

帖子

1万

积分

元老级技术达人

积分
18336
金钱
16939
HASS币
290
发表于 2022-6-29 15:57:55 | 显示全部楼层 |阅读模式
本帖最后由 dscao 于 2023-5-11 16:56 编辑

2022.7.1 企业微信自建应用消息新增功能
1、支持代理服务器设置
2、支持接口中转服务器设置

服务器安装node-red,服务器的IP加入可信服务器列表

1.jpg
----------
钉钉群机器人消息

HomeAssistant 钉钉群机器人消息推送

修改自:


修改:
1、支持加签功能
2、支持消息类型 type

配置:

notify:
  - platform: dingtalk_robot
    name: dingtalk          # 实体ID  比如这个出来就是notify.dingtalk
    resource: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxx  #机器人向钉钉群推送消息的Webhook地址
    secret: SECxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  #加签密钥 ,未加签不填写此行。


调用服务:

service: notify.dingtalk  #调用服务
data:
  message: 消息内容
  target:
    - at的手机号1
    - at的手机号2
    - at的手机号3


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


service: notify.dingtalk
data:
  message: 发送带标题和分隔线的纯文本消息,我就是我, @XXX 是不一样的烟火
  title: 这是标题


service: notify.dingtalk
data:
  message: 发送带标题和内容的链接卡片
  title: 这是标题
  data:
    type: link
    url: 'https://www.dingtalk.com/'
    picurl: 'https://gw.alicdn.com/imgextra/i2/O1CN01r4HyWa20OJS6nSgeK_!!6000000006839-2-tps-386-80.png'


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: markdown


service: notify.dingtalk
data:
  message: "![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png) ### 乔布斯 20 年前想打造的苹果咖啡厅 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"
  title: 这是标题,整体跳转ActionCard类型
  data:
    type: actionCard
    url: 'https://www.dingtalk.com/'



企业微信群机器人消息

HomeAssistant 企业微信群机器人消息推送


功能限制:
群机器人推送消息必须要到企业微信中才能看到,微信插件无法查看,不能同步到个人微信中。
25楼反映个人微信中是可以同步企业微信群聊消息的,经测试确实可以。

配置:
notify:
  - platform: wework_robot
    name: wework_robot
    resource: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx #自己的机器人地址


调用服务:
service: notify.wework_robot  #调用服务
data:
  message: 消息内容(仅发送文本消息时at手机号才有效)
  target:
    - at的手机号1
    - at的手机号2
    - at的手机号3


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


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

service: notify.wework_robot
data:
  message: "实时新增用户反馈<font color="warning">132例</font>,请相关同事注意。\n >类型:<font color="comment">用户反馈</font>\n >普通用户反馈:<font color="comment">117例</font>\n >VIP用户反馈:<font color="comment">15例</font>"
  title: 这是标题
  data:
    type: markdown


service: notify.wework_robot
data:
  message: 发送图片,标题和消息都不显示
  data:
    type: image
    imagepath: /config/www/1.jpg

service: notify.wework_robot
data:
  message: 发送带标题、内容和头图的链接卡片
  title: 这是标题
  data:
    type: news
    url: 'http://www.sogou.com'
    picurl: 'https://bbs.hassbian.com/static/image/common/logo.png'


service: notify.wework_robot
data:
  message: 发送图片文件,标题和消息都不显示
  data:
    type: file
    filepath: /config/www/1.jpg


service: notify.wework_robot
data:
  message: 发送mp3文件,标题和消息都不显示
  data:
    type: file
    filepath: /config/www/1.mp3


service: notify.wework_robot
data:
  message: 发送mp4文件,标题和消息都不显示
  data:
    type: file
    filepath: /config/www/1.mp4

效果:

3.jpg


企业微信自建应用论坛修改加强版

https://bbs.hassbian.com/thread-16924-1-1.html
https://bbs.hassbian.com/thread-12547-1-1.html
https://bbs.hassbian.com/thread-7128-1-1.html


企业微信官方相关文档:
https://open.work.weixin.qq.com/help2/pc/15381
https://developer.work.weixin.qq.com/document/path/90236


jijngpengboo27hh 版本基础再修改的版本。

需求:
《[进阶教程] 根据论坛 27hh大大的企业微信插件修改推送本地图片到微信》 增加了本地图片上传到企业微信空间的功能,没有公网或透传的网络也可以使用。这也就优化了访问图片的速度和稳定性,这点是很好的。
但有些情况下还是需要使用网络图片的,比如:车辆定位地图的推送。

修改:(主要针对news类型消息)
1、同时支持本地上传图片和网络地址的图片
优先使用imagepath上传本地图片,如果 imagepath 本地址图片不存在或未填写时使用 picurl 网络地址。
如果 picurl 网络地址也未配置,则发送无图片带标题的链接卡片(与原来的一致)
url 不填写则使用图片的链接
2、增加 target 微信接收者。
3、同时支持news和mpnews类型,mpnews类型时,必须为本地图片上传。可使用safe: 1 为保密消息。4、支持代理服务器设置(暂无有效代理服务器,未测试)
5、支持接口中转服务器设置(node-red已测试)



配置:

notify:
  - platform: wework_notify
    name: wework          # 实体ID  比如这个出来就是notify.wework
    corpid:               # 这个是企业微信的企业id
    agentId: "1000002"    # 这个是企业微信里面新建应用的应用id
    secret:               # 这个是企业微信里面新建应用的应用secret
    touser: '@all'        # 默认接收者, @all为全体成员,也可用具体ID: 如:userid1|userid2|userid3
    https_proxies: username:[email protected]:8080   #支持https的代理服务器地址(可选项)
    resource: http://XXX.XXX.XXX.XXX:1880/endpoint   #选配服务器中转地址(可选项),默认为: https://qyapi.weixin.qq.com/cgi-bin ,可设置为 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.wework  #调用服务
data:
  message: 消息内容
  target: '接收者ID1|接收者ID2|接收者ID3'

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


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


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


service: notify.wework
data:
  message: ''
  title: 发送带标题的链接卡片
  data:
    type: news
    url: 'http://www.sogou.com'
   
   
service: notify.wework
data:
  message: 发送带标题和内容的链接卡片
  title: 这是标题
  data:
    type: textcard
    url: 'http://www.sogou.com'
   
   
service: notify.wework
data:
  message: 发送带标题、内容和头图的链接卡片,优先使用上传本地图片,本地址图片不存在时或未配置时使用 picurl网络地址
  title: 这是标题
  data:
    type: news
    url: 'http://www.sogou.com'
    picurl: 'https://bbs.hassbian.com/static/image/common/logo.png'
    imagepath: /config/www/1.jpg   

service: notify.wework
data:
  message: 发送带标题、内容和头图的链接卡片,上传本地图片,mpnews消息与news消息类似,不同的是图文消息内容存储在微信后台,并且支持保密选项(safe: 1,不填写默认为0)。每个应用每天最多可以发送100次。
  title: 这是标题
  data:
    type: mpnews
    url: 'http://www.sogou.com'
    imagepath: /config/www/1.jpg
  safe: 1

service: notify.wework
data:
  message: 发送带标题、内容和头图的链接卡片  
  title: 推送视频
  data:
    type: video
    videopath: /config/www/1.mp4
  safe: 0


示例:

service: notify.wechat
data:
  title: 小汽车当前位置:{{states('sensor.mycar_loc')}}
  message: "状态刷新时间:{{state_attr('device_tracker.gddr_gooddriver',
    'querytime')}}{{'\r\n'}}车辆状态:{{state_attr('device_tracker.gddr_gooddriver',
    'status')}}{{'\r\n'}}到达位置时间:{{state_attr('device_tracker.gddr_gooddriver',
    'updatetime')}}{{'\r\n'}}停车时长:{{state_attr('device_tracker.gddr_gooddriver',
    'parking_time')}}{{'\r\n'}}当前速度:{{state_attr('device_tracker.gddr_gooddriver',
    'speed') | round(1) }}km/h"
  data:
    type: news
    url: "https://uri.amap.com/marker?position={{state_attr('device_tracker.gddr_gooddriver',
      'longitude')+0.00555}},{{state_attr('device_tracker.gddr_gooddriver',
      'latitude')-0.00240}}"
    picurl: "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=819cxxxxxxxxxxxxxxxxxxxxxxxxxxxx"


效果:

1.jpg


2.jpg


安装:
下载附件解压后放到custom_components中,重启ha,再到配置放到configuration.yaml中,再重启。


自动化或脚本参考:
alias: 摄像头截图并推送微信
sequence:
  - service: camera.snapshot
    data:
      filename: /config/www/camera/camera_outdoor.jpg
    target:
      entity_id: camera.surveillance_ipcamoutdoor
  - service: notify.wechat
    data:
      target: cls
      title: 门前摄像头截图
      message: 摄像头截图
      data:
        type: news
        imagepath: /config/www/camera/camera_outdoor.jpg
mode: single
alias: 摄像头录制并推送微信
sequence:
  - service: camera.record
    data:
      filename: /config/www/camera/camera_outdoor.mp4
      duration: 10
    target:
      entity_id: camera.surveillance_ipcamoutdoor
  - service: notify.wechat
    data:
      target: cls
      title: 门前摄像头录制片段
      message: 摄像头截图
      data:
        type: video
        videopath: /config/www/camera/camera_outdoor.mp4
mode: single


还一个钉钉内部应用,与微信企业应用也差不多。问题还是对“填写机器人的公网IP"为必填项,ha的环境基本不太适合了,至少需要相对固定的IP或一台代理服务器。
如果微信企业应用以后申请的应用也改为必填项,可能就只能使用功能简单点的群机器人消息了。

其实只需要一个适合自己的就好了,取自己需要用的就好。

这个前人已经有了代码了,整理这个难度很小,但是费时间费精力,总算是初步完成了这个集合。







wework_notify.zip

4.06 KB, 阅读权限: 20, 下载次数: 83

售价: 1 金钱  [记录]

2022.7.1

dingtalk_robot.zip

2.25 KB, 阅读权限: 20, 下载次数: 52

售价: 1 金钱  [记录]

2022.6.29

wework_robot.zip

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

售价: 1 金钱  [记录]

2022.6.29

评分

参与人数 5金钱 +50 HASS币 +20 收起 理由
ioriok + 2 论坛有你更精彩!
ylilike + 10 墙都不扶,就服楼主!
jpcugv + 8
+ 20 + 20 高手,这是高手!
jjcs + 10 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

8

主题

361

帖子

3725

积分

论坛元老

Rank: 8Rank: 8

积分
3725
金钱
3364
HASS币
10
发表于 2022-6-29 16:35:58 | 显示全部楼层
先顶大佬
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2022-6-29 17:22:10 | 显示全部楼层
谢谢分享,建议还是放到 github 然后大家一起维护,版本太多用户不知道应该选什么版本。
Nero
回复

使用道具 举报

22

主题

414

帖子

2238

积分

金牌会员

Rank: 6Rank: 6

积分
2238
金钱
1824
HASS币
30
发表于 2022-6-29 17:58:58 | 显示全部楼层
谢谢,GITHUB已经关注
你有所不知,小米设备带屏幕都是为了后期广告投送的。
灵长类退散
回复

使用道具 举报

76

主题

1357

帖子

1万

积分

元老级技术达人

积分
18336
金钱
16939
HASS币
290
 楼主| 发表于 2022-6-30 19:10:03 | 显示全部楼层
本帖最后由 dscao 于 2022-6-30 19:18 编辑

现在新创建的企业微信应用,不设置“企业可信IP”时,报以下错误:

{'errcode': 60020, 'errmsg': 'not allow to access from your ip, hint: [1656527766557012517415819], from ip: xx.xx.xxx.xx, more info at https://open.work.weixin.qq.com/devtool/query?e=60020'}

配置后正常。但家宽IP一变就要去改,就非常麻烦了。如果有云服务器可以通过运行node-red来代理请求,那就可以像原来一样一劳永逸了。
回复

使用道具 举报

2

主题

25

帖子

971

积分

高级会员

Rank: 4

积分
971
金钱
946
HASS币
0
发表于 2022-6-30 21:18:53 | 显示全部楼层
dscao 发表于 2022-6-30 19:10
现在新创建的企业微信应用,不设置“企业可信IP”时,报以下错误:

{'errcode': 60020, 'errmsg': 'not al ...

写个脚本,自动填入IP,有可行性吗大佬
回复

使用道具 举报

76

主题

1357

帖子

1万

积分

元老级技术达人

积分
18336
金钱
16939
HASS币
290
 楼主| 发表于 2022-7-1 10:35:17 | 显示全部楼层
Suchh 发表于 2022-6-30 21:18
写个脚本,自动填入IP,有可行性吗大佬

企业微信后台需要扫码登录,这个登录如果能搞定就有可行性。感觉很难!
回复

使用道具 举报

2

主题

25

帖子

971

积分

高级会员

Rank: 4

积分
971
金钱
946
HASS币
0
发表于 2022-7-1 11:29:27 | 显示全部楼层
dscao 发表于 2022-7-1 10:35
企业微信后台需要扫码登录,这个登录如果能搞定就有可行性。感觉很难! ...

确实很难搞定,谢谢回复
回复

使用道具 举报

76

主题

1357

帖子

1万

积分

元老级技术达人

积分
18336
金钱
16939
HASS币
290
 楼主| 发表于 2022-7-2 01:17:07 | 显示全部楼层
使用UC代理服务器,结果显示:
{'errcode': 60020, 'errmsg': 'not allow to access from your ip, hint: [1656695515075720321913298], from ip: 101.71.140.6, more info at https://open.work.weixin.qq.com/devtool/query?e=60020'}
不安全的访问IP
排查方法:
错误码:60020
不安全的访问IP。请根据调用的应用类型分别按如下方法确认:
1)若调用者是企业自建应用或通讯录同步助手,请确认该IP是本企业服务器IP,并已经配置到应用详情的“企业可信IP”项目中。第三方服务商IP不能调用。
2)若调用者是第三方应用或服务商代开发应用,请确认该IP已经配置到“服务商管理后台”-“服务商信息”-“基本信息”-“IP白名单”。

还是需要个人服务器做代理才行。

用了一个免费的云主机node-red中转,测试可以正常使用。
回复

使用道具 举报

8

主题

90

帖子

567

积分

高级会员

Rank: 4

积分
567
金钱
477
HASS币
0
发表于 2022-7-24 03:17:40 | 显示全部楼层
請問企业微信自建应用 如何target 微信接收者啦??
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 07:54 , Processed in 2.230848 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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