钉钉是阿里巴巴旗下一个专注于企业内部即时通讯、OA流程、审批、考勤和许多第三方接入平台的企业软件。利用其开放的API 可方便地定制公司企业的内部系统。
软件相关网址:钉钉官网早在几个月前新版本钉钉更新后,就有了群聊机器人功能有,碍于工作太忙一直没时间去把玩一下。今天小小研究一下感觉非常方便也很容易。
应用场景
群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。例如:通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步;通过聚合Trello,JIRA等项目协调服务,实现项目信息同步。不仅如此,群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警提醒通过自定义机器人聚合到钉钉群,或者是跟我一样让ERP系统通过机器人发送相关数据到群中。
基本配置
创建机器人并获取token
必须创建或者选择现有的聊天群,然后在群会话界面点击机器人图标创建机器人
钉钉机器目前支持创建阿里去CODE、GITHUB机器人、Gitlab、Jira、Travis、自定义机器人,我们现在来测试的是自定义机器人
此处必须记下并复制webhook ,这个就是自定义机器人的接口地址,地址格式为
https://oapi.dingtalk.com/robot/send?access_token=8c3375c84f2341e23aa835ab4d0bca41766be430cbabf61cf00961b77005406d80
access_token为钉钉随机分配给机器人的访问令牌,每个群聊机器人都会有一个唯一的token,在接下来的消息发送中我们将会用到这个地址。
测试机器人
在上一步中得到了机器人的webhook 地址后我们就可以直接让机器人发送消息到群聊会话中了,在这里用简单粗暴的curl post请求到这个webhook 。
因我用的是macos ,系统自带了php 的curl 可以直接在终端下使用。也可在linux下直接使用以下代码。
请自行替换掉以下access_token 信息为上一步的webhook
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "大家好,我是钢铁峡的机器人管家javis。我现在通过最简单的命令行工具curl 向群里的朋友们问好!"
}
}'
测试成功,命令中的curl 是一个可用于下载或提交数据用的类linux程序,经常开发Php的人一定很熟。
用curl 向机器人的webhook Post 提交一段json格式的数据(钉钉接口的规范要求)
json 数据格式要求如下(编写时注意去掉#号及以后内容)
{
"msgtype": "text", #告诉webhook 这是一条text信息
"text": {
"content": "消息内容文本" #要显示的文本
},
"at": { #at 标签里面的内容可选,定义要@的群友
"atMobiles": [
"156xxxx8827",
"189xxxx8325"
],
"isAtAll": false #@所有人时:true,否则为:false
}
}
除了支持text 类的信息外还支持 markdown类型消息、ActionCard类型消息、FreeCard类型消息,具体定义请查看钉钉开放中心文档,这里就抛个砖挖个坑,欢迎大家自己去跳坑研究。
问题总结
还总结个屁啊,哈哈,这个段落凑字数的。这么简单的原理大家试一下就成功。
已知问题: curl 这个命令行程序虽然说有windows 版本的程序,但是因为windows 命令行本身对json格式的处理支持很不好,如果要在windows 下使用curl 的话必须把双引号" 利用进行转义,相当于json里面的数据把"换成" ,虽然转义了但还是不支持中文消息,只能用英文的text消息。不然会一直提示系统繁忙或提交的数据有误。
所以想在windows 下用这个接口的话最好还是自己想办法程序实现吧。
所以我还是觉得linux 大法好,编程命令没烦恼。
转载请注明出处~