自动化执行 - 钉钉机器人通知

简介: 背景 公司内部用钉钉来办公,钉钉支持机器人提醒,有各种各样的机器人提供选择,可以根据需求来定制机器人,达到提醒功能,如提醒某人请下午茶,233   思路 1. 添加机器人到群组中,这次将的是“自定义”机器人; 2.

背景

公司内部用钉钉来办公,钉钉支持机器人提醒,有各种各样的机器人提供选择,可以根据需求来定制机器人,达到提醒功能,如提醒某人请下午茶,233

 

思路

1. 添加机器人到群组中,这次将的是“自定义”机器人;

2. 添加后会发现有一个webhook的链接,可以点击“设置说明”查看详情

3. 可以通过post请求网这个webhook发送信息,机器人就可以在群里展示信息,文档里有定义不同的请求body;

 文档地址:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.karFPe&treeId=257&articleId=105735&docType=1

 这里需要吐槽的一点,目前只发现text类型支持换行

4. 关键就是post请求里面的信息的填充,如果想到用python来处理;

5. 编写python脚本:大致思路就是解析自动化result文件,组装post请求

 实际代码如下:

  

import requests
import time
import json
import sys
import hashlib
import xml.dom.minidom



HEADERS = {'ua': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36'}
DINGDING_URL= 'https://oapi.dingtalk.com/robot/send?access_token=your_access_token'
RESULT_FILE= '/var/lib/jenkins/workspace/wm-api-autotest/target/surefire-reports/testng-results.xml'
REPORT_URL_FILE= '/var/lib/jenkins/workspace/wm-api-autotest/target/allure-results/executor.json'

class Message():

    def __init__(self):
        self.total=0;
        self.passed=0;
        self.failed=0;
        self.skipped=0;
        self.reportUrl="";

    #解析文件获取结果数据
    def analyze(self):
        #打开xml文档
        dom = xml.dom.minidom.parse(RESULT_FILE)
        #得到文档元素对象

        root = dom.documentElement
        self.total = root.getAttribute('total')
        self.passed = root.getAttribute('passed')
        self.failed = root.getAttribute('failed')
        self.skipped = root.getAttribute('skipped')

        #构建的次数统计在json文件中
        file = open(REPORT_URL_FILE,'r')
        self.reportUrl=json.load(file)['reportUrl']

    #发送报告
    def send_message_to_robot(self):
        url= DINGDING_URL
        message='wm-api自动化执行结果:\n本次执行了{}条用例;\n成功了{}条;\n失败了{}条;\n跳过了{}条;\n查看详情请点击=> {}'.format(self.total,self.passed,self.failed,self.skipped,self.reportUrl)
        data={"msgtype":"text","text":{"content":message,"title":"wm-api自动化结果通知"}}
        try:
            resp = requests.post(url,headers=HEADERS,json=data,timeout=(3,60))
        except:
            print ("Send Message is fail!");



if __name__ == '__main__':
    message = Message()
    message.analyze();
    message.send_message_to_robot();

6. jenkins设置,需要新增一个插件“Post build task”,用于构建后执行shell命令

 

7. 实际结果展示:

 

小结

1. 之前用邮件提醒,但邮件这东西容易被忽略,可以借助其他工具,如钉钉提醒;

2. 多接触/尝试新的东西没错;

 

虽千万人,吾往矣!
目录
相关文章
|
3月前
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
40 0
|
3月前
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
81 0
|
1月前
|
数据采集 DataWorks 监控
DataWorks常见问题之监控规则是数据质量配置好钉钉机器人不报警如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
31 5
|
1月前
|
SQL DataWorks 机器人
DataWorks常见问题之导致钉钉群的机器人发报警消息如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
44 7
|
1月前
|
安全 机器人 API
简单几步,钉钉机器人秒变通义千问对话机器人
大模型不知不觉已经火了快一年了,拥有一个能够随时对话使用的大模型已经成为不少人的刚需。然而,最大的问题可能是如何访问和调用对话模型。如果,我是说如果,能在您的即时通讯软件钉钉中直接与通义千问对话,是不是会让这一切更方便快捷?! 按照传统方案,我们要实现上述场景可能需要非常繁琐的接入步骤,甚至还需要自行开发很多代码,这样的准入门槛实在,太!高!啦! 而今天,我要向各位隆重介绍一个新的解决方案——阿里云计算巢AppFlow应用与数据集成平台,无需任何代码开发,简单快捷,自动连接企业内部应用与外部应用或数据,搭建企业的自动化服务流程,帮助个人、企业降低了集成实施的周期和成本。
846 1
|
2月前
|
机器人 Linux 数据安全/隐私保护
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)
Python办公自动化【Windows中定时任务、OS/linux 系统定时任务 、Python 钉钉发送消息、Python 钉钉发送图片】(九)-全面详解(学习总结---从入门到深化)
66 0
|
3月前
|
安全 机器人 Shell
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
45 0
|
3月前
|
运维 监控 安全
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
69 0
|
存储 弹性计算 安全
成功案例-钉钉 | 学习笔记
快速学习 成功案例-钉钉
290 0
|
存储 弹性计算 安全
案例分享——钉钉|学习笔记
快速学习 案例分享——钉钉
274 0

热门文章

最新文章