在测试日常工作中经常需要同步目前测试状态和数据给到项目组,邮件通知是一种方式,但容易被忽视,查看不及时,特别是对于线上监控的通知,因此建立实现群消息通知,可以及时的通知到项目组所有人员,且可以@相关人,提高通知效率。
在此简单介绍实现飞书,钉钉两种应用的群消息发送实现,以供参考。
一、飞书群消息发送
飞书群中的消息发送是群内的自定义机器人是通过webhook的形式将你要发送的消息即时发送到群聊中。
具体步骤:
- 进入群聊,打开群设置,找到群机器人,并点击添加机器人。选择自定义机器人
- 点击添加该机器人进群,设置机器人头像、名称和描述,然后点击添加
- 会自动生成webhook,可根据需要在下方选择安全设置的方式,也可不选,本次选择的是签名校验,保证群消息发送安全性。webhook和key复制保存,点击完成。
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()
运行结果:
富文本消息发送:
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
发送结果: