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

发布于:2023-01-23 ⋅ 阅读:(469) ⋅ 点赞:(0)

导语

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

正文

钉钉自定义机器人消息官方文档: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
      })
    })
})

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


网站公告

今日签到

点亮在社区的每一天
去签到