钉钉python推送库 (python钉钉机器人工作提醒)

python实现钉钉推送信息,python钉钉推送机器人代码

python实现钉钉推送信息,python钉钉推送机器人代码

点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复“资源”、“测试工具包”领取测试资源。

本文7527字,阅读约需19分钟

Hi,大家好。 很多公司都选择阿里旗下的办公软件钉钉来作为管理工具,u1s1,钉钉这个产品有很多槽点,但其中的机器人功能还是让人眼前一亮,它可以将第三方服务的信息聚合到钉钉群中,实现信息的自动化同步。

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

不过关于钉钉机器人网上的一些攻略年代都比较久远,代码很多都基于python2,为了与时俱进,我们尝试用python3 来开发配置钉钉自定义机器人,如果想要获取本文完整代码可在ITester软件测试小栈微信公众号后台回复“ 钉钉群消息源码 ”。

使用场景:定时上下班打卡,定时提醒,测试结果推送等。

系统环境:windows/Mac

Python环境:Python3以上

其他设备:钉钉

钉钉设置

创建钉钉机器人

①添加智能群助手:首先明确一点,钉钉自定义机器人目前不支持在手机端创建,所以打开PC端或者Mac端的钉钉客户端,在需要机器人的聊天群界面,点击智能群助手。

python实现钉钉推送信息,python钉钉推送机器人代码

②随后点击添加机器人按钮:

python实现钉钉推送信息,python钉钉推送机器人代码

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

python实现钉钉推送信息,python钉钉推送机器人代码

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

填写添加信息

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

python实现钉钉推送信息,python钉钉推送机器人代码

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

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

python实现钉钉推送信息,python钉钉推送机器人代码

③添加完成:

python实现钉钉推送信息,python钉钉推送机器人代码

Python代码实现钉钉消息推送

编写代码

创建一个钉钉发送消息的Python文件,编写代码。

①安全方式使用加签的方式:timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。

参数说明如下:

参数

说明

timestamp

当前时间戳,单位是毫秒,与请求调用时间误差不能超过1小时

secret

密钥,机器人安全设置页面,加签一栏下以SEC开头的字符串

代码如下所示:

python实现钉钉推送信息,python钉钉推送机器人代码

将timestamp和第一步得到的签名值拼接到URL中

https: //oapi.dingtalk.com/robot/send?access_token=XXXXXX×tamp=XXX&sign=XXX

参数说明如下:

参数

说明

timestamp

时间戳

sign

签名值

发送请求:

python实现钉钉推送信息,python钉钉推送机器人代码

2

实现效果

推送效果如下:

python实现钉钉推送信息,python钉钉推送机器人代码

Python DingDingBot实现钉钉消息推送

Python第三方包之DingDingBot钉钉机器人实现消息推送,支持发文本格式、链接格式、markdown格式。

安装DingDingBot

安装命令如下:

pip install DingtalkChatbot

钉钉发消息示例

(1) 发送txt消息 @所有人

示例代码如下:

python实现钉钉推送信息,python钉钉推送机器人代码

推送效果如下:

python实现钉钉推送信息,python钉钉推送机器人代码

(2) 发送txt消息 @指定人

示例代码如下:

# 用户手机号列表
at_mobiles = ['13112341234'] #这里填@的人的手机号,可自定义@的位置,默认添加在消息末尾
xiaoding.send_text(msg='欢迎关注微信公众号:ITester软件测试小栈!', at_mobiles=at_mobiles)

推送效果如下:

python实现钉钉推送信息,python钉钉推送机器人代码

(3) 发送Link消息

示例代码如下:

# link
xiaoding.send_link(title='ITester软件测试小栈所有历史文章',
                   text='点击查收!',
                   message_url='https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect',
                   pic_url='http://wx.qlogo.cn/mmhead/Q3auHgzwzM6h0QgTMSjYavc1h3yODa0xnS5iaI09GXpM49gpncZcYhw/132')

推送效果如下:

python实现钉钉推送信息,python钉钉推送机器人代码

(4) 发送图片消息

示例代码如下:

# image
xiaoding.send_image(pic_url='https://mmbiz.qpic.cn/mmbiz_gif/9RdLdzUL98hSxnicLQUHJlRh6jE5bJOOOK5gpQSEsjgibnDKGrDic6AL1yUmyAmkn638fQvDGDroQkEHnib6iaOSAEg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1')

(5) 发送Markdown消息给所有人

示例代码如下:

# markdown
# 1、提醒所有人
xiaoding.send_markdown(title='ITesster软件测试小栈', text='#### ITesster软件测试小栈 精选话题\n'
                                          '> 接口自动化测试,UI测试,测试面试,送书福利\n\n'
                                          '> ![话题](https://mmbiz.qpic.cn/mmbiz_gif/9RdLdzUL98hSxnicLQUHJlRh6jE5bJOOOK5gpQSEsjgibnDKGrDic6AL1yUmyAmkn638fQvDGDroQkEHnib6iaOSAEg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1)\n'
                                          '> ###### 10点24分发布 [查看所有](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect) \n',
                       is_at_all=True)

(6) 发送Markdown消息给指定人

示例代码如下:

# 用户手机号列表
at_mobiles = ['13112341234'] #这里填@的人的手机号,可自定义@的位置,默认添加在消息末尾
# 2、提醒指定手机用户,并在text内容中自定义”@用户“的位置
xiaoding.send_markdown(title='ITesster软件测试小栈', text='#### ITesster软件测试小栈 精选话题 @13112341234\n'
                                          '> 接口自动化测试,UI测试,测试面试,送书福利\n\n'
                                          '> ![话题](https://mmbiz.qpic.cn/mmbiz_gif/9RdLdzUL98hSxnicLQUHJlRh6jE5bJOOOK5gpQSEsjgibnDKGrDic6AL1yUmyAmkn638fQvDGDroQkEHnib6iaOSAEg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1)\n'
                                          '> ###### 10点24分发布 [查看所有](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect)\n',
                       at_mobiles=at_mobiles, is_auto_at=False)

(7) ActionCard整体跳转消息类型

示例代码如下:

# 整体跳转ActionCard
btns1 = [CardItem(title="查看详情", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect")]
actioncard1 = ActionCard(title='ITester软件测试小栈',
                         text='![markdown](https://mmbiz.qpic.cn/mmbiz_gif/9RdLdzUL98hSxnicLQUHJlRh6jE5bJOOOK5gpQSEsjgibnDKGrDic6AL1yUmyAmkn638fQvDGDroQkEHnib6iaOSAEg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1) \n### 扫码可查看ITester软件测试小栈历史文章',
                         btns=btns1,
                         btn_orientation=1,
                         hide_avatar=1)
xiaoding.send_action_card(actioncard1)

推送效果如下:

(8) ActionCard单独跳转消息(两个按钮选择)

示例代码如下:

# 单独跳转ActionCard
# 1、两个按钮选择
btns2 = [CardItem(title="点赞", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect"),
         CardItem(title="比心❤️", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect")]
actioncard2 = ActionCard(title='查看详情',
                         text='![markdown](https://mmbiz.qpic.cn/mmbiz_gif/9RdLdzUL98hSxnicLQUHJlRh6jE5bJOOOK5gpQSEsjgibnDKGrDic6AL1yUmyAmkn638fQvDGDroQkEHnib6iaOSAEg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1) \n### 扫码可查看ITester软件测试小栈历史文章',
                         btns=btns2,
                         btn_orientation=1,
                         hide_avatar=1)
xiaoding.send_action_card(actioncard2)

推送效果如下:

(9) ActionCard单独跳转消息(三个按钮选择)

示例代码如下:

# 2、三个按钮选择
btns3 = [CardItem(title="点赞", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect"),
         CardItem(title="星标✨", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect"),
         CardItem(title="比心❤️", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect")]
actioncard3 = ActionCard(title='查看详情',
                         text='![markdown](https://mmbiz.qpic.cn/mmbiz_gif/9RdLdzUL98hSxnicLQUHJlRh6jE5bJOOOK5gpQSEsjgibnDKGrDic6AL1yUmyAmkn638fQvDGDroQkEHnib6iaOSAEg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1) \n### 扫码可查看ITester软件测试小栈历史文章',
                         btns=btns3,
                         btn_orientation=1,
                         hide_avatar=1)
xiaoding.send_action_card(actioncard3)

(10) FeedCard消息类型

示例代码如下:

# FeedCard消息类型(注意:当发送FeedCard时,pic_url需要传入参数值,必选)
card1 = CardItem(title="ITester软件测试小栈历史文章", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect", pic_url="https://mmbiz.qpic.cn/mmbiz_gif/9RdLdzUL98hSxnicLQUHJlRh6jE5bJOOOK5gpQSEsjgibnDKGrDic6AL1yUmyAmkn638fQvDGDroQkEHnib6iaOSAEg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1")
card2 = CardItem(title="精选文章", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect", pic_url="http://wx.qlogo.cn/mmhead/Q3auHgzwzM6h0QgTMSjYavc1h3yODa0xnS5iaI09GXpM49gpncZcYhw/132")
card3 = CardItem(title="热门文章", url="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MTg1NjA4Nw==#wechat_redirect", pic_url="http://wx.qlogo.cn/mmhead/Q3auHgzwzM6h0QgTMSjYavc1h3yODa0xnS5iaI09GXpM49gpncZcYhw/132")
cards = [card1, card2, card3]
xiaoding.send_feed_card(cards)

推送效果如下:

实现钉钉定时消息推送

钉钉定时消息推送可通过Jenkins集成,除此之外Mac端和PC端可以用自带的命令或工具实现定时消息推送,小白也能轻松搞定。

Mac端定时消息推送

Mac下可以使用crontab,通过crontab 命令可以在固定的间隔时间执行指定的系统命令或 shell 脚本,时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合,组合方式需要符合相应语法。该工具非常适合周期性的日志分析或数据备份等工作,定时发送钉钉消息。

sudo crontab -e 创建或者修改任务:

任务文件格式:

sudo crontab -e
#回车,输入密码
#进入编辑任务页面

②编辑任务:

* * *  * * python安装路径 运行文件路径
│ │ │ │  │
│ │ │ │  └─── 星期几 (0 - 6) (0到6 0代表周日 1周一)
│ │ │ └──────── 月份 (1 - 12)
│ │ └───────────── 每月几号 (1 - 31)
│ └────────────────── 小时 (0 - 23)
└─────────────────────── 分钟 (0 - 59)

PC端定时消息推送

Windows用自带的任务计划程序,定时发送钉钉消息。

打开任务计划程序:控制面板>系统和安全>管理工具>任务计划程序。

python实现钉钉推送信息,python钉钉推送机器人代码

②创建基本任务:

python实现钉钉推送信息,python钉钉推送机器人代码

③填写配置信息:

a)填写名称:

python实现钉钉推送信息,python钉钉推送机器人代码

b) 填写执行间隔:

python实现钉钉推送信息,python钉钉推送机器人代码

c) 填写执行开始时间:

python实现钉钉推送信息,python钉钉推送机器人代码

d 填写启动内容(目前只支持启动某个程序或脚本)

python实现钉钉推送信息,python钉钉推送机器人代码

e) 选择要执行的程序或脚本: 将钉钉推送消息的Python代码另存为.bat文件,然后在这一步打开。

python实现钉钉推送信息,python钉钉推送机器人代码

④运行Python脚本

在Python环境下,用cmd可以直接运行Python脚本。例如脚本文件名是:chatbot.py 存放在C盘,则写一个批处理,内容为:

python C:\chatbot.py

然后把此内容另存为 xx.bat文件,则选择运行此文件即可。

叮叮叮是不是每天都能收到Python开发的钉钉群机器人推送的消息了?如果想要获取完整代码可在ITester软件测试小栈微信公众号后台回复“ 钉钉群消息源码 ”。

更多系列文章

敬请期待

我是CoCo,计算机科学与技术专业,深漂大厂互联网民工(女),坐标深圳。5年工作经验,3年持续输出技术文。 ITester软件测试小栈(ID:ITestingA),专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。

python实现钉钉推送信息,python钉钉推送机器人代码

python实现钉钉推送信息,python钉钉推送机器人代码

想获取更多最新干货内容

快来 星标 置顶 关注