众所周知,服务号是具有模板消息的接口的,可以主动向用户推送通知消息,但前段时间,微信团队开始向开发者通知模板消息即将调整为订阅消息,即用户接受订阅,才能收到推送恰好企业微信没有做改变,则我们可以通过企业微信实现接收通知。
1、注册企业微信,个人也可以注册
2、注册后,登陆企业微信,完善基本信息
3、点击应用管理->自建->创建应用
4、创建成功后,简单修改下自己的资料
5、获取企业ID和Secret
企业ID在我的企业可以获取
应用Secret在你创建的应用处可以查看
根据企业微信API请求流程可知,要想调用企业微信API,先获得access_token并缓存,因为每天的调用次数有限,access_token有效期为2小时,所以要进行缓存。然后再调用业务API,完成你请求的接口。
我这里用单页面实现整个过程(获取access_token,缓存access_token,发送推送)
<?php
// 声明页面header
header("Content-type:text/html;charset=utf-8");
// 获取access_token
function getToken(){
// 定义id和secret
$corpid='你的企业微信企业ID';
$corpsecret='你的企业微信secret';
// 读取access_token
include './access_token.php';
// 判断是否过期
if (time() > $access_token['expires']){
// 如果已经过期就得重新获取并缓存
$access_token = array();
$access_token['access_token'] = getNewToken($corpid,$corpsecret);
$access_token['expires']=time()+7000;
// 将数组写入php文件
$arr = '<?php'.PHP_EOL.'$access_token = '.var_export($access_token,true).';'.PHP_EOL.'?>';
$arrfile = fopen("./access_token.php","w");
fwrite($arrfile,$arr);
fclose($arrfile);
// 返回当前的access_token
return $access_token['access_token'];
}else{
// 如果没有过期就直接读取缓存文件
return $access_token['access_token'];
}
}
// 获取新的access_token
function getNewToken($corpid,$corpsecret){
$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corpid}&corpsecret={$corpsecret}";
$access_token_Arr = https_request($url);
return $access_token_Arr['access_token'];
}
// curl请求函数
function https_request ($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$out = curl_exec($ch);
curl_close($ch);
return json_decode($out,true);
}
// 发送应用消息函数
function send($data){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.getToken());
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
return curl_exec($ch);
}
// 文本卡片消息体
$postdata = array(
'touser' => '@all',
'msgtype' => 'textcard',
'agentid' => '1000002',
'textcard' => array(
'title' => '测试卡片的标题',
'description' => '测试卡片的描述',
'url' => 'http://www.qq.com',
'btntxt' => '阅读全文',
),
'enable_id_trans' => 0,
'enable_duplicate_check' => 0,
'duplicate_check_interval' => 1800
);
// 调用发送函数
echo send(json_encode($postdata));
?>
上方的代码直接访问即可完成推送。
文本卡片消息体是发送文本卡片的数据,通过JSON格式数据进行发送给企业微信API,具体的参数说明请看开发文档:https://work.weixin.qq.com/ap...
// 文本卡片消息体
$postdata = array(
'touser' => '@all',
'msgtype' => 'textcard',
'agentid' => '1000002',
'textcard' => array(
'title' => '测试卡片的标题',
'description' => '测试卡片的描述',
'url' => 'http://www.qq.com',
'btntxt' => '阅读全文',
),
'enable_id_trans' => 0,
'enable_duplicate_check' => 0,
'duplicate_check_interval' => 1800
);
touser为@all就是向所有人推送消息,msgtype就是当前发送的类型,agentid就是当前应用的id,textcard就是一些参数(标题、跳转的链接等)。
除了上面的消息类型,还有文本消息、图片消息、语音消息、视频消息、图文卡片消息等,具体可以查看开发文档,配置发送的消息体。
如果你微信关注了这个应用,那么就可以在微信收到通知,如过没有关注,就只能在企业微信内收到通知。
Author:TANKING
Web:www.likeyuns.com
WeChat:sansure2016
1.先瞧瞧效果: 2.代码是这样的: img src=images/circle.png alt= id=circle/@m...
本文没有咬文嚼字的地方,只是一个配色技巧的分享,十分简单,简单到流泪,但或...
前言 Canvas绘制多变形非常简单,只要懂得Canvas路径 + 简单的初中数学知识即可...
作者:Joe Seifi 译者:前端小智 移动: https://mp.weixin.qq.com/s/p5... 有梦...
1、纯工具操作步骤,懂代码更容易 划线就是不符合国人的审美观念,看着就别扭,...
简介: 6月4日,以“开启分布式云新时代”为主题2021云边协同大会在北京举行,本...
折叠式卡片布局在PC版网站中可能不常见,但是在手机版,小屏幕的网页浏览会大发...
背景 在公司参与一个原生APP和h5混合开发的项目,本人在项目中负责h5部分,现将...
在默认情况之下,如果在Canvas之中将某个物体(源)绘制在另一个物体(目标)之...
一、虽然有的属性是boolean类型,但仍旧建议按照XHTML书写(属性名=属性值)格式...