LaneWeChat

PHP微信开发框架,高效开发微信公众号应用。简洁而又轻量

GitHub下载 查看手册

高级群发接口

Visits: 14922 Date: 2014-11-05 14:58:03 Power By 李轩Lane

    

1、类简介:根据分组、openId列表进行群发(推送)。图文消息需要先将图文消息当作一个素材上传,然后再群发,其他类型的消息直接群发即可。


        注意:推送后用户到底是否成功接受,微信会向公众号推送一个消息。消息类型为事件消息,可以在lanewechat/wechatrequest.lib.php文件中的方法eventMassSendJobFinish(&$request)中收到这条消息。


        2、使用命名空间:use LaneWeChat\Core\AdvancedBroadcast;


        3、上传图文消息。创建一个图文消息,保存到微信服务器,可以得到一个id代表这个图文消息,发送的时候根据这个id发送就可以了。

            Menu::uploadNews($articles);

            $articles 是图文消息列表,结构如下:

            $articles = array(

                array('thumb_media_id'=>'多媒体ID,由多媒体上传接口获得' , 'author'=>'作者', 'title'=>'标题', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'是否设置为封面(0或者1)'),

                array('thumb_media_id'=>'多媒体ID,由多媒体上传接口获得' , 'author'=>'作者', 'title'=>'标题', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'是否设置为封面(0或者1)'),

            );

            'thumb_media_id'多媒体ID,由多媒体上传接口获得:Media::upload($filename, $type);

            'author'作者

            'title'标题

            'content_source_url'一个URL,点击“阅读全文”跳转的地址

            'digest'摘要

            'show_cover_pic'0或1,是否设置为封面。

        下面的方法,图文消息的参数mediaId是由上面这个方法(3)Menu::uploadNews($articles);获得的,其他的mediaId是多媒体上传获得的Media::upload($filename, $type);

        根据分组群发的所有接口最后一个参数,$isToAll,默认未false。使用true且成功群发,会使得此次群发进入历史消息列表。


        4、根据分组进行群发 - 发送图文消息:

            AdvancedBroadcast::sentNewsByGroup($groupId, $mediaId, $isToAll=false);


        5、根据分组进行群发 - 发送文本消息

            AdvancedBroadcast::sentTextByGroup($groupId, $content, $isToAll=false);


        6、根据分组进行群发 - 发送语音消息

            AdvancedBroadcast::sentVoiceByGroup($groupId, $mediaId, $isToAll=false);


        7、根据分组进行群发 - 发送图片消息

            AdvancedBroadcast::sentImageByGroup($groupId, $mediaId, $isToAll=false);


        8、根据分组进行群发 - 发送视频消息

            AdvancedBroadcast::sentVideoByGroup($mediaId, $title, $description, $groupId, $isToAll=false);


        9、根据OpenID列表群发 - 发送图文消息

            AdvancedBroadcast::sentNewsByOpenId($toUserList, $mediaId);


        10、根据OpenID列表群发 - 发送文本消息

            AdvancedBroadcast::sentTextByOpenId($toUserList, $content);


        11、根据OpenID列表群发 - 发送语音消息

            AdvancedBroadcast::sentVoiceByOpenId($toUserList, $mediaId);


        12、根据OpenID列表群发 - 发送图片消息

            AdvancedBroadcast::sentImageByOpenId($toUserList, $mediaId);


        13、根据OpenID列表群发 - 发送视频消息

            AdvancedBroadcast::sentVideoByOpenId($toUserList, $mediaId, $title, $description);


        14、删除群发

            请注意,只有已经发送成功的消息才能删除删除消息只是将消息的图文详情页失效,已经收到的用户,还是能在其本地看到消息卡片。 另外,删除群发消息只能删除图文消息和视频消息,其他类型的消息一经发送,无法删除。

            AdvancedBroadcast::delete($msgId);

            $msgId:以上的群发接口成功时都会返回msg_id这个字段


        15、预览图文消息

            AdvancedBroadcast::previewNewsByGroup($openId, $mediaId);


        16、预览文本消息

            AdvancedBroadcast::previewTextByGroup($openId, $content);


        17、预览语音消息

            AdvancedBroadcast::previewVoiceByGroup($openId, $mediaId);


        18、预览图片消息

            AdvancedBroadcast::previewImageByGroup($openId, $mediaId);


        19、预览视频消息

            AdvancedBroadcast::previewVideoByGroup($mediaId, $title, $description, $openId);


        20、查询群发消息发送状态【订阅号与服务号认证后均可用】

            AdvancedBroadcast::getStatus($openId, $mediaId);

Reply: sz_phper On 2015-11-25 14:16:55

群发文本消息(带有中文)的时候,用户收的是json串: \u7fa4\u53d1\u6d4b\u8bd5

回复

Reply: sz_phper On 2015-11-25 14:22:54

找到原因了$template = json_encode($template)

回复

Reply: WWJ On 2015-12-04 16:39:50

根据分组群发消息的时候,已经可以确定是进入了AdvancedBroadcast::sentTextByGroup($groupId, $content, $isToAll=false);,groupid也没错,但不知道为什么,会发送给了所有的用户,这是什么原因?

回复

Reply: ARSENAL On 2016-03-21 15:54:59

群发视频消息的时候,根据视频的media_id获取新的media_id时,一直报40007media_id错误,而这media_id我用来发客服消息是没错的,所以这media_id应该没错啊,这是什么原因?

回复

Add Comment
©2014~time() lanewechat.lanecn.com , All rights reserved. Power By LaneWeChat 微信PHP开发框架.  京ICP备14005030号-1