找回密码
 立即注册

QQ登录

只需一步,快速开始

微信公众号开发资源

关注:734

所属分类: 微信开发 微信公众号开发资源

本版块为微信公众号开发教程与公众号开发相关技术分享板块,技术提问请到其他对应的问答板块发帖:)

[公众号开发博客] 群发文本消息 - 傻瓜式微信开发教程21 - 耗子原创

[复制链接]
查看: 4656|回复: 4
 楼主| 发表于 2015-8-25 16:15:51 | 显示全部楼层 |阅读模式
我们来学习群发消息里最简单的群发一个文本消息.
群发消息的文档在这里 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数据示例如下:
文本:
  1. {
  2.    "filter":{
  3.       "is_to_all":false
  4.       "group_id":"2"
  5.    },
  6.    "text":{
  7.       "content":"CONTENT"
  8.    },
  9.     "msgtype":"text"
  10. }
复制代码


其中的参数如下:

参数  是否必须    说明
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` 指要发送给那些人,
   
  1. "filter":{
  2.       "is_to_all":true
  3.    }
复制代码

   代表发送给全体

  
  1. "filter":{
  2.       "is_to_all":false
  3.       "group_id":"2"
  4.    }
复制代码

   代表发送给用户分组id为2的小组

另一种发送方式为按照openid列表发送:
根据OpenID列表群发【订阅号不可用,服务号认证后可用】

接口调用请求说明

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN

文本:

  1. {
  2.    "touser":[
  3.     "OPENID1",
  4.     "OPENID2"
  5.    ],
  6.     "msgtype": "text",
  7.     "text": { "content": "hello from boxer."}
  8. }
复制代码


`touser`中为需要接收的用户openid列表

重新创建一个文件`group_msg.php`,访问的时候执行群发函数.

ok,代码很简单,
需要注意的是json_encode会把中文重新编码,
为了解决这个问题,
我们需要先把中文用urlencode,
json_encode完成后再用urldecode回复中文

  1. <?php
  2.   class TemplateMsgSender
  3.   {
  4.       private $token = '';

  5.       function __construct($config=array('token'=>'', 'aeskey'=>'', 'appid'=>'', 'appsecret'=>'', 'debug' => FALSE))
  6.       {
  7.           $token = $config['token'];
  8.           $aeskey = $config['aeskey'];
  9.           $appid = $config['appid'];
  10.           $debug = $config['debug'];

  11.           $this->appid = $config['appid'];
  12.           $this->appsecret = $config['appsecret'];
  13.       }

  14.       public function getToken(){
  15.         if($this->token != ''){
  16.             return $this->token;
  17.         }

  18.         // 获取到 appid 和 appsecret
  19.         $appid = $this->appid;
  20.         $appsecret = $this->appsecret;
  21.         // 构建获取access_token的url
  22.         $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
  23.         // 构建http请求并执行
  24.         $ch = curl_init();
  25.         curl_setopt($ch, CURLOPT_URL, $url);
  26.         curl_setopt($ch, CURLOPT_HEADER, false);
  27.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  28.         $result=curl_exec($ch);
  29.         curl_close($ch);
  30.         // 解析返回的json数据
  31.         $jsoninfo = json_decode($result);
  32.         // 读取json中的access_token字段
  33.         $token = $jsoninfo->access_token;

  34.         $this->token = $token;
  35.         return $token;
  36.       }

  37.       public function testGroupTxtMsg(){
  38.         $token = $this->getToken();

  39.         $url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token={$token}";
  40.         $arrayData = array(
  41.           'filter' => array(
  42.             'is_to_all' => true
  43.           ),
  44.           'text' => array(
  45.             'content' => urlencode('这里是消息内容')
  46.           ),
  47.           'msgtype' => 'text'
  48.         );
  49.         $sendJsonData = urldecode(json_encode($arrayData));

  50.         $ch = curl_init($url);
  51.         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  52.         curl_setopt($ch, CURLOPT_POSTFIELDS, $sendJsonData);
  53.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  54.         var_dump(curl_exec($ch));
  55.     }
  56.   }


  57.   $wechat = new TemplateMsgSender(array(
  58.     'token' => 'weixin',
  59.     'aeskey' => 'bVmX0q9P9gwnEtl8kTP9C0B2gmZJ2yzS9H5hFQs78L0',
  60.     'appid' => 'wx5d1fb434a1652ae8',
  61.     'appsecret' => '1fc8b39875b830b558b0648f1d93721e',
  62.     'debug' => true
  63.     ));
  64.   $wechat->testGroupTxtMsg();
复制代码


  访问这个页面就可以看到调用微信api的返回数据了.

  附件中有完整的工程代码.
  记得把参数改为自己的测试账号的参数!!!
weixinshow001.zip (204.83 KB, 下载次数: 166)
回复

使用道具 举报

最佳答案
0 

0

主题

6

帖子

13

积分

新人求带

积分
13
发表于 2015-9-24 16:47:24 | 显示全部楼层
学习学习学习学习学习学习学习
回复 支持 反对

使用道具 举报

TA的社区排名

积分:暂未上榜

发帖:NO. 923 名

在线:NO. 24 名

最佳答案
0 

0

主题

32

帖子

20

积分

新人求带

积分
20
发表于 2015-11-17 20:35:20 | 显示全部楼层
好东东,值得分享,非常感谢!
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

9

帖子

70

积分

新人求带

积分
70
发表于 2015-12-4 17:29:45 | 显示全部楼层
返回错误40003         不合法的OpenID,请开发者确认OpenID(该用户)是否已关注公众号,或是否是其他公众号的OpenID
回复 支持 反对

使用道具 举报

TA的社区排名

积分:暂未上榜

发帖:NO. 845 名

在线:NO. 24 名

最佳答案
0 

2

主题

34

帖子

105

积分

新人求带

积分
105
发表于 2016-6-23 17:23:27 | 显示全部楼层
好的,试试看,怎么样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

henkuai.com是专业的第三方微信开发者平台,为生态而生。


本站为第三方微信开发者平台,非腾讯官方网站。

天津市滨海新区
中新生态城中成大道生态建设公寓9号楼3层301

欢迎来这里一起喝喝茶,
聊聊你的产品。

微信公众号gongzhongkaifa

工作日12小时内回复。

网站业务
zhongcong@henkuai.com

工作日12小时内回复。

市场合作
songchang@henkuai.com