采用php代碼調用釘釘機器人,只在工作日發送一些提醒
一、添加自定義機器人方法
您好,群主/群管理員可以在電腦端通過如下的路徑添加自定義機器人:
步驟一:【電腦釘釘 】-【群聊】-【群設置】-【智能群助手】-【添加更多】-【添加機器人】-【自定義】-【添加】,編輯機器人名稱和選擇添加的群組。完成必要的安全設置(至少選擇一種),勾選 我已閱讀並同意《自定義機器人服務及免責條款》,點擊“完成”即可。
步驟二:復制出機器人的Webhook地址(格式如下截圖),可用於向這個群發送消息。並點擊【完成】,自定義機器人就添加成功了。
更加詳細的設置介紹,請參考鏈接:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq/9e91d73c
【溫馨提示】:
1、若關閉【僅群主和群成員可管理】,群成員也是可以添加機器人
2、出於對於群信息的安全,安全設置必須要選擇一項。
3、由於目前自定義機器人需要進行安全配置,需要在電腦端添加。手機端不支持添加自定義機器人哦。
4、如果設置或者自定義機器人遇到問題可以查看下開發平台文檔中心里關於機器人的介紹,更多的技術求助,可登錄開發者后台(https://open-dev.dingtalk.com/)查看相關知識。開發平台文檔中心:https://open.dingtalk.com/
二、代碼:
<?php /** * 釘釘相關接口和curl接口 */ class DingDing { const HOST = "https://oapi.dingtalk.com"; public static function sendTxt($token, $content, $isAtAll = true) { $url = self::HOST . "/robot/send?access_token=$token"; $data = array( 'msgtype' => 'text', 'text' => array( 'content' => $content ), 'at' => array( 'atMobiles' => array(), 'isAtAll' => $isAtAll, ), ); $ret = self::reqDing($url, $data); return $ret; } /** * 發起http請求,post為true用POST方式,false為GET方式請求 */ public static function reqDing($url, $postData, $post = true) { if (is_array($postData)) { $postData = json_encode($postData); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if($post) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); } curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json;charset=utf-8' )); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); $data = empty($data) ? array() : json_decode($data, true); return $data; } public static function getHoliday1($date = '') { $holidayUrl = 'http://api.k780.com/?app=life.workday&date=%s&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json'; if($date === '') { $date = date('Ymd', time()); } $url = sprintf($holidayUrl, $date); $judgeHolidayRet = self::reqDing($url, []); $worknm = $judgeHolidayRet['result']['worknm']; if(!isset($judgeHolidayRet['result']['worknm'])) { return false; } if($worknm == '工作日') { return 'yes'; } return 'no'; } public static function getHoliday2($date = '') { $holidayUrl = 'http://timor.tech/api/holiday/info/%s'; if($date === '') { $date = date('Y-m-d', time()); } $url = sprintf($holidayUrl, $date); $judgeHolidayRet = self::reqDing($url, [], false); $worknm = $judgeHolidayRet['type']['type']; if(!isset($judgeHolidayRet['type']['type'])) { return false; } if(($worknm == 0) || ($worknm == 3)) { return 'yes'; } return 'no'; } /** * 判斷當天是否為工作日 * public static function judgeWorkDay() { $ret1 = self::getHoliday1(); if($ret1 == 'yes') { return 'yes'; } elseif($ret1 == 'no') { return 'no'; } return self::getHoliday2(); } }
三、git地址:https://github.com/A07110517/dingding-request
四、golang代碼
const ( dingTalkHost = "https://oapi.dingtalk.com" ) /** * 發送釘釘報警 * token:報警機器人的token * content:報警內容 * all:true:at所有人 */ func SendAlert(token, content string, all bool) ([]byte, error) { dingUrl := dingTalkHost + "/robot/send?access_token=" + token data := make(map[string]interface{}) data["msgtype"] = "text" data["text"] = map[string]string{"content": content} data["at"] = map[string]interface{}{"atMobiles": [0]string{}, "isAtAll": all} bytePayload, err := jsoniter.Marshal(data) if err != nil { return nil, err } resp, postErr := http.Post(dingUrl, "application/json", bytes.NewBuffer(bytePayload)) if postErr != nil { return nil, postErr } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) }