用Python开发钉钉群机器人,自动办公神器

新闻 前端
最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,虽然钉钉别的功能很鸡肋,但是机器人这个功能还是让人眼前一亮,属于比较极客的功能,它可以将第三方服务的信息聚合到钉钉群中,实现信息的自动化同步。

 最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,虽然钉钉别的功能很鸡肋,但是机器人这个功能还是让人眼前一亮,属于比较极客的功能,它可以将第三方服务的信息聚合到钉钉群中,实现信息的自动化同步。

注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。

例如:通过聚合Github、Gitlab等源码管理服务,实现源码更新同步;通过聚合Trello、JIRA等项目协调服务,实现项目信息同步;同时,支持Webhook协议的自定义接入,支持更多可能性,例如:将运维报警提醒、自动化测试的结果报告提醒、工作、生活日程安排(上班打卡、下班吃饭、健身、读书、生日、纪念日...)等等的提醒,通过自定义机器人聚合到钉钉中。

不过关于钉钉机器人网上的一些攻略年代都比较久远,代码很多都基于python2,为了与时俱进,我们尝试用python3.7来开发配置钉钉自定义机器人。

首先明确一点,钉钉自定义机器人早就不支持在手机端创建了,所以打开你的pc端或者mac端的钉钉客户端,在需要机器人的聊天群界面,点击智能群助手

用Python开发钉钉群机器人,自动办公神器

随后点击添加机器人按钮

用Python开发钉钉群机器人,自动办公神器

此时能看到很多已经封装好的第三方机器人,本次我们选择自定义机器人

用Python开发钉钉群机器人,自动办公神器

值得一提的是,钉钉的机器人基于webhook协议,webhook呢是一个api概念,是微服务api的使用范式之一,也被称为反向api,即前端不主动发送请求,完全由后端推送,有机会会专独写一篇文章阐述webhook

在添加机器人界面里,填写一些机器人的信息

用Python开发钉钉群机器人,自动办公神器

需要注意的是,在安全设置一栏里,我们选择加签的方式来验证,在此说明一下,钉钉机器人的安全策略有三种,第一种是使用关键字,就是说你推送的消息里必须包含你创建机器人时定义的关键字,如果不包含就推送不了消息,第二种就是使用加密签名,第三种是定义几个ip源,非这些源的请求会被拒绝,综合来看还是第二种又安全又灵活。

用Python开发钉钉群机器人,自动办公神器

创建成功后,系统会分配给你一个webhook地址,这个地址需要保存一下,地址中有唯一的accesstoken

ok,那么怎么利用这个地址让你的机器人推送消息呢?查看官方文档: ding-doc.dingtalk.com/doc#/server…

发现文档居然还是python2.0的版本,好吧,我们自己来翻译成3.0

  1. import time 
  2. import hmac 
  3. import hashlib 
  4. import base64 
  5. import urllib.parse 
  6.  
  7. timestamp = str(round(time.time() * 1000)) 
  8. secret = 'SEC90485937c351bfaed41fea8eda5f1e155bbf22842d5f9d6871999e05822fd894' 
  9. secret_enc = secret.encode('utf-8'
  10. string_to_sign = '{}n{}'.format(timestamp, secret) 
  11. string_to_sign_enc = string_to_sign.encode('utf-8'
  12. hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() 
  13. sign = urllib.parse.quote(base64.b64encode(hmac_code)) 
  14. # print(timestamp) 
  15. # print(sign) 
  16.  
  17.  
  18. import requests,json   #导入依赖库 
  19. headers={'Content-Type''application/json'}   #定义数据类型 
  20. webhook = 'https://oapi.dingtalk.com/robot/send?access_token=f0ca7636f5812fe4815c97a72de9a7cc780c414c258b6c9a631036b1d0f49e3b×tamp='+timestamp+"&sign="+sign 
  21. #定义要发送的数据 
  22. #"at": {"atMobiles""['"+ mobile + "']" 
  23. data = { 
  24.     "msgtype""text"
  25.     "text": {"content"'都谁没加到群里来?小心升不了班'}, 
  26.     "isAtAll": True} 
  27. res = requests.post(webhook, data=json.dumps(data), headers=headers)   #发送post请求 
  28.  
  29. print(res.text) 
  30. 复制代码 

推送效果是下面这样的:

用Python开发钉钉群机器人,自动办公神器

 

责任编辑:张燕妮 来源: 今日头条
相关推荐

2021-04-21 09:16:04

Python开发钉钉群机器人

2021-06-02 08:47:03

Zabbix5.2钉钉机器人告警图运维

2023-02-13 07:40:35

ChatGPT钉钉机器人

2021-10-18 07:23:36

钉钉打卡开发者

2023-04-28 10:15:20

2022-07-06 08:34:17

前端单测项目

2016-05-13 16:54:06

阿里云办公

2018-08-10 12:56:00

大数据

2017-12-25 14:47:24

移动

2018-08-02 16:11:12

2021-04-18 10:34:28

Spring Clou邮件钉钉

2020-02-17 15:17:57

钉钉

2020-07-16 10:52:27

钉钉打卡Python

2021-05-29 14:14:16

阿里云钉钉低代码开发

2020-03-26 09:00:16

机器人阿里智能

2021-05-07 13:20:39

Python机器人编程语言

2023-08-22 20:48:06

模型钉钉阿里云

2020-03-06 15:16:59

远程办公钉钉企业微信
点赞
收藏

51CTO技术栈公众号