我们来学习群发消息里最简单的群发一个文本消息. 群发消息的文档在这里 http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html
其中群发文本消息是最简单的,因为我们不需要提前上传图文之类的素材, 直接调用发送api就可以了.
所以我们只需要关注这些内容:
根据分组进行群发【订阅号与服务号认证后均可用】
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN POST数据说明
POST数据示例如下: 文本:
- {
- "filter":{
- "is_to_all":false
- "group_id":"2"
- },
- "text":{
- "content":"CONTENT"
- },
- "msgtype":"text"
- }
复制代码
其中的参数如下:
参数 是否必须 说明 filter 是 用于设定图文消息的接收者 is_to_all 否 用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据group_id发送给指定群组的用户 group_id 否 群发到的分组的group_id,参加用户管理中用户分组接口,若is_to_all值为true,可不填写group_id mpnews 是 用于设定即将发送的图文消息 media_id 是 用于群发的消息的media_id msgtype 是 群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video,卡券为wxcard title 否 消息的标题 description 否 消息的描述 thumb_media_id 是 视频缩略图的媒体ID
逐个介绍一下: `filter` 指要发送给那些人,
- "filter":{
- "is_to_all":true
- }
复制代码 代表发送给全体
- "filter":{
- "is_to_all":false
- "group_id":"2"
- }
复制代码 代表发送给用户分组id为2的小组
另一种发送方式为按照openid列表发送: 根据OpenID列表群发【订阅号不可用,服务号认证后可用】
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN
文本:
- {
- "touser":[
- "OPENID1",
- "OPENID2"
- ],
- "msgtype": "text",
- "text": { "content": "hello from boxer."}
- }
复制代码
`touser`中为需要接收的用户openid列表
重新创建一个文件`group_msg.php`,访问的时候执行群发函数.
ok,代码很简单, 需要注意的是json_encode会把中文重新编码, 为了解决这个问题, 我们需要先把中文用urlencode, json_encode完成后再用urldecode回复中文
- <?php
- class TemplateMsgSender
- {
- private $token = '';
- function __construct($config=array('token'=>'', 'aeskey'=>'', 'appid'=>'', 'appsecret'=>'', 'debug' => FALSE))
- {
- $token = $config['token'];
- $aeskey = $config['aeskey'];
- $appid = $config['appid'];
- $debug = $config['debug'];
- $this->appid = $config['appid'];
- $this->appsecret = $config['appsecret'];
- }
- public function getToken(){
- if($this->token != ''){
- return $this->token;
- }
- // 获取到 appid 和 appsecret
- $appid = $this->appid;
- $appsecret = $this->appsecret;
- // 构建获取access_token的url
- $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
- // 构建http请求并执行
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_HEADER, false);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- $result=curl_exec($ch);
- curl_close($ch);
- // 解析返回的json数据
- $jsoninfo = json_decode($result);
- // 读取json中的access_token字段
- $token = $jsoninfo->access_token;
- $this->token = $token;
- return $token;
- }
- public function testGroupTxtMsg(){
- $token = $this->getToken();
- $url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token={$token}";
- $arrayData = array(
- 'filter' => array(
- 'is_to_all' => true
- ),
- 'text' => array(
- 'content' => urlencode('这里是消息内容')
- ),
- 'msgtype' => 'text'
- );
- $sendJsonData = urldecode(json_encode($arrayData));
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
- curl_setopt($ch, CURLOPT_POSTFIELDS, $sendJsonData);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- var_dump(curl_exec($ch));
- }
- }
- $wechat = new TemplateMsgSender(array(
- 'token' => 'weixin',
- 'aeskey' => 'bVmX0q9P9gwnEtl8kTP9C0B2gmZJ2yzS9H5hFQs78L0',
- 'appid' => 'wx5d1fb434a1652ae8',
- 'appsecret' => '1fc8b39875b830b558b0648f1d93721e',
- 'debug' => true
- ));
- $wechat->testGroupTxtMsg();
复制代码
访问这个页面就可以看到调用微信api的返回数据了.
附件中有完整的工程代码. 记得把参数改为自己的测试账号的参数!!!
weixinshow001.zip (204.83 KB, 下载次数: 2)
|