分享一个用php写的发送钉钉群消息的类
支持钉钉机器人安全设置中的加签方式
支持text和link两种消息推送方式
<?php
class Send_DingDing {
var $ifsecret;
var $ifat;
var $secret;
var $webhook;
var $message;
var $msgtype="text";
var $atlist;
var $title;
var $picUrl;
var $messageUrl;
var $text;
public function ifSecret($ifsecret="false"){
$this->ifsecret=$ifsecret;
}
public function setSecret($secret){
$this->secret=$secret;
}
public function setWebhook($webhook){
$this->webhook=$webhook;
}
public function setMessage($message){
$this->message=$message;
}
public function setMsgtype($msgtype){
$this->msgtype=$msgtype;
}
public function ifAt($ifat="false"){
$this->ifat=$ifat;
}
public function setAtlist($atlist){
$this->atlist=$atlist;
}
public function setTitle($title){
$this->title=$title;
}
public function setPicUrl($picUrl){
$this->picUrl=$picUrl;
}
public function setMessageUrl($messageUrl){
$this->messageUrl=$messageUrl;
}
public function setText($text){
$this->text=$text;
}
private function getWebhook(){
$webhook=$this->webhook;
$ifsecret=$this->ifsecret;
$secret=$this->secret;
if("$ifsecret" == "true"){
list($s1, $s2) = explode(' ', microtime());
$timestamp = (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
$data = $timestamp . "\n" . $secret;
$signStr = base64_encode(hash_hmac('sha256', $data, $secret,true));
$signStr = utf8_encode(urlencode($signStr));
$webhook .= "×tamp=$timestamp&sign=$signStr";
}
return $webhook;
}
public function getData(){
$msgtype=$this->msgtype;
$message=$this->message;
$title=$this->title;
$picUrl=$this->picUrl;
$text=$this->text;
$messageUrl=$this->messageUrl;
$ifat=$this->ifat;
$atlist=$this->atlist;
if("$msgtype" == "text"){
if("$ifat" == "true"){
$data = array ('msgtype' => 'text','text' => array ('content' => $message),'at' => array('atMobiles' => $atlist),'isAtAll' => "false");
}else{
$data = array ('msgtype' => 'text','text' => array ('content' => $message));
}
}elseif("$msgtype" == "link"){
$data = array('msgtype' => 'link','link' => array('text' => $text,'title'=>$title,'picUrl'=>$picUrl,'messageUrl'=>$messageUrl));
}
$data_string = json_encode($data);
return $data_string;
}
public function send(){
$webhook=$this->getWebhook();
$data_string=$this->getData();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $webhook);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
return $data;
echo $data;
}
}
$webhook="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxx";
$ifsecret="true";
$secret="xxxxxxxx";
#link
#/*
$msgtype="test msg";
$text="test text";
$title="test title";
$messageUrl="https://www.baidu.com";
$send_ding=new Send_DingDing();
$send_ding->setWebhook($webhook);
$send_ding->ifSecret($ifsecret);
$send_ding->setSecret($secret);
$send_ding->setMsgtype($msgtype);
$send_ding->setText($text);
$send_ding->setTitle($title);
$send_ding->setMessageUrl($messageUrl);
$send_ding->send();
#*/
#text
/*
$message="test msg";
$ifat="true";
$at_arr=Array("182XXXXXXXX");
print_r($at_arr);
$send_ding=new Send_DingDing();
$send_ding->setWebhook($webhook);
$send_ding->ifSecret($ifsecret);
$send_ding->setSecret($secret);
$send_ding->setMessage($message);
$send_ding->ifAt($ifat);
$send_ding->setAtlist($at_arr);
$send_ding->send();
*/
?>