1. 程式人生 > 實用技巧 >PHP呼叫釘釘機器人

PHP呼叫釘釘機器人

採用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 true;
        } elseif($ret1 == 'no') {
            return false;
        }
        return self::getHoliday2();
    }
}

三、git地址: