首页 > 其他分享 >从零开始构建报警中心:part04 钉钉消息-webhook

从零开始构建报警中心:part04 钉钉消息-webhook

时间:2023-11-08 10:08:12浏览次数:48  
标签:return text req webhook part04 从零开始 msg now

现在工作上比较常用的IM一般式钉钉 企微 飞书,其实使用起来都是大同小异的。这里就用钉钉来实现。

使用钉钉发送信息,一般有三种形式

  • 群webhook
  • 工作通知
  • 智能机器人

智能机器人方式,能实现一定的交互功能,但逻辑相对复杂,这里只是需要一个实时的钉钉消息,所以不进行讨论。

添加群webhook

这是一种比较简单的方式,适用于在群里发送消息。

在钉钉群中确保有管理权限,点击群设置

从零开始构建报警中心:part04 钉钉消息-webhook_webhook

点击机器人

从零开始构建报警中心:part04 钉钉消息-webhook_钉钉_02

点击添加机器人

从零开始构建报警中心:part04 钉钉消息-webhook_json_03

选择自定义webhook机器人

从零开始构建报警中心:part04 钉钉消息-webhook_json_04

设定webhook机器人信息

从零开始构建报警中心:part04 钉钉消息-webhook_json_05

安全信息是必选项,具体说明可以点击查看说明文档。

一般情况下,发送钉钉信息的服务器IP是固定的,可以使用IP地址(段)。如果安全性要求较高可以使用加签方式。最简单的办法就是使用自定义关键词,这里我推荐“20”,原因稍后解释。

点击完成后会获得形如https://oapi.dingtalk.com/robot/send?access_token=XXXXXX的webhook地址,这个地址非常重要千万不要泄露,以防止被滥用。

使用webhook可以发送普通消息,以及markdown格式。具体消息细节可以参考钉钉文档。

python实现webhook消息发送

这里附上使用markdow 与普通消息的python代码

import requests
import datetime
import json
import random
"""
封装使用webhook方式发送钉钉消息
"""


def webhook_msg(web_hook, dmsg, phones=[]):
    """
    """
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    head = {'Content-Type': 'application/json'}
    msg = dmsg + '\n' + now
    text = {
        "msgtype": "text",
        "text": {
            "content": msg
        },
        'at': {
            'atMobiles': phones,
            'isAtAll': "false"
        }
    }
    try:
        req = requests.post(web_hook, data=json.dumps(text), headers=head)
    except Exception as E:
        return {'success': False, 'msg': str(E)}
    if req.status_code != 200:
        return {"success": False, "msg": req.text}
    else:
        return {"success": True, "msg": req.text}


def webhook_md(web_hook, dmsg):
    """
    """
    head = {'Content-Type': 'application/json'}
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    dmsg['text'] = dmsg['text'] + '\n' + now
    text = {
     "msgtype": "markdown",
     "markdown": dmsg
    }

    print(text)
    try:
        req = requests.post(web_hook, data=json.dumps(text), headers=head)
    except Exception as E:
        return {'success': False, 'msg': str(E)}
    if req.status_code != 200:
        return {"success": False, "msg": req.text}
    else:
        return {"success": True, "msg": req.text}



if __name__ == "__main__":

    test_msg = {
        "title": "测试测试",
        "text": "<font color=\"#7FFF00\">告警测试 </font> \n"
    }
    r = webhook_md("https://oapi.dingtalk.com/robot/"
                   "send?access_token=4b6ae4530699f7e1b2205cffab0dacbbdccddf40ff0a17d2f9ca231ac84d9bdc",
                   test_msg)
    print(r)

这段代码演示了使用钉钉webhook发送普通消息以及markdown格式消息的方法。如果需要at某人,需要在参数中提供对方的手机号码。

上文提到过使用“20”作为自定义关键词,这是一个取巧的方法。在这段代码中给每一条消息都加上当前的时间日期('%Y-%m-%d %H:%M:%S'),这段字符必然包含“20”这个字符串。所以说这个取巧的办法

未完待续

标签:return,text,req,webhook,part04,从零开始,msg,now
From: https://blog.51cto.com/quietguoguo/8245074

相关文章

  • 从零开始构建性能测试技术体系
    前几天知识星球一位同学找我咨询过性能测试相关的问题,我在文章《性能测试的实践痛点和解决方法》中分享了性能测试实施过程中常见的一些痛点和解决方案,后台很多同学反馈确实帮他们提供了很多思路。其中有位同学留言问了这样一个问题:有没有比较完整的性能测试技术体系?该如何构建......
  • 从零开始构建报警中心:part02 使用python脚本接收zabbix报警信息-2
    在上篇中完成了对报警媒介与动作的配置在动作配置中,有一项是发送到配置,这个需要配置到用户与报警媒介之间进行绑定。具体操作如下点击“管理”-》“用户”,点击要操作的用户再点击“报警媒介”,点击“添加”进行操作在弹出的对话框上点选类型,选择之前对应配置的报警媒介,并添加。如果......
  • 从零开始学习Python
    从零开始学习Python是一个令人兴奋和有趣的过程。无论你是完全没有编程经验,还是已经熟悉其他编程语言,Python都可以成为你迈向程序员之路的理想起点。首先,在开始学习之前,请确保在计算机上安装了最新版本的Python解释器。官方网站(https://www.python.org)提供了可下载并按指引进行安......
  • '/webhook'​​​是你的服务器上的一个路径,当有人发送POST请求到这个路径时,​​webhoo
    在这段代码中,'/webhook'是你的服务器上的一个路径,当有人发送POST请求到这个路径时,webhook()函数就会被调用。你可以根据你的需求来选择这个路径,只要它在你的服务器上是唯一的。例如,如果你的服务器的URL是http://myserver.com,那么当飞书机器人发送POST请求到http://myserver.com/web......
  • 从零开始:开发你的第一个抖音小程序
    抖音小程序提供了独特的机会,能够让你将自己的创意和内容传播给数百万的抖音用户。本文将带你走一趟开发抖音小程序的旅程,从零开始,无需编程经验。你将了解到如何准备开发环境、创建你的第一个小程序,以及如何将它发布到抖音平台上。一、准备开发环境1.注册为开发者2.开发者工具3.学习......
  • 从零开始构建报警中心:part01 使用python脚本接收zabbix报警信息
    在part00中提到过,zabbix在整个结构中,只起到发起报警,并将信息推送给Python脚本的作用。所以此文的主要目的就是描述如何配置zabbix的报警媒介。zabbix可以通过配置报警媒介的方式,来自定义的接收报警信息。查看AlertScriptsPath配置报警脚本可以是shell、py或者其他各种格式类型的可......
  • prometheus-webhook-dingtalk 报警模板
    moretemplate.tmpl{{define"__subject"}}[{{.Status|toUpper}}{{ifeq.Status"firing"}}:{{.Alerts.Firing|len}}{{end}}]{{end}}{{define"__alert_list"}}{{range.}}---**告警名称**:{{index.Annotations"ti......
  • 从零开始构建报警中心:part0前言架构
    一般来说,对于小规模或者业务较为简单项目,使用zabbix进行监控监控服务器状态,并配置一些报警渠道就可以基本满足需求,但是如果项目分化较多,各个业务间相互独立,对报警时效性要求各不相同的情况下,仅靠原生的zabbix报警是不够的。针对这种请求其实可以供借鉴的系统有很多,之所以想起写这么......
  • 7. 从零开始编写一个类nginx工具, HTTP及TCP内网穿透原理及运行篇
    wmproxywmproxy是由Rust编写,已实现http/https代理,socks5代理,反向代理,静态文件服务器,内网穿透,配置热更新等,后续将实现websocket代理等,同时会将实现过程分享出来,感兴趣的可以一起造个轮子法项目++wmproxy++gite:https://gitee.com/tickbh/wmproxygithub:https://github.com/tic......
  • 使用​​Flask​​库来创建一个Webhook服务器,该服务器可以接收HTTP请求
    在Python中,你可以使用Flask库来创建一个Webhook服务器,该服务器可以接收HTTP请求,处理请求体,并发送响应。以下是一个简单的示例:fromflaskimportFlask,request,jsonifyapp=Flask(__name__)@app.route('/webhook',methods=['POST'])defwebhook():#获取请求体中的数......