钉钉(DingTalk)是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台,提供PC版,Web版,Mac版和手机版,支持手机和电脑间文件互传。钉钉因中国企业而生,帮助中国企业通过系统化的解决方案(微应用),全方位提升中国企业沟通和协同效率。(来自百度百科)
本文档主要介绍后台服务器通过钉钉自定义机器人向钉钉群定时发送信息
备注:另外还有一种功能是在钉钉群@钉钉机器人 字符串可以通过钉钉机器人发送信息到服务器,服务器收到顶顶群发送的信息后进行处理再通过钉钉机器人回复信息来完成信息的交互
一、创建群自定义钉钉机器人
1.打开钉钉群设置,找到智能群助手
2.选择添加机器人,自定义机器人
3.设置机器人姓名,设置安全模式
安全模式分为三种:
①自定义关键词,含义当后台给钉钉机器人发送消息时,消息文本内容需要包含关键词中的内容才能发送成功。
②加签,含义根据官方文档给的是把timestamp "\n" 密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)
③IP地址段,分析应该是填写公网IP
4.完成之后会产生webhook地址,即后台发送信息的接口地址,牢记接口地址,谨防泄露
二、PHP对接钉钉机器人接口发送信息
1.主服务页面,主要内容:PHP连接mysql数据库,时间判断,定时刷新页面,页面效果如下图所示,数据库连接成功,当前服务器时间,页面每秒刷新一次用来判断时间匹配定时(具体到秒)跳转钉钉信息发送页面。
2.主服务页面代码
官方给的文档里面有curl命令发送信息,可以在Linux系统上做下测试
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxx'\
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'
3.钉钉发送信息页面
<?php
include 'test_mysql_check.php';
//以下是钉钉推送消息配置
//start-----------------------------------------------------------------------
//
//webhook:https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx
echo "</br>"."跳转钉钉发送程序成功!3秒后返回!";
$url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxx';
/*
// 第一步,把timestamp "\n" 密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。
$time = time() *1000;//毫秒级时间戳,我这里为了方便,直接把时间*1000了
$secret = '这是密钥';
$sign = hash_hmac('sha256', $time . "\n" . $secret,$secret,true);
$sign = base64_encode($sign);
$sign = urlencode($sign);
$url = "{$url}×tamp={$time}&sign={$sign}";
*/
//使用关键字
//类型1:文本
$msg1 = [
'msgtype' => 'text',//这是文件发送类型,可以根据需求调整
'text' => [
'content' => 'dingding',
],
];
/*
//测试短信$msg1,修改发送文本信息
//定义数量
$num = 1;
$sum[10] = $num ;
var_dump($sum);
echo "</br>";
$content = '下午好!这是测试文本,请忽略!'.$count1.$num;
//输出拼接后的content
echo $content."</br>";
$msg1[text][content]=$content;
var_dump($msg1);
echo "</br>";
*/
//获取当前小时数
$h_cuur = date('H', time());
$day_today = date('Y年m月d日', time());
$curr_today = date('Y-m-d H:i', time());
//9-10点
if($h_cuur == 10){
if($times_curr_start_end != ''){
//echo "</br>"."21212121"."</br>";
$msg1[text][content] = $day_today."\n"."当前时间:".$curr_today."\n".$times_curr_start_end.":".$peo_curr_start_end."人"."\n".":".$times_day_count."人"."\n".":".$times_out."人"."\n".":".$times_in_park."人";
$curl = curl_init();
}
}
}
//类型2:markdown
$msg2 = [
"msgtype" => "markdown",
"markdown" => [
"title" => "dingding!杭州天气",
"text" => "#### 杭州天气 @13721424030 \n > 9度,西北风1级,空气良89,相对温度73%\n > ![screenshot](http://www.dianyingxiaozhen.cn/ext/images/pc_index_banner1.jpg)\n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"
],
"at" => [
"atMobiles" => [
""
],
"atUserIds" => [
"user123"
],
"isAtAll" => false
]
];
//类型3:link
$msg3 = [
"msgtype" => "link",
"link" => [
"text" => "dingding这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林",
"title" => "时代的火车向前开",
"picUrl" => "",
"messageUrl" => ""
]
];
//调用curl函数发送信息
//$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($msg1));
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
echo '返回发送结果:'."</br>";
var_dump($res);
//end----------------------------------------------------------------------------------
?>
<!-- 以下是html5设置,定时设置 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
//获取系统时间
var myDate = new Date();
console.log(myDate.getYear);
//3s后跳转主页面
var timer_reload = setTimeout(function(){
//window.location.reload();
//window.history.back(-1);
window.location.href="http://10.16.20.13:8088/dd_rebot_index.php";
},3000);
</script>
</body>
</html>
Copyright © 2008-2022 秒下下载站
m.down10s.com .All Rights Reserved