[学生党]钉钉机器人使用教程
寻找钉钉帮助文档的专业程序员请直接跳转至帮助文档
近期,某爱算法的猫在某B站发布了一段使用钉钉机器人还原的某鬼畜。
视频如下:
钉钉机器人?但是全明星
视频地址:https://www.bilibili.com/video/BV133411N7nR?share_source=copy_web
当然大家不用仔细看视频,看图片就行了:
但是这些不是本期的重点。某猫在评论区里发现了这样一句话:
于是我在CSDN里找了一些教程,本想直接回复,哪知……
(可能我平时文章写的不多,不过我其实主要是学算法,程序设计什么的是自学的)
然后找到了一些比较复杂的文章。看到这些文章,我觉得自己仿佛不会编程。。。
为了符合广大学生党和专业整活人士的需求,我连夜肝出了这篇文章(假的
01 · 钉钉机器人基本介绍
专业人士请自取帮助文档链接:
钉钉的文档太复杂了找到接口部分比较费劲,大家就不用自己找啦
钉钉机器人是钉钉软件中的某群聊助手,类型非常丰富。在钉钉的帮助文档中,介绍了以下类型:
对于各位整活人士,不需要考虑进行复杂的机器人开发,一般会直接使用“自定义机器人”类型。当然如果有特殊需求的整活人士,我会在以后尽量写教程的,关注一下我吧~
02 · 使用教程
某只猫最近有点懒,所以就不给出详细的教程了,给大家一些链接,里面都有非常详细的教程,不过各个链接中的专业用语,我都会为大家解释,所以不要关掉这篇文章啊!!
用人话说就是:相关教程请自取,我只负责为非专业人士讲解教程中的专业词汇
关于钉钉机器人的工作原理,大家可以参考这两篇文章:
这里要纠正一个误区:自定义机器人不能回复消息,开发者需要手动通过程序向机器人给出的网站发送请求,才能让机器人发送消息。找到的文章中说的比较专业,我稍后详细解释
那么看完这两篇文章,大家可能对机器人有了一定的了解,但不一定能完全理解~~(看懂最好,慢走不送~~
一定要注意的是,除非你能完全理解钉钉开放文档或其它文章中的此类代码 (要是真能看懂,请关闭本文并转到钉钉开放文档):
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'
<?php function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $remote_server); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8')); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码 // curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); // curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); return $data; } $webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx"; $message="我就是我, 是不一样的烟火"; $data = array ('msgtype' => 'text','text' => array ('content' => $message)); $data_string = json_encode($data); $result = request_by_curl($webhook, $data_string); echo $result; ?>
否则最好不要使用代码……
首先,先给大家讲解一下必要的原理:
钉钉机器人使用了POST请求实现。所谓POST请求,用“通俗”的语言解释 (开始吟唱&胡扯) 就是计算机在访问某网址时不是直接获取此网址对应的文件,而是向此网址发送一段数据,然后显示网站根据数据返回的值。POST请求主要用于程序自动执行某操作,比如两个网址对应一个普通的计算器和一个使用POST请求的计算器,如果让人使用计算器,只需显示一个计算器的界面,但是如果某程序需要计算器功能,但程序又不是人,没法操作UI,所以程序向第二个使用POST的网址发送一个算式,然后网址会发回答案,程序再显示答案。
说的比较“通俗”,大佬勿喷 (结束吟唱&胡扯)。
别问我为啥钉钉机器人要用POST不直接用UI。安全性只是一小部分,关键是人er机器人也不是给你整活用的啊……
可能会有人问:我又不是机器人你让我怎么POST?
问得好!
有个软件叫作postman,专门用于调试这类POST接口。不过先别着急下载,因为postman在国内不是特别好用,我的postman至今还未正常运行过。大家可以使用某国内的相似软件。
- 使用postman调试钉钉机器人的教程: 工具使用之——钉钉添加自定义机器人_PGzxc的博客-CSDN博客_钉钉自定义机器人怎么用
- 类似postman的软件(浏览器插件):免费开源的接口管理平台 | 文档管理系统 | BUG管理系统 (crap.cn),如果你的网络不具备越过长城的能力,也可以使用Edge插件:PostWoman Http接口调试插件 - Microsoft Edge Addons(同一软件)
如果你完全无法理解JSON代码,也看不懂这篇文章,那么可以按照钉钉开放文档给出的JSON和实际效果的对照,替换对应文字即可。
不过完全不会编程的业外人士,可能无法理解\n
这种神奇的东西。\n
即为换行符,要按Enter的时候写这个就行了
第一个链接中给出的文章讲的非常详细,其他的就不过多介绍了(大本钟下送快递,上面开摆下面寄!)
不过有一点要注意: 在CSDN中搜索到的文章,基本都包含以下内容
{
"at": {
"atMobiles":[
"180xxxxxx"
],
"atUserIds":[
"user123"
],
"isAtAll": false
},
"text": {
"content":"我就是我, @XXX 是不一样的烟火"
},
"msgtype":"text"
}
这类东西有很多,但是经过数次复制,大多数都出了亿点小问题 (某只爱算法的猫被坑惨了,所以大家一定要直接使用第一个链接(钉钉开放文档 (dingtalk.com))也就是钉钉官方给出的文档中的代码,否则…………。
最后介绍一下钉钉机器人的安全部分。
为了防止其他人获取你的机器人所对应的网址,然后乱发消息,钉钉给出了3个安全措施:
-
关键词
发送的消息必须包含给出的关键词中的任意一个。
比如我在B站视频中发的“老冯”机器人,关键词有“鸡”、“穿山甲”、“tnnd”等
最多可以设置10个
-
加签
要是会加签的大佬应该都已经慢走不送了,就不介绍了,这不是一般的费劲,而且用postman较难实现
-
IP地址段
只有指定IP发出的请求才会被处理
这个东西非常容易,甚至不用专门获取自己的IP,只要先随便POST一条消息,然后会返回一条“某某某IP不在范围内”这类消息,把某某某IP填进允许的地址段就行了
如果要和同学们一起整活,建议使用第一种方法(关键词),如果自己整活,建议使用第二种方法(IP地址段)
某爱算法的猫稍后会整理一篇钉钉机器人常见错误代码,帮助大家更方便的使用~
最后,看到这里的小伙伴们有个福利:
某爱算法的猫用苹果的快捷指令APP编写了一个可以快速让机器人发送文本类型消息的指令,附上链接:
钉钉机器人 (CSDN资源)(作者目前还没上传资源,上传了再把链接填进来)
(第一个链接是我直接通过iCloud分享的,免费下载,但是不知道啥时候过期。如果过期了就只能用第二个CSDN链接,CSDN下载东西就算我设成免费也需要会员,我也没办法……)
都看到这里了,为啥不点个关注?
如果有什么想学习的内容,可以私信作者(一只爱算法的猫),因为作者最近缺素材啊啊啊啊~~~