记一次小白摸索使用钉钉自定义机器人设置定时任务

  最初是注意到,钉钉组内群里面有个叫“每日计划提醒”的机器人,每天晚上11:30都会准时发送一条 “【敬业签】:记得每日计划总结哦!” 的消息,正好每天上午吃饭前30分钟需要提醒组内的人练习打字,而我又老是给忘了,弄个机器人提醒岂不美哉?

  说干就干,打开群设置 => 打开智能群助手 => 添加机器人 => 添加机器人。原来这个“每日计划提醒”的机器人是学长创建的啊。看着面前这好几种机器人,除了一个天气机器人,其他的好像目前都用不上,而我的目的只是一个每天按时说一句话,没那么多其它功能,通过自定义机器人,应该会比较简单就完成吧。

选择添加机器人

  点击打开自定义机器人 => 定义好机器人的名字 => 选好要添加到的群组 => 然后就是安全设置,什么嘛,还挺简单的。诶等等安全设置是什么东西????而且还至少得选择一种安全设置,鼠标放上去,一个一个看看是干啥的,首先就是自定义关键词:设定后,只有包含关键词消息的消息内容才会被正常发,这个没问题。

  下一个加签,诶这个鼠标放上去没有任何提示信息,那行吧,去旁边提到的说明文档看一下这个是什么东西。

加签


  不看不知道,一看就给我整蒙了,官方是这样说的

1.把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)
2.把 timestamp和第一步得到的签名值拼接到URL中。
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX&timestamp=XXX&sign=XXX

官方贴心地在下面贴了示例代码,一个是Java的,一个是Python的,幸好这俩都稍微学过,能看得懂在干啥,注意到一个参数timestamp的说明,要求它与请求调用时间误差不能超过1小时。我寻思,我这就每天定时发个消息,用不着再整这玩意儿了。

  最后一个是IP地址段,这个就算了,也就我自己定时发送一条消息,也没有别的人再去发送请求,同样用不上。

  好了,这就应该差不多该完成了吧,接下来应该就是设置一下消息,定个时发送什么的,在系统的引导下怎么可能会有难度,好了本文到此结束。欸,不是,等下,那个啥,引导呢,正常情况下不应该还是些简单的操作么,这又是啥玩意儿???

添加机器人完成界面

webhook是个啥玩意儿,百度搜了下

Webhook是一个API概念,并且变得越来越流行。我们能用事件描述的事物越多,webhook的作用范围也就越大。Webhook作为一个轻量的事件处理应用,正变得越来越有用。
简单来说就是一种反向API机制,类似于触发器的一样.

更详细的内容在这里:什么是Web Hook?

  知道个大概后,然后按照钉钉上面说的,进入设置说明看看之后怎么整。好家伙上来就是一个下马威,网址居然是错的,压根没跳转到应该跳转的地方,还好上次查看加签时那个网页没关,顺利的找到了“自定义机器人接入”说明,步骤一也就是文章上面的步骤,步骤二是一些说明,步骤三就是测试机器人了!
  复制上面提供的代码到cmd命令行执行一下,把xxxxx替换为自己的token,也就是获取到的wehook后面那一串,这个我懂,复制下来,然后粘贴嘛,多容易的事儿,文字部分改一下,毕竟得有打字这个关键词。

curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
 -H 'Content-Type: application/json' \
 -d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'

第一次报错


报了一堆错,但是没关系!尝试去解决!根据我的经验,总感觉官方给的这几行代码有哪里不对劲。果然,搜了下curl,发现 \ 这个符号根本不应该出现!这,,,算是是官方给考验吗???我们删掉 \ 再来一次!

删除"\"后仍然报错


  呵,意料之中的报错呢,剩下的不知道咋回事,百度一下,谷歌一下,总会有办法!翻来覆去,虽然花了点时间,先是安装curl,然后配置环境变量,最后 ,也就是出错的主要原因:window 的curl 不支持识别单引号' ,血压已经上来了,咱把单引号全部换成双引号,改完继续!
  好的我们继续来看一下运行结果!

 血压正在上涨

  缺少参数 json啊,又去查了查-H和-d的意思,-d后面的参数是json格式的,现在告诉我缺少参数json,肯定问题出在后面那一串里,经过无尽的搜索之后,得到了一个我想要的结果,那就是双引号"需要转义,懂了,我们修改后继续!

  好的这次应该就有我想要的结果了,出来吧,命令框!聆听吾之号令!执行语句!返回你存在于世的证明,返回你正确的结果吧!(中二发言)

  看了下这次返回的报错信息,对照了下官方那边给的错误解释


  “打字”两个字不就在那里写着的么,这不就是关键字吗!之后我又陷入了无尽的搜索中,中途看到一篇博客,是通过Postman这个软件来测试发送消息的,跟着它的操作来一遍,先是发现Postman谷歌插件已经停用了,只能用软件版,之后又发现界面不太一样,但是根据我多年的折腾经验来说构不成什么大问题,配置好后点击Send,成功的发送了一条消息!!!!!但是,我的要求是每天定时发送,我自己点击发送根本不是我的目的啊,该忘还是会忘,上面有个Monitor功能,却不能自定义到我需要的的时间,所以,继续折腾呗,图就先放这里了。

image.png

Headers里key和value放的就是 -H 后面的内容Content-Type:application/json

  之后又去试了试网页版的Post测试,发现也能成功请求,只有我的cmd窗口不行,又是经过无尽的搜索后,没有得到答案。

  但是我突然想到,是不是,中文汉字的原因,然后立即去把机器人的关键词改成一个h,content里面改成hiahiahia打字提醒机器人测试,然后执行,好家伙可算知道哪里出问题了!

  知道问题所在了,解决办法就好找了,在官方文档那里看到了这样一句话:“发送POST请求时,必须将字符集编码设置成UTF-8”,我去试试把中文转换为UTF-8格式,发现还是行不通,无法识别,最后是把中文转为Unicode,关键词改回“打字”,终于成功了!

  之后就只剩定时执行了,我这边是先把能运行的代码文本复制到文本文档,然后另存为以.bat为后缀的文件,接着用windows任务计划程序,进行定时执行,定时执行这一步不会可以百度一下“window定时任务”,跟着上面一步一步来就行了。

  最后总结一下这次的摸索,在某个地方看到的这句话我感觉十分合适作为总结。

程序错误中,80% 是语法错误,16% 是简单的逻辑错误,0.8% 才是困难的问题。



作者:日之朝矣
链接:https://www.jianshu.com/p/ac7226e191dd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/liuyukuan/article/details/120593944