20210804更新:方糖最新推出了Wecom酱,Wecom酱与Server酱·Turbo版同属于方糖推送生态,但区别在于Wecom酱是可以自行搭建的开源推送方案,并且同时支持服务器、腾讯云函数、docker等多种方式部署,强烈安利噢🤩
由于Server酱·Turbo版没氪金的话会有一些限制,尤其是每日发送数量的限制较为严格,仅为5条/天,有时会不够用,既然这样的话,那我们动手搭建一个属于自己的Server酱吧!
Code
<?php
$corpid = $_REQUEST['corpid']; //企业id
$corpsecret = $_REQUEST['corpsecret']; //应用secret
$agentid = $_REQUEST['agentid']; //应用id
// 如果只有自己使用,可以把参数直接写在这里。
// $corpid = '';
// $corpsecret = '';
// $agentid = '';
$title = $_REQUEST['title']; //消息title
$description = $_REQUEST['description']; //消息内容
$description = str_replace(PHP_EOL, '<br>', $description);
$url = $_REQUEST['url']; //消息跳转url
if(!$corpid or !$corpsecret or !$agentid){
exit("canshu buquan");
}
//获取access_token
$response = CurlGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid&corpsecret=$corpsecret","","");
$access_token = json_decode($response)->access_token;
if(!$access_token){
exit("canshu cuowu");
}else{
$json = '{"touser":"@all","msgtype":"textcard","agentid":"","textcard":{"title":"","description":"","url":"","btntxt":"更多"},"safe":1,"enable_id_trans":0,"enable_duplicate_check":0}';
$json = json_decode($json);
$json->agentid = $agentid;
$json->textcard->title = $title ? $title : '无标题';
$json->textcard->description = $description ? $description : '无内容';
$json->textcard->url = $url ? $url : 'URL';
echo CurlPost("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$access_token","", json_encode($json));
}
function CurlGet($url,$cookies = "",$UserAgent = "")
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_COOKIE, $cookies);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
if ($UserAgent != "") {
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
}
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
function CurlPost($url, $cookies="", $post_data="", $headers=array(), $refer="", $UserAgent = '')
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
curl_setopt($curl, CURLOPT_COOKIE, $cookies);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
if ($refer != '') {
curl_setopt($curl, CURLOPT_REFERER, $refer);
}
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
企业微信配置说明
注册企业
用电脑打开企业微信官网,注册一个企业,可以得到企业ID
,即调用参数中的corpid
。
创建应用
注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
应用名称填入「Server酱」,应用 logo 到这里下载,这两项也可以自定义,可见范围选择公司名。
创建完成后进入应用详情页,可以得到 AgentID
和 Secret
,前者即调用参数中的agentid
,后者即调用参数中的corpsecret
。
获取企业 ID
进入「我的企业」页面,拉到最下边,可以看到企业 ID,复制并填到上方。
推送消息到微信
进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。
调用示例
http://example.com/server.php?corpid=xxx&corpsecret=xxx&agentid=xxx&title=title&description=desc&url=url
默认的消息类型为文本卡片消息,更多类型可参考企业微信 API 文档自定义。
如果只有自己使用的话,可以把参数直接写在代码里,调用时就不再需要传递corpid
、corpsecret
以及agentid
等参数:
http://example.com/server.php?title=title&description=desc&url=url
本文在撰写时参考了黑鸟博客的《自建企业微信消息推送通知通道接口PHP版》和Server酱·Turbo版的《企业微信应用消息配置说明》,并对其中不完善或有误的地方做出补充或修改,特此感谢原作者。
4 条评论
看的我热血沸腾啊
不错哦,还可以自己搭
看到你的网站才发现方糖推送生态现在推出了Wecom酱,感觉代码更规范一些,回头我去研究研究~
嘿嘿,我用了两个多月了,还蛮好用的