• 企业微信,实现群机器人监控线上服务报警


    • 背景

      近期在对项目优化过程中
      注意到:当前的报警信息都是通过邮件发送,一方面时效性比较低,另外实现方式比较复杂
      通过同事,了解到 企业微信群机器人 实现起来简洁方便
      在此,记录一下我的实现步骤
      欢迎指摘 …

    【注】: 当前为 PHP 实现方式,可根据自己的语言灵活对接

    详细描述,请参考开发文档: 【 >>>如何使用群机器人 】

    • 如何使用群机器人
    在终端某个群组添加机器人之后,
    创建者可以在机器人详情页看的该机器人特有的 webhookurl
    开发者可以按以下说明向这个地址发起 HTTP POST 请求,即可实现给该群组发送消息
    
    • 1
    • 2
    • 3

    ▷ 前期配置

    • ① 首先 在已创建的企业微信群页面,点击 "添加群机器人"
      操作截图如下:

    • ② 添加完成后,可复制地址,用于业务接口的调用

    注意:

    一定要保护好机器人的 webhook地址,避免泄漏!不要分享到github、博客等可被公开查阅的地方,否则坏人就可以用你的机器人来发垃圾消息了。

    ▷ PHP 代码实现

    • ① 代码接入:微信群消息,封装类 WechatMessageService
    class WechatMessageService
    {
        /**
         * Note: 企业微信群 机器人消息通知
         * @param string $robot_url webhook地址
         * @param string $content 发送内容
         * @param string $msg_type 消息类型
         * @return mixed|string
         */
        public static function sendWechatRobotMsg($robot_url = '', $content = '' , $msg_type = 'text')
        {
            $post_data = [
                'msgtype' => $msg_type,
                'text' => [
                    'content' => $content,
                ],
                'markdown' => [
                    'content' => $content,
                ],
            ];
    
            $result = http_request($robot_url, json_encode($post_data,JSON_UNESCAPED_UNICODE));
            $result_arr = json_decode($result, true);
    
            $errcode = $result_arr['errcode'] ?? '0'; // 0:成功
            return $errcode;
        }
    }
    
    • 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
    • ② 调用示例:
        //测试推送消息
    	$msg = '你好啊,时间:'.date('Y-m-d H:i:s',time());
    	//机器人的 webhook地址
    	$robot_url = '替换掉机器人的 webhook地址';
    	WechatMessageService::sendWechatMsg($robot_url, $msg); //发送企业微信通知
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • ③ 接口调用,结果:

    ▷ 附录:

    1. 其他的监控实现,可参考文章:【用企业微信监控线上服务报警】

    2. markdown 类型的样式实现

      当前测试,只是做了最简单的 文字推送,
      可以根据自己的业务需求,阅读开发文档,设计更为合理的 消息类型,
      此处补充一下 markdown类型的消息

    • 内容拼接举例如下:

      //机器人-测试业务报警
      $content = "**".$title ."**
           > 时间: <font color='warning'>".$curr_dateTime."</font>
           > 内容: <font color='comment'>".$content."</font>";
      
      • 1
      • 2
      • 3
      • 4
    • 执行结果如下:

    在这里插入图片描述

    1. 公共方法,补充一下方便参考使用:
    function http_request($url, $data = null, $header = [])
        {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    
            if (!empty($data)) {
                curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($curl, CURLOPT_POST, 1);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            }
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
            $output = curl_exec($curl);
            curl_close($curl);
            return $output;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    数据库相关知识
    C++标注模板库(STL)-deque介绍
    【vue3】实现数据响应式(ref、shallowRef、trigger、reactive、shallowReactive、toRef、toRefs)
    webpack性能优化——从产出代码角度优化(提升产品性能)
    java毕业生设计在线玩具租赁系统计算机源码+系统+mysql+调试部署+lw
    protobuf对象与JSON相互转换
    基于Springboot+redis+Springsecruity的网上商城 改改就可以做毕业设计
    MathType需要安装一个较新版本的MT Extra(TrueType)字体解决办法
    数据库选型参考
    妙手ERP功能更新丨Shopee全球产品支持使用定价模板修改价格、Ozon新增SKU模板 、Temu采集箱支持添加货源链接......
  • 原文地址:https://blog.csdn.net/u011415782/article/details/125432545