原文排版更好看哦=>通过企业微信和定时任务实现你的提醒小助手
原文排版更好看哦=>通过企业微信和定时任务实现你的提醒小助手
原文排版更好看哦=>通过企业微信和定时任务实现你的提醒小助手
注册和新建应用的过程就不细说了,现在企业微信申请不用认证任何信息,任意微信号就可以注册
新建应用后按如下截图找到几个信息
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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.