如何增加机器人进群(|)

首页教程更新时间:2023-06-03 23:25:05

在测试日常工作中经常需要同步目前测试状态和数据给到项目组,邮件通知是一种方式,但容易被忽视,查看不及时,特别是对于线上监控的通知,因此建立实现群消息通知,可以及时的通知到项目组所有人员,且可以@相关人,提高通知效率。

在此简单介绍实现飞书,钉钉两种应用的群消息发送实现,以供参考。

一、飞书群消息发送

飞书群中的消息发送是群内的自定义机器人是通过webhook的形式将你要发送的消息即时发送到群聊中。

具体步骤:

  1. 进入群聊,打开群设置,找到群机器人,并点击添加机器人。选择自定义机器人

如何增加机器人进群,|(1)

  1. 点击添加该机器人进群,设置机器人头像、名称和描述,然后点击添加
  2. 会自动生成webhook,可根据需要在下方选择安全设置的方式,也可不选,本次选择的是签名校验,保证群消息发送安全性。webhook和key复制保存,点击完成。

如何增加机器人进群,|(2)

webhook和key要保管好,不可发布到网上,泄露后可能会被恶意发送消息

4. 调用webhook发送消息

用任意方式向该 webhook 发起 HTTP POST 请求,即可向这个自定义机器人所在的群聊发送消息。在消息体中,消息类型与参数msg_type的对应关系如下:

参数(msg_type)

消息类型

text

文本

post

富文本

image

图片

share_chat

分享群名片

interactive

消息卡片

文本消息发送:

#!/usr/bin env python # -*- coding:UTF-8 -*- import os import base64 import requests class alarm: def __init__(self, webhook, user_id): self.webhook = webhook self.user_id = user_id def gen_sign(self, timestamp, secret): # 拼接timestamp和secret string_to_sign = '{}\n{}'.format(timestamp, secret) hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest() # 对结果进行base64处理 sign = base64.b64encode(hmac_code).decode('utf-8') return sign def send_text_msg(self): data = self.get_data() res = requests.post(self.webhook, json=data) def get_data(self): data = {"msg_type": "text", "content": {"text": "文本消息告警通知!"}} return data if __name__ == '__main__': web_hook = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxx" key = "keystrxxxxxxxx" at_user = "all" alarm = Alarm(web_hook, key, at_user) alarm.send_text_msg()

运行结果:

如何增加机器人进群,|(3)

富文本消息发送:

def get_data(self): data = { "msg_type": "post", "content": { "post": { "zh_cn": { "title": "测试结果通知", "content": [ [ {"tag": "text", "text": "测试结果:"}, {"tag": "a", "text": "点击查看\n", "href": "https://www.baidu.com"}, {"tag": "at", "user_id": self.user_id} ] ] } } } } return data

发送结果:

如何增加机器人进群,|(4)

图片发送:

需要开发机器人应用,在此不详细介绍,可以参考飞书官方地址:

https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/image/create

https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-enable-bot-ability

公司内部开发已开发完成,这里主要介绍下测试结果数据和图片汇总,以及调用发送

# 获取所有的图片列表 def get_screen(self): screen_list = [] return screen_list # 获取测试失败的模块列表 def get_module_list(self): error_module_list = [] return error_module_list # 图片消息发送 def send_img_msg(self, screen_path): screen_list = self.get_screen() error_module_list = self.get_module_list() image_list = [] data = { 'title': "UI检测结果", 'mutiple_text': [ "如下页面展示异常:", ], 'image_list': [] } image_list = data['image_list'] mutiple_text = data['mutiple_text'] # 失败模块加入发送data中 for module_name in error_module_list: mutiple_text.append(module_name) # 图片文件的base64编解码,webhook调用发送 for screen in screen_list: file_path = os.path.join(screen_path, screen) try: with open(file_path, 'rb') as fp: image_base64 = base64.b64encode(fp.read()) image_binary_str = image_base64.decode() image_list.append(image_binary_str) except Exception as e: print("there is an error when open screen file: ", e) res = requests.post(url=self.webhook, json=data) if __name__ == '__main__': web_hook = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxx" screen_file_path = "/home/jenkins/workspace/UITest/screens" alarm.send_img_msg(screen_file_path)

在实际应用中该脚本文件要集成的jenkins中,在持续集成步骤,每次触发构建后自动发送通知,在脚本中可加一个条件,如果有失败结果再发送群通知。

二、钉钉群消息发送

同飞书类似,需要添加自定义机器人,获取webhook及加签key

步骤:

  1. 进入群聊,打开群设置,智能群助手,并点击添加机器人。选择自定义

如何增加机器人进群,|(5)

2. 点击添加,设置机器人头像、名字,勾选“加签”,复制保存密钥,然后点击完成。

3. 会自动生成webhook,webhook复制保存,点击完成,机器人添加群完毕。

4. 调用webhook发送消息

本例同样采用了加签方式进行消息发送,把timestamp "\n" 密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。

text消息发送:

class Alarm: def __init__(self, webhook, key): self.url = webhook self.secret = key self.headers = {"Content-Type": "application/json"} def get_sign(self, timestamp, secret): 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_plus(base64.b64encode(hmac_code)) return timestamp, sign def send_text_msg(self, msg, at_mobiles=None, is_atall=False): data = { "msgtype": "text", "text": { "content": msg }, "at": { "atMobiles": at_mobiles, "isAtAll": is_atall } } timestamp, sign = self.get_sign(str(round(time.time() * 1000)), self.secret) url = f'{self.url}×tamp={timestamp}&sign={sign}' r = requests.post(url, json=data, headers=self.headers) ret = r.json() if ret.get("errcode") != 0: logger.info("钉钉消息发送失败!返回报文是:{}", ret) return False logger.info("钉钉消息发送成功") return True if __name__ == '__main__': web_hook = "https://oapi.dingtalk.com/robot/send?access_token=test" key = "SEC29d9b638568e66aa236f8d7ea628f4c16bba9db010a87cd37902672test" alarm = Alarm(web_hook, key) at_mobiles = ["13800138000"] alarm.send_text_msg("自动化测试结果有异常,请及时关注", at_mobiles, False)

测试结果:

如何增加机器人进群,|(6)

link消息发送

data = { "msgtype": "link", "link": { "text": "发版前回归测试通知,请各相关负责人认真确认相关测试bug,及时处理,保证产品如期上线", "title": "回归测试缺陷通知", "picUrl": "https://img95.699pic.com/xsj/04/mn/g9.jpg!/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast", "messageUrl": "https://www.dingtalk.com/" } }

通知效果:

如何增加机器人进群,|(7)

其它消息类型,支持markdown,actionCard等类型,可参考钉钉官方介绍文档。

钉钉也支持gitlab, github, jira等机器人进行简单webhook配置,即可实现群通知,十分方便。

以上为最基本的使用方法,实际应用中要结合具体业务和场景实现使用,目前测试工作中主要应用方面,一个是每日通过脚本读取数据库中bug相关数据统计并发送群通知(项目名称,bug总计,今日新增,今日修复,今日关闭等数据),第二个是自动化测试和线上定时检测的异常和告警通知,及时反馈给相关人员,及时处理。


感谢阅读,欢迎关注微信公众号(ATester),所有文章会在公众号首发。

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
今日潍坊
今日潍坊
下载
小学人教版英语学习教材
小学人教版英语学习教材
下载
黑客主题软件
黑客主题软件
下载
万融网
万融网
下载
长江期货掌上大户室
长江期货掌上大户室
下载
俄罗斯六角消除
俄罗斯六角消除
下载
雅安生态农业网
雅安生态农业网
下载
光速火柴人
光速火柴人
下载
射箭比赛破解版
射箭比赛破解版
下载
京门风月360版
京门风月360版
下载
环世界更好的T恤纹理v1.2MOD
环世界更好的T恤纹理v1.2MOD
下载
足球2013快捷助手2.0
足球2013快捷助手2.0
下载
天天撞车
天天撞车
下载
魔能方碑之巫
魔能方碑之巫
下载
易厨净菜
易厨净菜
下载
小够社区
小够社区
下载