详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)


Posted in Python onApril 01, 2020

最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用,真的让人觉得阿里的pm都是脑残才会设计出这种脑残产品,不过吐槽归吐槽,该用还得用,虽然钉钉别的功能很鸡肋,但是机器人这个功能还是让人眼前一亮,属于比较极客的功能,它可以将第三方服务的信息聚合到钉钉群中,实现信息的自动化同步,例如:通过聚合Github、Gitlab等源码管理服务,实现源码更新同步;通过聚合Trello、JIRA等项目协调服务,实现项目信息同步;同事,支持Webhook协议的自定义接入,支持更多可能性,例如:将运维报警提醒、自动化测试的结果报告提醒、工作、生活日程安排(上班打卡、下班吃饭、健身、读书、生日、纪念日...)等等的提醒,通过自定义机器人聚合到钉钉中。

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

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

详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

随后点击添加机器人按钮

详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

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

详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

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

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

详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

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

详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

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

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

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

import time
import hmac
import hashlib
import base64
import urllib.parse

timestamp = str(round(time.time() * 1000))
secret = 'SEC90485937c351bfaed41fea8eda5f1e155bbf22842d5f9d6871999e05822fd894'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote(base64.b64encode(hmac_code))
# print(timestamp)
# print(sign)


import requests,json #导入依赖库
headers={'Content-Type': 'application/json'} #定义数据类型
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=f0ca7636f5812fe4815c97a72de9a7cc780c414c258b6c9a631036b1d0f49e3b×tamp='+timestamp+"&sign="+sign
#定义要发送的数据
#"at": {"atMobiles": "['"+ mobile + "']"
data = {
 "msgtype": "text",
 "text": {"content": '都谁没加到群里来?小心升不了班'},
 "isAtAll": True}
res = requests.post(webhook, data=json.dumps(data), headers=headers) #发送post请求

print(res.text)

推送效果是下面这样的:

详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

原文转载自「刘悦的技术博客」 v3u.cn/a_id_132

到此这篇关于详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)的文章就介绍到这了,更多相关python3.7 钉钉群自定义机器人内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
python2.7实现邮件发送功能
Dec 12 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
基于PyQT实现区分左键双击和单击
May 19 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
Python无损压缩图片的示例代码
Aug 06 Python
通俗讲解python 装饰器
Sep 07 Python
python 解决函数返回return的问题
Dec 05 Python
python基础之//、/与%的区别详解
Jun 10 Python
Django更新models数据库结构步骤
Apr 01 #Python
pycharm工具连接mysql数据库失败问题
Apr 01 #Python
利用Python自动化操作AutoCAD的实现
Apr 01 #Python
python使用信号量动态更新配置文件的操作
Apr 01 #Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 #Python
python自动脚本的pyautogui入门学习
Apr 01 #Python
Python自动重新加载模块详解(autoreload module)
Apr 01 #Python
You might like
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
jQuery中$.click()无效问题分析
2015/01/29 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
python实现简单中文词频统计示例
2017/11/08 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
python中set()函数简介及实例解析
2018/01/09 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
pycharm显示远程图片的实现
2019/11/04 Python
如何给Python代码进行加密
2020/01/10 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
用python写爬虫简单吗
2020/07/28 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
《学会待客》教学反思
2014/02/22 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
2014年终个人总结报告
2015/03/09 职场文书
运动会800米赞词
2015/07/22 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
python装饰器代码解析
2022/03/23 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python