• 前端集成钉钉自定义机器人消息


    导语

    在日常项目开发中,生产环境往往会出现一些不可预测的大大小小问题,虽然可以给项目中配置日志以及报警,但处理人无法在第一时间收到消息,集成钉钉机器人后,项目出现报警,可以直接在群里 @ 到相对应的处理人进行提醒

    正文

    钉钉自定义机器人消息官方文档:https://open.dingtalk.com/document/group/custom-robot-access

    一、获取钉钉机器人的 Webhook

    1.选择需要添加机器人的群聊 -> 打开群设置 -> 选择智能群助手
    alt 选择智能群助手

    2.点击 智能群助手,添加机器人
    alt 添加

    3.添加机器人,拿到 Webhook
    alt 选择
    alt 选择自定义
    alt 添加
    alt 机器人信息
    alt 拿到Webhook

    二、使用机器人

    获取到 Webhook 地址后,用户可以向该地址发起 HTTP POST 请求,即可实现给该钉钉群发送消息。

    当前自定义机器人支持以下消息类型,请根据自己的使用场景选择合适的类型,详情参见上方的官方链接。

    • 文本 (text)

    • 链接 (link)

    • markdown(markdown)

    • ActionCard

    • FeedCard

    自定义机器人发送消息时,可以通过手机号码指定“被@人列表”。在“被@人列表”里面的人员收到该消息时,会有@消息提醒。免打扰会话仍然通知提醒,首屏出现“有人@你”。

    本文测试使用的消息是文本(text)

    三、测试机器人

    官网有 java 以及 php 的测试案例,这里使用的是 node 服务

    /**
     * 自定义钉钉机器人消息
     * @route POST /dingtalk/send
     * @group 钉钉 - 接入钉钉的机器人提示
     * @param {string} message.query.required - 需要发送的文本消息
     * @param {Array}  mobiles.query - 需要提醒的处理人
     * @returns {object} 200 - 发送成功
     * @returns {Error}  500 - 发送失败
     */
    router.post('/dingtalk/send', (req, res) => {
      let body = req.body
      if (!body.mobiles) {
        body.mobiles = ['需要被 @ 的手机号码']
      }
      let params = {
        msgtype: 'text',
        text: {
          // 程序报错就是定义机器人使用的关键词,每次发送消息必须包含
          content: `[程序报错]:${body.message}`
        },
        at: {
          atMobiles: body.mobiles,
          isAtAll: false
        }
      }
      /*
      axios 请求转发
      access_token=xxxxx,
      access_token是必须的,每个不同的机器人有不同的access_token
      */
      axios
        .request({
          baseURL: 'https://oapi.dingtalk.com',
          url: '/robot/send?access_token=xxxxx', // 注意:需要设置正确的token
          headers: {
            'Content-type': 'application/json;charset=UTF-8'
          },
          method: 'POST',
          data: params
        })
        .then((result) => {
          res.send({
            resp_code: 0,
            resp_msg: result.data
          })
        })
        .catch((err) => {
          res.status(500).send({
            resp_code: 1,
            resp_msg: err
          })
        })
    })
    
    • 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
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    成功发送消息
    alt 成功发送消息

  • 相关阅读:
    Selenium定位之find_element方法
    只有正规才有机会,CTF/AWD竞赛标准参考书来了
    Lambda表达式入门,详细介绍样例
    巧用 background-clip 实现超强的文字动效
    细粒度图像分类论文研读-2016
    Nginx的安装
    vscode调试gici-lib问题
    毕业设计 基于51单片机老人防跌倒GSM短信报警系统
    【Maven】VSCode Java+Maven 环境配置
    湖北工业大学计算机考研资料汇总
  • 原文地址:https://blog.csdn.net/qq_43379916/article/details/126270786