从零开始构建报警中心:part04 钉钉消息-webhook
  qdp7fV9qUjiK 2023年11月19日 16 0

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

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

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

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

添加群webhook

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

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

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

点击机器人

从零开始构建报警中心:part04 钉钉消息-webhook_json_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”这个字符串。所以说这个取巧的办法

未完待续

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  m33FiQF5dk1h   2023年11月13日   18   0   0 重启IISjson
  0C74k909wmgc   2023年11月13日   19   0   0 pythonjson
  hs9CtFCuSvuL   2023年11月19日   17   0   0 DatabaseHCLjson
  EeGZtZT5Jsfk   2023年11月13日   16   0   0 请求头jsoncurl
qdp7fV9qUjiK