工作中会经常遇到监控告警相关问题,监控和告警的目的是要在事中及时发现问题并定位系统问题,那么当系统或平台出现问题了,如何及时暴露这些问题给对应的项目开发人员呢?

本文记录了在Python项目中利用飞书的自定义机器人webhook向飞书群推送文本及图片消息~

飞书机器人自动发送群消息

  • 1. 飞书群添加飞书机器人
  • 2. 通过webhook发送群消息
    • 2.1 发送文本消息
    • 2.2 发送富文本消息
    • 2.3 发送图片消息

1. 飞书群添加飞书机器人

  • 飞书群-设置-群机器人-添加机器人-自定义机器人;

  • 复制webhook地址,webhook地址就是用来发送消息的接口;

2. 通过webhook发送群消息

参考:飞书官方开发文档

2.1 发送文本消息

注:如想要@具体成员,则需要获取对方的user_id,可参考:获取user_id

class FeishuTalk:# 机器人webhookchatGPT_url = 'https://open.feishu.cn/open-apis/bot/v2/hook/XXX'# 发送文本消息def sendTextmessage(self, content):url = self.chatGPT_urlheaders = {"Content-Type": "application/json; charset=utf-8",}payload_message = {"msg_type": "text","content": {# @ 单个用户 <at user_id="ou_xxx">名字</at>"text": content + "<at user_id=\"bf888888\">test</at>"  # @ 所有人 <at user_id="all">所有人</at># "text": content + "<at user_id=\"all\">test</at>"}}response = requests.post(url=url, data=json.dumps(payload_message), headers=headers)return response.json# 执行发送文本消息content = "生活不止眼前的苟且,还有诗和远方!"FeishuTalk().sendTextmessage(content)

2.2 发送富文本消息

  • 富文本可以在一条消息中同时支持文字、At、图片、超链接等元素,可参考:富文本消息

  • 对于需要换行展示的消息,可通过发送 富文本消息 进行实现,比如发送一个榜单消息

    # 发送富文本消息def sendFuTextmessage(self, content):url = self.chatGPT_urlheaders = {"Content-Type": "application/json; charset=utf-8",}payload_message = {"msg_type": "post","content": {"post": {"zh_cn": {"title": "微博头条热榜","content": content}}}}response = requests.post(url=url, data=json.dumps(payload_message), headers=headers)return response# 微博头条榜单def getHotBand(self):url = "https://www.weibo.com/ajax/statuses/hot_band"headers = {"cookie": "XSRF-TOKEN=iuIb9M_gQ8D4FjMwUthqcink; SUB=_2AkMUpJdaf8NxqwJRmPEVz2Pib4V_zwrEieKi-GaBJRMxHRl-yT92qhALtRB6PyS5tbPLRbsCo0gfSwhlb8PLq3CnqnuA; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WFyRDSrne6a4e.bkQHJzd-.; WBPSESS=IawIaCISeX-46VmeRocrJ40RrQZ7YTNxKt6pB9xuTQ-WP-uhwIvsoHpBEQfU2CGlyGf32loDQLI6ykRbGvzNf_mvmCuvfYLwUPDbYHJizUdUKfKplkCi6sPas7wrz6ACVGt8HOr-w8hjNGpZtkeUtLcl0-BFnXMuSPDMToH7QlI=","x-xsrf-token": "iuIb9M_gQ8D4FjMwUthqcink"}response = requests.get(url=url, headers=headers).json()bandList_all = []index = 1for item in response['data']['band_list']:bandDict = {"tag": "text"}bandList = []bandDict.update({"text": "No." + str(index) + ":" + item['word']})bandList.append(bandDict)index += 1bandList_all.append(bandList)return bandList_all# 发送富文本消息
content = FeishuTalk().getHotBand()
FeishuTalk().sendFuTextmessage(content)
# 注:富文本消息的content消息体格式如下
[[{"tag": "text","text": "第一行 :"}],[{"tag": "text","text": "第二行:"}]
]

2.3 发送图片消息

发送图片要分为两步:第一步通过上传图片接口获取image_key,第二步将上传的图片发送到群。可参考:发送图片

  1. 登录【飞书开放平台-开发者后台】,查看app_id与app_secret,通过接口拿到 tenant_access_token,供上传图片接口使用。可参考:自建应用获取 tenant_access_token;

    注:需要开通上传图片权限,入口:开发者后台-权限管理-检索【获取与上传图片或文件资源】;

  2. 上传图片获取 image_key ,可参考:上传图片获取image_key

class FeishuTalk:# 应用凭证,获取方式查看上面的步骤app_id = "cli_a37c6ffbdxxxxxxx"app_secret = "mLstZkv0C4d1sxxxxxxxxxxxxxxx"# 机器人webhookchatGPT_url = 'https://open.feishu.cn/open-apis/bot/v2/hook/XXX'def __init__(self):# 获取tenant_access_token,供上传图片接口使用url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"headers = {"Content-Type": "application/json; charset=utf-8",}payload_data = {"app_id": self.app_id,"app_secret": self.app_secret}response = requests.post(url=url, data=json.dumps(payload_data), headers=headers).json()self.token = response['tenant_access_token']# 发送图片def uploadImage(self, picturePath):image_key_headers = {'Authorization': 'Bearer ' + self.token,}# 上传图片获取image_keyget_image_key_url = "https://open.feishu.cn/open-apis/im/v1/images"form = {'image_type': 'message','image': (open(picturePath, 'rb'))}  # 需要替换具体的pathmulti_form = MultipartEncoder(form)image_key_headers['Content-Type'] = multi_form.content_typeresponse = requests.request("POST", get_image_key_url, headers=image_key_headers, data=multi_form).json()# print(response.headers['X-Tt-Logid'])  # for debug or oncallimage_key = response['data']['image_key']print("image_key:", image_key)# 发送图片url = self.chatGPT_urlform = {'msg_type': 'image','content':{"image_key": image_key}}headers = {'Authorization': 'Bearer ' + self.token}response = requests.post(url=url, data=json.dumps(form), headers=headers)return response.json()# 发送图片消息
picturePath = "E:\PythonCodes\FeishuTalk\picLibs\1.jpg"
FeishuTalk().uploadImage(picturePath)

Python实现飞书机器人定时发送文本、图片等群消息相关推荐

  1. python自动化--飞书群发送日报图片

    学习笔记 1.实现功能 2.敲代码 3.小结 1.实现功能 工作中需要在群里发送常规统计的数据,利用pandas清洗.透视数据与飞书接口实现发送日报图片,实现自动化,解放自己.飞书文档的说明可自行查询 ...

  2. Jenkins+Allure测试报告+飞书机器人发送通知

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

  3. 企业微信机器人脚本python_python实现企业微信定时发送文本消息的示例代码

    企业微信定时发送文本消息 使用工具:企业微信机器人+python可执行文件+计算机管理中的任务计划程序 第一步:创建群机器人 选择群聊,单击鼠标右键,添加群机器人. 建立群机器人后,右键查看机器人,如 ...

  4. python+selenium+docker+飞书机器人部署自动预约程序

    python+selenium+docker+飞书机器人部署自动预约程序 项目介绍 python+selenium 滑块验证 selenium提示元素无法操作 无法定位到元素 接口+服务器部署 本地测 ...

  5. 基于odoo12 框架使用飞书机器人发送消息

    基于odoo12 框架使用飞书机器人发送消息 发送消息主要是注意请求体的context的构造. import requests import json params = {"receive_ ...

  6. Python 钉钉机器人定时发送笑话到钉钉群里 并@所有人

    先上效果图: 代码实现: 注意:不可直接复制代码运行,需填入api网站的key.及钉钉机器人的token地址 from dingtalkchatbot.chatbot import DingtalkC ...

  7. 【测试团队管理】Node版钉钉飞书机器人提醒团队成员每日缺陷状态

    一.场景 日常一般会通过jira bug面板筛选条件筛选出bug,如:经办人.状态.标签等,但这需要人为主动去筛选搜索,如果有一个定时每日钉钉群.飞书群提醒每个人截止当日bug情况就比较直观,对测试团 ...

  8. SVN提交更新飞书群通知 (飞书机器人)

    Jenkins发送飞书信息 2022.9.16更新 用python脚本 效果 步骤 1.修改 svn/hooks/post-commit 脚本. export LANG=zh_CN.UTF-8 exp ...

  9. 干货|Webhook配置钉钉/飞书机器人告警

    马嘉炜 | Zabbix开源社区签约专家 SRE运维工程师,六年Zabbix监控系统使用经验.在Zabbix架构设计及性能优化领域有丰富的经验,擅长监控模板制作及Zabbix API的二次开发. 官方 ...

最新文章

  1. Ubuntu 系统自带的截图工具screenshot
  2. Unity完全学习教程-从初学者到C#中的RPG游戏开发
  3. seo外链优化需要规避的那些坑
  4. Protocol handler start failedCaused by: java.net.SocketException: Permission denied
  5. SilverLight客户端搭建完善聊天室 测试网址swkzy.vicp.net
  6. 写软件开发需求你必须掌握的规格
  7. 图片弹幕蒙版java实现_通过css3实现蒙版弹幕
  8. lr_save_string 和 sprintf 的使用
  9. 智慧能源一体化管控平台
  10. 15个网页数据采集中最常遇到的问题(干货)
  11. bugku——宽带信息泄露(RouterPassView 查看路由器配置信息)
  12. go学习 --- go协程
  13. easypoi一对多导入_easypoi导入Excel最佳实践
  14. 微信文件下载内容如何调整存储位置?
  15. 基于JAVA SSM框架的学校家长互动学习平台
  16. 威尔逊置信区间 php,应用:推荐系统-威尔逊区间法
  17. 小猫爪:S32K3学习笔记11-S32K3之FCCU
  18. C语言.h文件的作用
  19. yolo论文_YOLO之父宣布退出CV界,坦言无法忽视自己工作带来的负面影响
  20. 基于Python的五子棋人机对战

热门文章

  1. Vue.js 官方 IDE/TS 支持工具 Volar:新的开始
  2. 听说做餐饮的都在赔钱,为什么新店却越开越多?
  3. 电脑开机失败提示用户配置文件服务登录失败的三种解决办法
  4. java编程猜数字大小 (要求利用随机数自动生成一个0--100内的随机数字)
  5. 关闭aslr oracle,关闭地址随机化ASLR
  6. 28道Webpack面试题及答案
  7. linux hdparm 测试磁盘io,Linux hdparm命令
  8. 计算机对学生生活影响论文参考文献,学生计算机论文,关于中专学校计算机教学秦爱华相关参考文献资料-免费论文范文...
  9. vscode常用插件大全
  10. P17-1.王道课后题-删除最小值元素