持续集成之钉钉消息推送:1:群机器人使用方法介绍

在这里插入图片描述
钉钉也提供机器人,使用方法和企业微信虽然略有不同,但是最为简单的消息推送的使用方法大体类似,钉钉的机器人也是使用webhook接口用于消息的推送,非常适合将持续集成中的实时状态进行信息的共享,这篇文章介绍一下使用的具体方法。

添加机器人

相较于企业微信可以在群内创建一个或者多个机器人,现在钉钉的做法是在用户顶层上提供机器人管理的页面,点击个人头像,选择Robot Management选项
在这里插入图片描述
钉钉可以添加很多种类的机器人,这里选择Custom,通过webhook方式发送自定义消息
在这里插入图片描述
点击Add按钮
在这里插入图片描述
设定机器人名称,与群进行关联,并设定其他信息,与企业微信在群里创建有所不同,目前钉钉是整体对机器人进行管理然后与群进行关联。
在这里插入图片描述
为了避免被盗用乱发群短信,钉钉的自定义方式的机器人在使用上,有三种安全策略必选其一:

  • Custom Keywords:包含特定内容的消息才能发送
  • Additional Signature:签名
  • IP Address:IP地址白名单(与企业微信的群机器人中的白名单类似)

这里为了简单演示选择Custom Keywords,并输入LiuMiaoMsg作为特定内容。
在这里插入图片描述
然后就创建了此群机器人,此时就可以获得webhook的地址了。
在这里插入图片描述
点击Finished按钮,在关联的群中即可看到此关联的机器人了
在这里插入图片描述

使用方法

创建此群聊机器人后,就可以直接使用Restful API以Json的格式进行消息的推送了。以curl命令为例,使用如下示例脚本即可进行验证

liumiaocn:robot liumiao$ cat demo_message_send.sh 
#!/bin/sh

CHAT_WEBHOOK_URL='https://oapi.dingtalk.com/robot/send?access_token'
CHAT_CONTENT_TYPE='Content-Type: application/json'

echo "## demo: text: print hello liumiao"
curl "${CHAT_WEBHOOK_URL}=${CHAT_WEBHOOK_KEY}" \
   -H "${CHAT_CONTENT_TYPE}" \
   -d '
   {
        "msgtype": "text",
        "text": {
            "content": "[LiuMiaoMsg]: hello liumiao"
        }
   }' 2>/dev/null |jq .
liumiaocn:robot liumiao$

执行结果确认

liumiaocn:robot liumiao$ export CHAT_WEBHOOK_KEY=your_own_webhook_token_info
liumiaocn:robot liumiao$ sh demo_message_send.sh 
## demo: text: print hello liumiao
{
  "errcode": 0,
  "errmsg": "ok"
}
liumiaocn:robot liumiao$ 

注:your_own_webhook_token_info使用自己的token信息进行替换
然后就可以看到推送的钉钉的消息内容了
在这里插入图片描述

注意的是钉钉在使用的时候消息发送的安全策略作为必须条件,本文示例中使用的方式是包含特定内容的方式,所以在发送的消息中必须包含此内容才可以,不然会提示类似如下的错误信息:

{
  "errcode": 310000,
  "errmsg": "keywords not in content"
}

如果选择其他的安全防护方式,没有满足条件时,返回的错误信息可能如下所示

// timestamp 无效
{
  "errcode":310000,
  "errmsg":"invalid timestamp"
}

// 签名不匹配
{
  "errcode":310000,
  "errmsg":"sign not match"
}

// IP地址不在白名单
{
  "errcode":310000,
  "errmsg":"ip X.X.X.X not in whitelist"
}

总结

企业微信的目前提供的机器人有三个特点,其一是虽然不依托与群而存在,但是也同样需要和群进行关联而进行消息推送,其二是直接将token作为URL中的一项参数传入,但是需要其他的安全设定比如包含特定内容、签名或者白名单,三是需要联网。

参考内容

https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

发布了1002 篇原创文章 · 获赞 1287 · 访问量 396万+

猜你喜欢

转载自blog.csdn.net/liumiaocn/article/details/103740826