微信公众号接口调用说明之八:群发管理(v5.0)
    2021-12-16
  
前期工作

  调用微信公众号接口前,请先熟悉微信公众平台开发的前期准备工作与接口调用模式,具体详情请参考:
  https://mp.weixin.qq.com/wiki

1、群发预览接口

  群发消息前,可以使用预览接口进行群发预览,群发预览只会发送至指定微信用户的微信上(已关注),群发的内容只能短暂性有效,逾期将失效。

调用方法
  
weixin::wx_material_preview()

相关参数

  共3个必要参数,3个可选参数,具体如下:
   1、群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为mpvideo,卡券为wxcard,必选
   2、用于群发的消息的腾讯素材id,必选
   3、预览的者微信号/QQ号/手机号,必选
   4、图文消息被判定为转载时,是否继续群发。 1为继续群发(转载),0为停止群发。 该参数默认为0,可选
   5、消息的标题,可选
   6、消息的描述,可选

调用实例
  
$result = weixin::wx_material_preview('mpnews','abc','wxkyger');

返回结果

  错误码:$result['errcode']
  错误信息:$result['errmsg']
  消息ID:$result['msg_id']

2、根据标签进行群发

调用方法
  
weixin::wx_material_send_by_tagid()

相关参数

  共7个参数,具体如下:
   1、群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为mpvideo,卡券为wxcard,必选
   2、用于群发的消息的腾讯素材id,必选
   3、群发到的标签的tag_id,参见用户管理中用户分组接口,若向所有用户群发,可不填写tag_id,必选
   4、用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据tag_id发送给指定群组的用户,可选
   5、图文消息被判定为转载时,是否继续群发。 1为继续群发(转载),0为停止群发。 该参数默认为0,可选
   6、消息的标题,可选
   7、消息的描述,可选

调用实例

  1、群发给带”tag_guangdong“标签的粉丝   
$result = weixin::wx_material_send_by_tagid('mpnews','abc','tag_guangdong');

  2、群发给所有粉丝   
$result = weixin::wx_material_send_by_tagid('mpnews','abc','',true);

返回结果

  错误码:$result['errcode']
  错误信息:$result['errmsg']
  媒体文件类型:$result['type'] 图片(image)、语音(voice)、视频(video)和缩略图(thumb),图文消息为news
  消息发送任务的ID:$result['msg_id']
  消息的数据ID:$result['msg_data_id'] 该字段只有在群发图文消息时,才会出现。可以用于在图文分析数据接口中,获取到对应的图文消息的数据,是图文分析数据接口中的msgid字段中的前半部分,详见图文分析数据接口中的msgid字段的介绍

3、根据OpenID列表群发

调用方法
  
weixin::wx_material_send_by_openid()

相关参数

  共3个必要参数,3个可选参数,具体如下:
   1、群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为mpvideo,卡券为wxcard,必选
   2、用于群发的消息的腾讯素材id,必选
   3、填写图文消息的接收者,OpenID数组,OpenID最少2个,最多10000个,必选
   4、图文消息被判定为转载时,是否继续群发。 1为继续群发(转载),0为停止群发。 该参数默认为0,可选
   5、消息的标题,可选
   6、消息的描述,可选

调用实例
  
$openid = array('abc','def','ghi');
$result = weixin::wx_material_send_by_openid('mpnews','mediakyger',$openid);

返回结果

  错误码:$result['errcode']
  错误信息:$result['errmsg']
  媒体文件类型:$result['type'] 图片(image)、语音(voice)、视频(video)和缩略图(thumb),图文消息为news
  消息发送任务的ID:$result['msg_id']
  消息的数据ID:$result['msg_data_id'] 该字段只有在群发图文消息时,才会出现。可以用于在图文分析数据接口中,获取到对应的图文消息的数据,是图文分析数据接口中的msgid字段中的前半部分,详见图文分析数据接口中的msgid字段的介绍

4、删除群发

调用方法
  
weixin::wx_material_send_del()

相关参数

  共2个参数,具体如下:
   1、群发任务id
   2、要删除的文章在图文消息中的位置,第一篇编号为1,该字段不填或填0会删除全部文章

调用实例

  1、删除群发任务id为“task_demo”的所有内容   
$result = weixin::wx_material_send_del('task_demo');

  2、删除群发任务id为“task_demo1”的第二篇图文   
weixin::wx_material_send_del('task_demo1',2);

返回结果

  错误码:$result['errcode']
  错误信息:$result['errmsg']

5、开启已群发文章的评论功能

调用方法
  
weixin::wx_material_open_comment()

相关参数

  共2个参数,具体如下:
   1、群发任务id
   2、多图文时,用来指定第几篇图文,从0开始,不填写默认操作该任务中的第一篇图文

调用实例

  1、删除群发任务id为“task_demo”的所有内容   
$result = weixin::wx_material_open_comment('task_demo');

// 方法返回一维数组,结构为微信接口返回的JSON结构
if($result['errcode'] == 0){
    echo '发送成功';
}else{
    echo $result['errmsg'];
}

  2、删除群发任务id为“task_demo1”的第二篇图文   
weixin::wx_material_send_del('task_demo1',1);

6、设置评论精选

调用方法
  
weixin::set_comment_good()

相关参数

  共4个参数,具体如下:
   1、群发返回的msg_data_id
   2、多图文时,用来指定第几篇图文,从0开始,默认操作第一篇图文
   3、用户评论id
   4、操作,0.取消精选 1.设置精选

调用实例

  1、设置“task_demo”任务下,第一篇图文内的评论“1”为精选   
$result = weixin::set_comment_good('task_demo',0,'1',1);

// 方法返回一维数组,结构为微信接口返回的JSON结构
if($result['errcode'] == 0){
    echo '发送成功';
}else{
    echo $result['errmsg'];
}

  2、取消“task_demo2”任务下,第二篇图文内的评论“2”的精选   
$result = weixin::set_comment_good('task_demo2',1,'2',0);

6、回复评论

调用方法
  
weixin::set_comment_reply()

相关参数

  共5个参数,具体如下:
   1、群发返回的msg_data_id
   2、多图文时,用来指定第几篇图文,从0开始,默认操作第一篇图文
   3、用户评论id
   4、回复内容,只有设置回复时必填
   5、操作,0.删除回复 1.设置回复信息

调用实例

  1、回复“task_demo”任务下,第一篇图文内的评论为“1”的评论   
$result = weixin::set_comment_reply('task_demo',0,'1','此处回复内容',1);

// 方法返回一维数组,结构为微信接口返回的JSON结构
if($result['errcode'] == 0){
    echo '发送成功';
}else{
    echo $result['errmsg'];
}

  2、删除“task_demo2”任务下,第二篇图文内评论为“2”的回复   
$result =weixin:: set_comment_reply('task_demo2',1,'2','',0);

7、删除评论

调用方法
  
weixin::del_comment()

相关参数

  共3个参数,具体如下:
   1、群发返回的msg_data_id
   2、多图文时,用来指定第几篇图文,从0开始,默认操作第一篇图文
   3、用户评论id

调用实例
  
$result = weixin::del_comment('task_demo','1','1');

// 方法返回一维数组,结构为微信接口返回的JSON结构
if($result['errcode'] == 0){
    echo '发送成功';
}else{
    echo $result['errmsg'];
}

8、查询群发消息发送状态(订阅号与服务号认证后均可用)

调用方法
  
weixin::get_job_status()

相关参数

  共1个参数,具体如下:
   1、群发返回的msg_id

调用实例
  
$result = weixin::get_job_status('task_demo');

返回结果

  群发消息后返回的消息id:$result['msg_id']
  消息发送后的状态:$result['msg_status'] SEND_SUCCESS表示发送成功,SENDING表示发送中,SEND_FAIL表示发送失败,DELETE表示已删除

9、查看指定文章的评论数据

调用方法
  
weixin::get_wx_comment()

相关参数

  共1个必选参数,4个可选参数,具体如下:
   1、群发返回的msg_data_id,必选
   2、多图文时,用来指定第几篇图文,从0开始,默认操作第一篇图文,可选
   3、起始位置,可选
   4、获取数目(>=50会被拒绝),可选
   5、普通评论&精选评论,1 普通评论 2 精选评论,可选

调用实例

  1、获取前10条评论   
$result = weixin::get_wx_comment('task_demo',0,0,10);

  2、获取10-20条评论   
$result = weixin::get_wx_comment('task_demo',0,10,10);

返回结果

  错误码:$result['errcode']
  错误信息:$result['errmsg']
  总数:$result['total']
  用户评论id:$result['comment'][0]['user_comment_id']
  粉丝openid:$result['comment'][0]['aroundopenid']
  评论时间:$result['comment'][0]['aroundcreate_time']
  评论内容:$result['comment'][0]['aroundcontent']
  是否精选评论:$result['comment'][0]['aroundcomment_type'] 0为即非精选,1为true,即精选
  作者回复内容:$result['comment'][0]['reply']['content']
  作者回复时间:$result['comment'][0]['reply']['create_time']

10、关闭已群发文章的评论功能

调用方法
  
weixin::wx_material_close_comment()

相关参数

  共2个参数,具体如下:
   1、群发任务id
   2、多图文时,用来指定第几篇图文,从0开始,不填写默认操作该任务中的第一篇图文

调用实例
  
$result = weixin::wx_material_close_comment('task_demo');

// 方法返回一维数组,结构为微信接口返回的JSON结构
if($result['errcode'] == 0){
    echo '发送成功';
}else{
    echo $result['errmsg'];
}