原文排版更好看哦=>通过企业微信和定时任务实现你的提醒小助手
原文排版更好看哦=>通过企业微信和定时任务实现你的提醒小助手
原文排版更好看哦=>通过企业微信和定时任务实现你的提醒小助手
注册和新建应用的过程就不细说了,现在企业微信申请不用认证任何信息,任意微信号就可以注册
新建应用后按如下截图找到几个信息
1.corpid 企业 id
2.corpsecret 应用的 secret
3.agentid 应用的agentid
 
 
发送信息也很好实现,首先获取 token
token有个过期时间,用 redis 存储并设置过期时间,可以很方便的判断是否需要重新获取
获取到 token 之后就可以调用发送消息接口,具体参数可以看官方文档 接口文档
这里提供一个 php 的工具类
/**
 * 发送企业微信
 * @param $content    内容
 * @param $tokenName  token 的 key
 * @param $secret     应用 secret
 * @param $agentId    应用 agentId
 * @author WJ
 * @date 2019-12-18
 */
public function sendWXWork($content, $tokenName, $secret, $agentId)
{
//使用 redis 存储 token,设置一个超时时间,过期后重新获取
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('****');
$token = $redis->get($tokenName);
if (empty($token)) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    
    //换上你的 corpid
    curl_setopt($curl, CURLOPT_URL, "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=****&corpsecret=" . $secret);
    $result = curl_exec($curl);
    curl_close($curl);
    $result = json_decode($result, true);
    if ($result['errcode'] === 0) {
        $token = $result['access_token'];
        $redis->set($tokenName, $token);
        $redis->expire($tokenName, $result['expires_in']);
    } else {
        return;
    }
}
//发送消息
$url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" . $token;
$text_param = array(
    "touser" => "@all",
    "msgtype" => "text",
    "agentid" => $agentId,
    "text" => array("content" => $content)
);
$requestData = json_encode($text_param);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length:' . strlen($requestData)));
curl_setopt($curl, CURLOPT_POSTFIELDS, $requestData);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//设置请求头
$headers = array();
$header[] = 'User-Agent: iMAG0'; //设置一个你的浏览器 agent 的 header
$header[] = 'token:Test'; //设置一个你的浏览器 agent 的 header
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_exec($curl);
curl_close($curl);
}
本文以实现一个喝水助手为例
 
先来说一下 linux 的定时任务
首先通过 crontab -e 命令新建定时任务,其实就是一个文本文档,格式如下
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command
可以用特殊字符表示范围:
“*”代表取值范围内的数字
“/”代表”每”
“-”代表从某个数字到某个数字
“,”分开几个离散的数字
通过 crontab -l 可以查看当前所有的定时任务
最后通过 curl 命令访问写好的接口就大功告成了
喝水助手的代码如下
public function drink(){
for($i = 1; $i <= 3; $i ++){
    $content = '现在是' . date("Y-m-d H:i:s", time()) . "\n\n 该喝水了!!!\n\n 喝水了!!!\n\n 水了!!!\n\n 了!!!\n\n !!!\n\n !!\n\n !";
    $this->sendWXWork($content, "drinkToken", "************", "************");
    sleep(2);
}
}
定时任务设置如下
30 6 * * * curl 127.0.0.1/drink 30 8 * * * curl 127.0.0.1/drink 0 11 * * * curl 127.0.0.1/drink 0 13 * * * curl 127.0.0.1/drink 30 15 * * * curl 127.0.0.1/drink 0 17 * * * curl 127.0.0.1/drink 30 18 * * * curl 127.0.0.1/drink 0 21 * * * curl 127.0.0.1/drink
|  |      1xnode      2020-03-26 08:43:06 +08:00 加一个 该拉屎了!! | 
|      2yEhwG10ZJa83067x      2020-03-26 08:50:49 +08:00 直接滴答清单不就行了,也是微信提醒 | 
|      3renmu      2020-03-26 09:07:12 +08:00 via Android Chrome 有个喝水助手,还挺好用的 | 
|  |      4KevinRed OP | 
|  |      5xabc      2020-03-26 09:31:19 +08:00 手机闹钟不行吗? 简单问题复杂化 😂 | 
|  |      6erDaren      2020-03-26 09:34:54 +08:00 via Android 只能在企业微信收消息吗?还是微信也可以收到? | 
|      7naix1573      2020-03-26 09:37:13 +08:00 | 
|      8Aprilming      2020-03-26 09:37:48 +08:00 滴答清单啊,能够实现微信推送的 | 
|  |      97654      2020-03-26 09:40:28 +08:00 用企业微信搭了一个报警平台,然后再设置微信接收,每天轰炸不要太酸爽 | 
|  |      10polythene      2020-03-26 10:21:48 +08:00 这里有一个同样功能的,只不过通过微信公众号实现的提醒机器人 https://github.com/polyrabbit/WeCron | 
|  |      12KevinRed OP | 
|  |      14bnm965321      2020-03-26 10:57:37 +08:00 | 
|  |      15raymanr      2020-03-26 11:07:28 +08:00 @7654 我刚给部门写了一个邮件+钉钉机器人的提醒, 现在部门领导正用这个到处发垃圾信息... 各种上万字的邮件, 刷满屏的机器人消息... 我唯一能做的就是把我从邮件接收人和机器人 @列表里面去掉... | 
|  |      18Liutos      2020-03-28 11:40:29 +08:00 我也做了个类似的工具: https://github.com/Liutos/cuckoo 发送给微信用的是方糖的服务,通知栏看的效果可能没有那么好:-p 除了发送到微信之外还会在桌面弹出通知,目前只做了对 macOS 的支持,所以需要一直开着电脑用 2333 欢迎各位大佬试用亲喷,在项目的 wiki 中有使用文档: https://github.com/Liutos/cuckoo/wiki |