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

 更新时间:2020年04月01日 11:14:31   作者:刘悦的技术博客  
这篇文章主要介绍了详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

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

随后点击添加机器人按钮

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

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

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

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

创建成功后,系统会分配给你一个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&timestamp='+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)

推送效果是下面这样的:

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

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

相关文章

  • Python endswith()函数的具体使用

    Python endswith()函数的具体使用

    本文主要介绍了Python endswith()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 安装docker-compose的两种最简方法

    安装docker-compose的两种最简方法

    在本篇文章里小编给各位整理的是关于安装docker-compose的具体方法总结,有需要的朋友们参考下。
    2019-07-07
  • python中的十大%占位符对应的格式化的使用方法

    python中的十大%占位符对应的格式化的使用方法

    本文主要介绍了python中的十大%占位符对应的格式化的使用方法,它可以很好的帮助我们解决一些字符串格式化的问题, 文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • OpenCV-Python实现轮廓检测实例分析

    OpenCV-Python实现轮廓检测实例分析

    这篇文章主要介绍了OpenCV-Python实现轮廓检测实例分析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 如何在Python中将字符串转换为数组详解

    如何在Python中将字符串转换为数组详解

    最近在用Python,做一个小脚本,有个操作就是要把内容换成数组对象再进行相关操作,下面这篇文章主要给大家介绍了关于如何在Python中将字符串转换为数组的相关资料,需要的朋友可以参考下
    2022-12-12
  • DataFrame里的replace替换方式

    DataFrame里的replace替换方式

    这篇文章主要介绍了DataFrame里的replace替换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • python之PyQt按钮右键菜单功能的实现代码

    python之PyQt按钮右键菜单功能的实现代码

    这篇文章主要介绍了python PyQt按钮右键菜单功能的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本

    详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本

    这篇文章主要介绍了详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 详解Python装饰器 给你的咖啡加点料

    详解Python装饰器 给你的咖啡加点料

    今天你的咖啡加糖了吗? 让我们通过一个简单的例子来引出装饰器的概念及用法。在引出装饰器之前,我们先来了解一下函数的概念,感兴趣的朋友跟随小编一起看看吧
    2021-07-07
  • PyTorch-Forecasting一个新的时间序列预测库使用详解

    PyTorch-Forecasting一个新的时间序列预测库使用详解

    这篇文章主要为大家介绍了PyTorch-Forecasting一个新的时间序列预测库示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论