最近公司有個小項目,關於總部人員每天都要讀書,需要想個方案對每個人的讀書的情況做統計。經過幾次考慮,然后看了下釘釘的官方文檔,感覺釘釘的outgoing機器人挺適合這個項目的,於是就開始了。
1.首先需要獲得釘釘的管理員身份,這個需要自己企業群的總管理員進行設置。獲取到管理員身份后,就可以登陸到開發者后台了:
釘釘開放平台地址:https://ding-doc.dingtalk.com/

登錄后,就可以在應用開發-機器人 版塊中添加新的機器人了:

這里面有很多項內容,挨個填寫就好了,最重要的有這兩個,出口IP和消息接收地址,消息接收地址就是釘釘將數據返回到的地址。

建好機器人后,可以進行調試,會進入一個釘釘測試群,不過我不建議進測試群,實測在測試群中,返回的數據中沒有發送者userid和corpid,這個問題困擾了我很久,最后不得已尋找釘釘官方來尋求解決。還好釘釘官方很給力,反饋很迅速,及時解決了這個問題,解決方法就是機器人需要上線后,再創建一個新的內部群,然后將機器人添加進來就可以了,返回的數據中就會有這兩項數據了。


目前來說,創建機器人的任務就完成了,接下來就是接收到數據進行下一步開發了。
2.上一步填寫的消息接收地址派上用場了,當你@機器人並對他說話后,在你的后台就可以接收到釘釘返回的數據了,我的后台用的PHP,可以用
$file_contents = json_decode(file_get_contents('php://input'), true);來接收到http body中的數據。
然后通過:
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$data = array('msgtype' => 'text', 'text' => array('content' => $file_contents ));
$data_string = json_encode($data);
$result = request_by_curl($webhook, $data_string);
就可以看到機器人將返回的數據展示了出來,如下圖:(access_token可以查看官方文檔,里面有詳細的方法獲取)

這里我主要用到的是userid和text中的content,有了userid就可以通過釘釘服務端api獲取到員工個人信息以及部門信息,然后我就將這些數據以及content通過后台存入數據庫,這部分代碼就不展示了,就是普通的php入庫。目前任務已經完成了一大半了。
3.接下來的任務就是每天將統計結果發送到群里,我用的是link方式,具體方法在官方文檔中都有,我只截一下圖展示下:

//發送link消息
function sendLinkMsg($text, $title, $picUrl, $messageUrl)
{
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$data = array(
'msgtype' => 'link',
'link' => array(
'text' => $text,
'title' => $title,
'picUrl' => $picUrl,
'messageUrl' => $messageUrl,
)
);
$data_string = json_encode($data);
$result = request_by_curl($webhook, $data_string);
echo $result;
}
我單獨寫了一個方法發送消息,然后調用調用方法就可以在群里發送一個link類型的消息了;
sendLinkMsg("包含每個部門的已交數量、未交數量、提交比率","今日讀書匯報","http://www.xxxxx.cn/ding_read/web/img/urlimg.jpg","http://www.xxxxx.cn/ding_read/web/main.html");

目前項目就完成了,不算很麻煩,只要將釘釘outgoing機器人的流程走通,開發起來會很順手。目前釘釘機器人可能官方還在不斷地完善中,以后很可能會更加方便。
ps:最后放幾個效果圖,大家可以參考一下,這個機器人用起來還是肥腸方便滴~~hia hia hia~

