Python脚本实现向飞书发送卡片消息

目录

  • 1 先创建一个卡片消息
  • 2 Python脚本
    • 2.1 告警测试
    • 2.2 告警恢复
  • 总结

1 先创建一个卡片消息

飞书卡片搭建工具
在这里插入图片描述

根据自己的需要创建一个消息卡片:
在这里插入图片描述

可以在 卡片源代码 中看到这个卡片的代码信息
在这里插入图片描述

2 Python脚本

2.1 告警测试

test.py 文件

"""
飞书群机器人发送通知
"""
import time
import urllib3
import datetime
import json
import logging
import requests
from flask import Flask,jsonify,request# 获取当前时间
# current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')# 配置日志记录器
logging.basicConfig(level=logging.INFO)
Logger = logging.getLogger(__name__)urllib3.disable_warnings()
webhook_url="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx"class FlybookRobotAlert():def __init__(self):self.webhook = webhook_urlself.headers = {"Content-Type": "application/json; charset=UTF-8"}def post_to_robot(self, post_data):'''给飞书机器人发送请求:param data::return:'''try:resp = requests.request(method="POST", url=self.webhook, data=post_data, headers=self.headers).json()if resp.get("StatusCode") == 0 and resp.get("msg") == "success":Logger.info(f"飞书通知发送成功,msg={resp}")else:Logger.warning(f"飞书通知发送失败,{resp}")except Exception as e:Logger.warning("飞书通知发送异常")Logger.warning(e)passdef send_message(self, msg, color):# 飞书通知标题robot_headers = "LibreNMS告警"# msg:告警信息# color:来定义卡片的颜色execute_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")# 定义卡片card = json.dumps({"config": {"wide_screen_mode": True},"i18n_elements": {"zh_cn": [{"tag": "hr"},{"tag": "column_set","flex_mode": "none","horizontal_spacing": "default","background_style": "default","columns": [{"tag": "column","elements": [{"tag": "div","text": {"tag": "plain_text","content": msg,"text_size": "normal","text_align": "left","text_color": "default"}}],"width": "weighted","weight": 1}]}]},"i18n_header": {"zh_cn": {"title": {"tag": "plain_text","content": robot_headers},"subtitle": {"tag": "plain_text","content": "时间:%s"%execute_time},"template": color}}})msg_body = json.dumps({"msg_type": "interactive", "card": card})self.post_to_robot(msg_body)# {'StatusCode': 0, 'StatusMessage': 'success', 'code': 0, 'data': {}, 'msg': 'success'}returndef main():msg="失败!!!"color = "red"if "恢复" in msg:color="green"web = FlybookRobotAlert()web.send_message(msg,color)# 程序入口
if __name__ == "__main__":main()

运行:

# 在执行第一次的时候可能会报错没有模块,根据提示安装即可 
# 安装命令: pip install 模块名
python3 test.py 
INFO:__main__:飞书通知发送成功,msg={'StatusCode': 0, 'StatusMessage': 'success', 'code': 0, 'data': {}, 'msg': 'success'}

在这里插入图片描述

2.2 告警恢复

test.py 文件

"""
飞书群机器人发送通知
"""
import time
import urllib3
import datetime
import json
import logging
import requests
from flask import Flask,jsonify,request# 获取当前时间
# current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')# 配置日志记录器
logging.basicConfig(level=logging.INFO)
Logger = logging.getLogger(__name__)urllib3.disable_warnings()
webhook_url="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx"class FlybookRobotAlert():def __init__(self):self.webhook = webhook_urlself.headers = {"Content-Type": "application/json; charset=UTF-8"}def post_to_robot(self, post_data):'''给飞书机器人发送请求:param data::return:'''try:resp = requests.request(method="POST", url=self.webhook, data=post_data, headers=self.headers).json()if resp.get("StatusCode") == 0 and resp.get("msg") == "success":Logger.info(f"飞书通知发送成功,msg={resp}")else:Logger.warning(f"飞书通知发送失败,{resp}")except Exception as e:Logger.warning("飞书通知发送异常")Logger.warning(e)passdef send_message(self, msg, color):# 飞书通知标题robot_headers = "LibreNMS告警"# msg:告警信息# color:来定义卡片的颜色execute_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")card = json.dumps({"config": {"wide_screen_mode": True},"i18n_elements": {"zh_cn": [{"tag": "hr"},{"tag": "column_set","flex_mode": "none","horizontal_spacing": "default","background_style": "default","columns": [{"tag": "column","elements": [{"tag": "div","text": {"tag": "plain_text","content": msg,"text_size": "normal","text_align": "left","text_color": "default"}}],"width": "weighted","weight": 1}]}]},"i18n_header": {"zh_cn": {"title": {"tag": "plain_text","content": robot_headers},"subtitle": {"tag": "plain_text","content": "时间:%s"%execute_time},"template": color}}})msg_body = json.dumps({"msg_type": "interactive", "card": card})self.post_to_robot(msg_body)# {'StatusCode': 0, 'StatusMessage': 'success', 'code': 0, 'data': {}, 'msg': 'success'}returndef main():msg="失败!!! 恢复了 !!"color = "red"if "恢复" in msg:color="green"web = FlybookRobotAlert()web.send_message(msg,color)# 程序入口
if __name__ == "__main__":main()

运行后的:

# 在执行第一次的时候可能会报错没有模块,根据提示安装即可 
# 安装命令: pip install 模块名
python3 test.py 
INFO:__main__:飞书通知发送成功,msg={'StatusCode': 0, 'StatusMessage': 'success', 'code': 0, 'data': {}, 'msg': 'success'}

在这里插入图片描述

总结

使用python脚本发送卡片信息主要有两步:

  • 在飞书上创建一个机器人,获取webhook
  • 创建一个消息卡片,可以查到该卡片的代码
  • 写python脚本
    • 在执行python脚本时注意,最好可以在虚拟环境中执行
    • 第一次执行上述脚本时会报错:部分模块没有安装,根据提示安装完成即可
    • 安装模块命令: pip install XXXX

可以改进:现在支持通过卡片id来调用模板,不需要在代码中定义,还需要再研究,有想法的欢迎一起讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1523704.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Table表格td之间有空隙?你少设了border-collapse

设置之前 设置之后 table {border:solid 1px #cccccc;border-collapse: collapse;border-spacing: 0; }

2024最新PyCharm下载安装激活汉化教程!(附激活码)

激活码(文末附带精品籽料): K384HW36OB-eyJsaWNlbnNlSWQiOiJLMzg0SFczNk9CIiwibGljZW5zZWVOYW1lIjoibWFvIHplZG9uZyIsImxpY2Vuc2VlVHlwZSI6IlBFUlNPTkFMIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6I…

TripoSR模型构建指南

一、介绍 TripoSR 是由 Tripo AI 和 Stability AI 合作开发的最先进的开源模型,用于从单个图像进行快速前馈 3D 重建。利用大型重建模型(LRM)的原理,TripoSR 带来了关键的进步,大大提高了 3D 重建的速度和质量。该模型…

【ISSCC】论文详解-34.6 28nm 72.12TFLOPS/W混合存内计算架构

本文介绍ISSCC34.6文章,题目是《A 28nm 72.12TFLOPS/W Hybrid-Domain Outer-Product Based Floating-Point SRAM Computing-in-Memory Macro with Logarithm Bit-Width Residual ADC》(一种28nm 72.12TFLOPS/W混合域外积浮点SRAM存内计算宏单元&#xff…

AI Dify + 大模型+ Agent 详细教程 从0-1教你构建小助手

前言 Dify 是一个易于使用的 LLMOps 平台,提供了多种应用程序类型和模板,包括 AI 聊天机器人、代码转换器、SQL 生成器、新闻内容编写、创意脚本等。团队使用 Dify,可以基于 GPT-4 等模型快速「开发部署」 AI 应用程序并进行可视化操作&…

python学习13:对excel格式文件进行读写操作

读取excel的话需要下载第三方库: 常用的库:xlrd(读),xlwt(写),xlutils,openpyxl[-----pip install xxx-------] 这里推荐openpyxl pip install openpyxl excel读取的基本操作 # 2)基本操作: # 2.1)打开文件,获取工作簿 filename rD:\stdutyZiLiao\pythoneProje…

面试总结1

1.数据库查询语句,找重复名字。有三列(名字、班级、姓名) 2.问3范式,字段类型,前两个是project_id:项目编号(可以包含字母和数字)project_name:项目名称(可以…

【C++】vector(下)--上篇

个人主页~ vector(上)~ vector 二、vector的模拟实现1、了解组成2、vector.h(1)为什么有了size_t参数的vector构造函数还要再写一个int参数的重载vector构造函数(2)为什么reserve不用memcpy(3&…

【C语言】零碎知识点(易忘 / 易错)总结回顾

一、数据类型 1、%p —— 以地址的形式打印 2、整型在内存中的存储 (1)原码、反码、补码 计算机中的有符号数有三种表示方法:原码、反码和补码。 三种表示方法均有符号位和数值位两部分,数值位三种表示方法各不相同。 原码&a…

Redis数据结构与连接

1 基本的数据结构 1.1 string string的实现有多种 int:字符串长度小于等于20且能转成整数raw:字符串长度大于44embstr:字符串长度小于等于44 字符串长度小于1M 时,加倍扩容;超过 1M 每次只多扩1M;字符串…

MySQL:表创建指南

前言 随着信息技术的飞速进步,数据库设计的优劣对系统性能产生了决定性影响。 一个精心设计的数据库不仅能显著提升应用效率,还能确保数据的安全和一致性。 本文将以一张具体的实体-关系图(E-R图)为基础,详细阐述如…

HarmonyOS NEXT开发:UI导航栏组件-NavigationBarView

NavigationBarView 是什么? NavigationBarView是ArkTS上的UI自定义导航栏组件,内置了导航栏的返回按钮、标题、搜索入口、右侧按钮等常用微功能。NavigationBarView结构展示 NavigationBarView ├── back │ ├── back_icon │ …

全倒装COB超微小间距LED显示屏比正装COB小间距的优势在哪些方面

在全倒装COB超微小间距LED显示屏与正装COB小间距显示屏的激烈对比中,我们不得不深入探讨其各自在技术创新、显示效果、以及应用领域的独特优势。 全倒装技术作为LED显示领域的一项重大突破,其核心在于将LED芯片直接倒装焊接在基板上,这一创新…

RFID光触发标签与端口自检功能新型光交箱哑资源管理方案

在通信行业的快速发展进程中,光交箱作为关键的网络节点,其哑资源的有效管理对于保障通信服务的质量和稳定性至关重要,传统的管理方式在面对日益庞大和复杂的光交箱哑资源时,逐渐显露出诸多弊端,如资源信息不准确、故障…

PDF转PPT,四款神器助你一臂之力!

亲爱的朋友们,你们在日常的工作和生活中有没有遇到过需要将PDF文件转换成PPT格式的情况呢?今天,我就来给大家推荐四款非常好用的工具,让你轻松应对PDF转PPT的难题! 一、福昕转换器 直通车(粘贴到浏览器打…

最新版php进销存系统源码 ERP进销存专业化管理 永久免费升级更新+完整图文搭建教程

在当今信息化时代,企业管理的高效性与精确性是企业竞争力的关键。分享一款最新版的PHP进销存系统源码,一款专为企业设计的ERP进销存管理工具,其丰富的功能、灵活的子账号设置、强大的权限控制、以及独家升级的合同管理和报价单打印功能&#…

数据仓库系列11:ETL的主要步骤是什么,它们分别有什么作用?

你是否曾经感觉被海量数据淹没?是否在寻找一种方法来有效地整合、转换和加载这些数据?如果是,那么你来对地方了。今天,我们将深入探讨ETL(Extract, Transform, Load)过程的三个关键步骤,这是每个大数据开发者都应该掌握的核心技能。准备好踏上成为数据整合大师的旅程了吗?让…

[B站大学]Zotero7教程

参考资料: https://www.bilibili.com/video/BV1PSvUetEQX 2. 账号注册与同步 本节内容参考zotero中文社区文档:https://zotero-chinese.com/user-guide/sync 2.1 数据同步 首先注册一个Zotero官方账户。登录账号密码。 2.2 文件同步 按照文档,推荐…

Kafka3.x 使用 KRaft 模式部署 不依赖 ZooKeeper

前言 Kafka 从 2.8.0 版本开始引入了 Kafka Raft Metadata Mode(KRaft 模式),这个模式允许 Kafka 在不依赖 ZooKeeper 的情况下进行元数据管理。KRaft 模式在 Kafka 3.0.0 中进入了稳定版本,本文部署的 Kafka_2.12-3.6.0 单机模式 环境 Ce…

从Deepfake事件透视:人工智能如何重塑安防监控的未来

近年来,随着人工智能技术的飞速发展,特别是深度伪造(Deepfake)技术的出现,引发了社会各界的广泛关注与讨论。Deepfake技术通过深度学习算法,将个人的声音、面部表情及身体动作拼接合成虚假内容,…