??最初是注意到涨享,釘釘組內(nèi)群里面有個(gè)叫“每日計(jì)劃提醒”的機(jī)器人筋搏,每天晚上11:30都會(huì)準(zhǔn)時(shí)發(fā)送一條 “【敬業(yè)簽】:記得每日計(jì)劃總結(jié)哦!” 的消息厕隧,正好每天上午吃飯前30分鐘需要提醒組內(nèi)的人練習(xí)打字奔脐,而我又老是給忘了,弄個(gè)機(jī)器人提醒豈不美哉吁讨?
??說干就干髓迎,打開群設(shè)置 => 打開智能群助手 => 添加機(jī)器人 => 添加機(jī)器人。原來這個(gè)“每日計(jì)劃提醒”的機(jī)器人是學(xué)長創(chuàng)建的啊建丧∨帕洌看著面前這好幾種機(jī)器人,除了一個(gè)天氣機(jī)器人翎朱,其他的好像目前都用不上橄维,而我的目的只是一個(gè)每天按時(shí)說一句話,沒那么多其它功能闭翩,通過自定義機(jī)器人挣郭,應(yīng)該會(huì)比較簡單就完成吧迄埃。
??點(diǎn)擊打開自定義機(jī)器人 => 定義好機(jī)器人的名字 => 選好要添加到的群組 => 然后就是安全設(shè)置疗韵,什么嘛,還挺簡單的侄非。誒等等安全設(shè)置是什么東西蕉汪??逞怨?者疤?而且還至少得選擇一種安全設(shè)置,鼠標(biāo)放上去叠赦,一個(gè)一個(gè)看看是干啥的驹马,首先就是自定義關(guān)鍵詞:設(shè)定后革砸,只有包含關(guān)鍵詞消息的消息內(nèi)容才會(huì)被正常發(fā),這個(gè)沒問題糯累。
??下一個(gè)加簽算利,誒這個(gè)鼠標(biāo)放上去沒有任何提示信息,那行吧泳姐,去旁邊提到的說明文檔看一下這個(gè)是什么東西效拭。
??不看不知道,一看就給我整蒙了胖秒,官方是這樣說的
1.把timestamp+"\n"+密鑰當(dāng)做簽名字符串缎患,使用HmacSHA256算法計(jì)算簽名,然后進(jìn)行Base64 encode阎肝,最后再把簽名參數(shù)再進(jìn)行urlEncode挤渔,得到最終的簽名(需要使用UTF-8字符集)
2.把 timestamp和第一步得到的簽名值拼接到URL中。
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX×tamp=XXX&sign=XXX
官方貼心地在下面貼了示例代碼风题,一個(gè)是Java的芭析,一個(gè)是Python的,幸好這倆都稍微學(xué)過桨昙,能看得懂在干啥扎拣,注意到一個(gè)參數(shù)timestamp
的說明,要求它與請(qǐng)求調(diào)用時(shí)間誤差不能超過1小時(shí)稽鞭。我尋思鸟整,我這就每天定時(shí)發(fā)個(gè)消息,用不著再整這玩意兒了朦蕴。
??最后一個(gè)是IP地址段篮条,這個(gè)就算了,也就我自己定時(shí)發(fā)送一條消息吩抓,也沒有別的人再去發(fā)送請(qǐng)求涉茧,同樣用不上。
??好了疹娶,這就應(yīng)該差不多該完成了吧伴栓,接下來應(yīng)該就是設(shè)置一下消息,定個(gè)時(shí)發(fā)送什么的雨饺,在系統(tǒng)的引導(dǎo)下怎么可能會(huì)有難度钳垮,好了本文到此結(jié)束。欸额港,不是饺窿,等下,那個(gè)啥移斩,引導(dǎo)呢肚医,正常情況下不應(yīng)該還是些簡單的操作么绢馍,這又是啥玩意兒?肠套?痕貌?
webhook是個(gè)啥玩意兒,百度搜了下
Webhook是一個(gè)API概念糠排,并且變得越來越流行舵稠。我們能用事件描述的事物越多,webhook的作用范圍也就越大入宦。Webhook作為一個(gè)輕量的事件處理應(yīng)用哺徊,正變得越來越有用。
簡單來說就是一種反向API機(jī)制,類似于觸發(fā)器的一樣.
更詳細(xì)的內(nèi)容在這里:什么是Web Hook?
??知道個(gè)大概后乾闰,然后按照釘釘上面說的落追,進(jìn)入設(shè)置說明看看之后怎么整。好家伙上來就是一個(gè)下馬威涯肩,網(wǎng)址居然是錯(cuò)的轿钠,壓根沒跳轉(zhuǎn)到應(yīng)該跳轉(zhuǎn)的地方,還好上次查看加簽時(shí)那個(gè)網(wǎng)頁沒關(guān)病苗,順利的找到了“自定義機(jī)器人接入”說明疗垛,步驟一也就是文章上面的步驟,步驟二是一些說明硫朦,步驟三就是測試機(jī)器人了贷腕!
??復(fù)制上面提供的代碼到cmd命令行執(zhí)行一下,把xxxxx替換為自己的token咬展,也就是獲取到的wehook后面那一串泽裳,這個(gè)我懂,復(fù)制下來破婆,然后粘貼嘛涮总,多容易的事兒,文字部分改一下,畢竟得有打字這個(gè)關(guān)鍵詞祷舀。
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"我就是我, 是不一樣的煙火"}}'
報(bào)了一堆錯(cuò)瀑梗,但是沒關(guān)系!嘗試去解決蔑鹦!根據(jù)我的經(jīng)驗(yàn)夺克,總感覺官方給的這幾行代碼有哪里不對(duì)勁箕宙。果然嚎朽,搜了下curl,發(fā)現(xiàn)
\
這個(gè)符號(hào)根本不應(yīng)該出現(xiàn)柬帕!這哟忍,狡门,,算是是官方給考驗(yàn)嗎锅很?其馏??我們刪掉 \
再來一次爆安!??呵叛复,意料之中的報(bào)錯(cuò)呢,剩下的不知道咋回事扔仓,百度一下褐奥,谷歌一下,總會(huì)有辦法翘簇!翻來覆去撬码,雖然花了點(diǎn)時(shí)間,先是安裝curl版保,然后配置環(huán)境變量呜笑,最后 ,也就是出錯(cuò)的主要原因:window 的curl 不支持識(shí)別單引號(hào)
'
彻犁,血壓已經(jīng)上來了叫胁,咱把單引號(hào)全部換成雙引號(hào),改完繼續(xù)汞幢!??好的我們繼續(xù)來看一下運(yùn)行結(jié)果曹抬!
??缺少參數(shù) json啊,又去查了查-H和-d的意思急鳄,-d后面的參數(shù)是json格式的谤民,現(xiàn)在告訴我缺少參數(shù)json,肯定問題出在后面那一串里疾宏,經(jīng)過無盡的搜索之后张足,得到了一個(gè)我想要的結(jié)果,那就是雙引號(hào)"
需要轉(zhuǎn)義坎藐,懂了为牍,我們修改后繼續(xù)!
??好的這次應(yīng)該就有我想要的結(jié)果了岩馍,出來吧碉咆,命令框!聆聽吾之號(hào)令蛀恩!執(zhí)行語句疫铜!返回你存在于世的證明,返回你正確的結(jié)果吧K弧(中二發(fā)言)
??看了下這次返回的報(bào)錯(cuò)信息壳咕,對(duì)照了下官方那邊給的錯(cuò)誤解釋
??“打字”兩個(gè)字不就在那里寫著的么席揽,這不就是關(guān)鍵字嗎!之后我又陷入了無盡的搜索中谓厘,中途看到一篇博客幌羞,是通過Postman這個(gè)軟件來測試發(fā)送消息的,跟著它的操作來一遍竟稳,先是發(fā)現(xiàn)Postman谷歌插件已經(jīng)停用了属桦,只能用軟件版,之后又發(fā)現(xiàn)界面不太一樣他爸,但是根據(jù)我多年的折騰經(jīng)驗(yàn)來說構(gòu)不成什么大問題地啰,配置好后點(diǎn)擊Send,成功的發(fā)送了一條消息=补洹?髁摺!U祷臁!但是,我的要求是每天定時(shí)發(fā)送弹谁,我自己點(diǎn)擊發(fā)送根本不是我的目的啊,該忘還是會(huì)忘植康,上面有個(gè)Monitor功能销睁,卻不能自定義到我需要的的時(shí)間,所以冗栗,繼續(xù)折騰唄,圖就先放這里了贞瞒。
Headers里key和value放的就是 -H
后面的內(nèi)容Content-Type:application/json
??之后又去試了試網(wǎng)頁版的Post測試趁曼,發(fā)現(xiàn)也能成功請(qǐng)求军浆,只有我的cmd窗口不行挡闰,又是經(jīng)過無盡的搜索后乒融,沒有得到答案摄悯。
??但是我突然想到赞季,是不是,中文漢字的原因申钩,然后立即去把機(jī)器人的關(guān)鍵詞改成一個(gè)h
,content里面改成hiahiahia打字提醒機(jī)器人測試
,然后執(zhí)行,好家伙可算知道哪里出問題了豁跑!
??知道問題所在了,解決辦法就好找了卸夕,在官方文檔那里看到了這樣一句話:“發(fā)送POST請(qǐng)求時(shí)馏鹤,必須將字符集編碼設(shè)置成UTF-8”,我去試試把中文轉(zhuǎn)換為UTF-8格式娇哆,發(fā)現(xiàn)還是行不通湃累,無法識(shí)別,最后是把中文轉(zhuǎn)為Unicode碍讨,關(guān)鍵詞改回“打字”治力,終于成功了!
??之后就只剩定時(shí)執(zhí)行了勃黍,我這邊是先把能運(yùn)行的代碼文本復(fù)制到文本文檔宵统,然后另存為以.bat
為后綴的文件,接著用windows任務(wù)計(jì)劃程序,進(jìn)行定時(shí)執(zhí)行马澈,定時(shí)執(zhí)行這一步不會(huì)可以百度一下“window定時(shí)任務(wù)”瓢省,跟著上面一步一步來就行了。
??最后總結(jié)一下這次的摸索痊班,在某個(gè)地方看到的這句話我感覺十分合適作為總結(jié)勤婚。
程序錯(cuò)誤中,80% 是語法錯(cuò)誤涤伐,16% 是簡單的邏輯錯(cuò)誤馒胆,0.8% 才是困難的問題。