微信开发中的被动回复消息

被动回复用户消息


        当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐 [目前已学文本,图片、图文])。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复。

        假如服务器无法保证在五秒内处理并回复,必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示。详见下面说明: 1、直接回复success(推荐方式) 2、直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空)

        一旦遇到以下情况,微信都会在公众号会话中,向用户下发系统提示“该公众号暂时无法提供服务,请稍后再试”:1、开发者在5秒内未回复任何内容 2、开发者回复了异常数据,比如JSON数据等

回复文本消息

<xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[fromUser] ]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType>< ![CDATA[text] ]></MsgType> <Content>< ![CDATA[你好] ]></Content> </xml>
参数 是否必须 描述
ToUserName 接收方帐号(收到的OpenID)
FromUserName 开发者微信号
CreateTime 消息创建时间 (整型)
MsgType text
Content 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)

回复图片消息

<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>12345678</CreateTime><MsgType>< ![CDATA[image] ]></MsgType><Image><MediaId>< ![CDATA[media_id] ]></MediaId></Image></xml>
参数 是否必须 说明
ToUserName 接收方帐号(收到的OpenID)
FromUserName 开发者微信号
CreateTime 消息创建时间 (整型)
MsgType image
MediaId 通过素材管理中的接口上传多媒体文件,得到的id。

回复图文消息

<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>12345678</CreateTime><MsgType>< ![CDATA[news] ]></MsgType><ArticleCount>2</ArticleCount><Articles><item><Title>< ![CDATA[title1] ]></Title> <Description>< ![CDATA[description1] ]></Description><PicUrl>< ![CDATA[picurl] ]></PicUrl><Url>< ![CDATA[url] ]></Url></item><item><Title>< ![CDATA[title] ]></Title><Description>< ![CDATA[description] ]></Description><PicUrl>< ![CDATA[picurl] ]></PicUrl><Url>< ![CDATA[url] ]></Url></item></Articles></xml>
参数 是否必须 说明
ToUserName 接收方帐号(收到的OpenID)
FromUserName 开发者微信号
CreateTime 消息创建时间 (整型)
MsgType news
ArticleCount 图文消息个数,限制为8条以内
Articles 多条图文消息信息,默认第一个item为大图,注意,如果图文数超过8,则将会无响应
Title 图文消息标题
Description 图文消息描述
PicUrl 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
Url 点击图文消息跳转链接
被动回复文本,代码如下:
public function reply(){
		$mp = $this->mp; //使用中的公众号id
                //获取前台页面的数据
		$content = I('post.content');
		$keyword = I('post.keyword');
                //追加数据到数据库
		$text = M('reply_text');	
		$str['content'] = $content;
		$ret = $text->add($str);		
		$rule = M('rule');	
		$data['keyword'] = $keyword;
		$data['type'] = 'text';
		$data['mpid'] = $mp['id'];
		$data['reply_id'] = $ret;
		$ret = $rule->add($data);
public static function text(&$request){
        //获取哪个公众号发过来的请求
        $mpid=$_GET['id'];
        $content=$request['content'];
        $where['mpid']=$mpid;
        $where['keyword']=$content;
        $data=M('rule')->where($where)->find();
        if($data){
            $reply_id=$data['reply_id'];
            $type=$data['type'];
            switch($type){
                case 'text':
                   $reply=M('reply_text')->find($reply_id);
                   if($reply){
                    $reply_text=$reply['content'];
                   }else{
                    $reply_text="出错啦";
                   }
                   return ResponsePassive::text($request['fromusername'], $request['tousername'], $reply_text); 
                   break;}}


猜你喜欢

转载自blog.csdn.net/csjn_y/article/details/79993416