随笔 - 29  文章 - 0  评论 - 0  阅读 - 11121

利用webhooks在企业微信中启用群机器人发送消息

以企业微信PC端为例,利用webhooks在企业微信中启用群机器人接收、发送消息。

1. 添加机器人并获取webhooks地址

获得webhook地址如:

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1234567-5c06-4e35-b869-cc69e74c9325

2. 使用Webhook地址

使用Webhook地址,进行相关信息的推送。

2.1 样例一:普通.py脚本

import requests

requests.post(url=cls.WEIXIN_WEBHOOK_URI, data=json.dumps(data))

2.2 样例二:Jenkinsfile

复制代码
post{
always{
script{
withEnv(['JAVA_HOME=/usr/local/java', 'PATH+=/usr/local/java/bin']) {
allure includeProperties: false, report: 'static/report', results: [[path: 'static/allure_data']]
result = currentBuild.currentResult
}
sh("""\
curl '${WEIXIN_WEBHOOK_URI}' \
-H 'Content-Type: application/json' \
-d '${JSON_DATA}'
""")
}
}
}
复制代码

备注:

1.有外部人员的群无法添加群机器人

2.只有创建机器人的时候才能拿到webhook的信息

3. 项目实战

logger.py
复制代码
from loguru._logger import Core as _Core
from loguru._logger import Logger as _Logger
from loguru import _defaults
import sys as _sys
from util.wechat_webhook import WechatWebHook


class CustomizedLogger(_Logger):
    """重写logger类中的error方法,打印error log时企业微信同步推送错误日志"""
    def __init__(self, core, exception, depth, record, lazy, colors, raw, capture, patcher, extra):
        super().__init__(core, exception, depth, record, lazy, colors, raw, capture, patcher, extra)

    def error(self, __message, *args, **kwargs):
        r"""Log ``message.format(*args, **kwargs)`` with severity ``'ERROR'``."""
        WechatWebHook.push_error_msg(__message)
        self._log("ERROR", None, False, self._options, __message, args, kwargs)


logger = CustomizedLogger(_Core(), None, 0, False, False, False, False, True, None, {})

if _defaults.LOGURU_AUTOINIT and _sys.stderr:
    logger.add(_sys.stderr)

if __name__ == '__main__':
    logger.error('测试webhook机器人发送消息')
复制代码
webchat_webhook.py
其中settings.webhook_uri即为拿到的webhook地址
复制代码
import requests
from settings import settings

class WechatWebHook:
    """企业微信消息推送"""
    @classmethod
    def push_error_msg(cls, msg: str) -> None:
        """错误日志直接推送至企业微信"""
        data = {
            "msgtype": "text",
            "text": {
                "content": msg,
                "mentioned_mobile_list": ["18627741152"]
            }
        }

        requests.post(url=settings.webhook_uri, headers={"Content-Type": "text/plain"}, json=data)
复制代码
posted on   叮叮当~  阅读(3223)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示