当前位置:首页 > 环境配置 > 应用 > 正文内容

宝塔面板通过Telegram机器人发送告警信息,不支持HTML标签发送失败问题解决

大地主刘发财1个月前 (05-24)应用720

前置条件:

服务器需要能连接TG服务器,如果是国内服务器的话则需要自己搭个转发

获取机器人Token:

  找 @BogFather 按提示一步步操作后获得

群组/个人TG的ID:

  个人ID找 @UserIndorobot 获得


  群组ID在网页端获得,打开 网页版TG

  登录成功后选择要获得ID的群组,看地址栏,类似于这样的地址 https://web.telegram.org/a/#-123456789 

  红色部分就是群组ID,有些带"-"有些不带


登录宝塔:

设置->告警通知->告警设置->自定义消息通道->配置->添加

名称随便输入

地址 https://api.telegram.org/bot你的机器人Token/sendMessage

请求方式 POST

参数格式 application/json

把chat_id的值改为你自己的ID

{"chat_id":"-123456789","parse_mode":"HTML","text":"<b>服务器通知</b><blockquote> \n\n类型:$type \n\n标题:$title \n\n内容:\n$msg</blockquote>"}

保存即可,此时TG应该会收到一个通知,如果没有收到可能是无法连接或者参数有错误


某些告警信息可能包含HTML标签,但大多标签在TG机器人接口里是不支持的,会报错无法发送

此时需要修改2个文件

/www/server/panel/class/msg/web_hook_msg.py
/www/server/panel/mod/base/msg/web_hook_msg.py


搜索:

def _build_real_data(msg: str, title:str, push_type:str, custom_parameter: dict):

在下面加上如下代码

msg = str.replace(msg, '&', '&amp;')
msg = str.replace(msg, '<', '&lt;')
msg = str.replace(msg, '>', '&gt;')
title = str.replace(title, '&', '&amp;')
title = str.replace(title, '<', '&lt;')
title = str.replace(title, '>', '&gt;')

两个文件都这样修改一下,成功后如图

宝塔通过Telegram机器人发送告警信息,不支付HTML标签发送失败问题解决  环境配置 宝塔 Telegram 宝塔面板通过Telegram机器人发送告警信息,不支持HTML标签发送失败问题解决 第1张

宝塔通过Telegram机器人发送告警信息,不支付HTML标签发送失败问题解决  环境配置 宝塔 Telegram 宝塔面板通过Telegram机器人发送告警信息,不支持HTML标签发送失败问题解决 第2张


修改完后上传到服务器覆盖原文件

删除这两个目录

rm -rf /www/server/panel/class/msg/__pycache__
rm -rf /www/server/panel/mod/base/msg/__pycache__


SSH连接到服务器上重启宝塔面板

命令

bt

选择1回车

至此宝塔已经可能通过Telegram发送告警信息了

需要注意的是,每次版本更新后都要重新做一次修改文件


分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。