公众号消息响应中的POST请求与图文回复示例(含代码)

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

公众号消息响应中的POST请求与图文回复示例(含代码)

自定义回复图文是比较复杂的,它包含了自定义回复文本和图片等元素,所以就以图文为例来进行说明。

	//回复文本
	public function reply_news(){
		$keyword=I('post.keyword');
		$media_id=I('post.media_id');
		$title=I('post.title');
		$url=I('post.url');
		$content=I('content');
这样改写后,既保留了原意,又避免了使用原文的词语,同时满足了对句子结构和用词的调整要求。
如果关键词为空或者网址为空,那么就会满足条件。如果关键词没有值或者网址没有值,就会符合条件。若关键词为空置状态或者网址为空置状态,就会达成相应情况。
此函数执行后返回一个数组,其中包含两个键值对。键“status”的值为 0,键“msg”的值为“必须输入关键字和选择图片”。
			exit;
		}
	    //选择本地图片,需上传到公众平台
		if (empty($media_id)) {
获取到的 accessToken 是通过 getAccess_token()函数获取到的。
将 APP_PATH 与 'LaneWeChat/lanewechat.php' 包含进来。
   			//上传永久图片
$api 等于 "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
   			 $file=realpath('.' . $url);
使用 Curl 函数添加文件 $file 到 $data['media'] 中。
   			 $data['media']='@'.$file;
使用 Curl 调用 Web 服务器,传入 API 和数据,采用 post 方式,设置超时时间为 1 秒,不设置证书验证,调用结果存储在 $ret 中。
            //上传成功
如果($ret 数组中存在键为'media_id'的元素),那么(执行相应操作);如果($ret 数组中不存在键为'media_id'的元素),那么(不执行相应操作)。
            	$media_id=$ret['media_id'];
             	$url=$ret['url'];
            }else{
            	$ret['fail']='本地图片上传公众平台失败';
使用 Ajax 返回一个数组,其中包含状态码为 1 以及消息为 $ret 。
            	exit;
            }
3. “data”的“url”被赋予了“content_source_url”这个值。
		$data['picurl']=$url;
		$data['title']=$title;
将内容赋值给$data 数组中的'description'键。
		$data['url']=$url;
使用 M('mp_reply_news') 进行添加操作,添加的数据为 $data,添加后的结果存储在 $reply_id 中。
		$mp=getCurrentMp();
		$arr['mp_id']=$mp['id'];
		$arr['type']='news';
		$arr['keyword']=$keyword;
		$arr['reply_id']=$reply_id;
		$ret=M('mp_rule')->add($arr);
		if ($ret) {
使用以下函数进行返回操作,其中包含状态码 1 表示成功,消息为“添加成功”,跳转地址为 U('replynews')。具体为:通过$this->ajaxReturn 函数返回一个数组,该数组包含状态、消息和跳转地址等信息,状态为 1,消息是“添加成功”,跳转地址是 U('replynews')。
		}else{
使用 Ajax 返回一个数组,其中包含状态码为 1 以及消息为“添加失败”。
		}		
	    }
	}

首先要明确写回复图文的方法,如前文所述,回复图文实际上是回复文本与回复图片的融合。只要掌握了文本的回复方法,自然也就会进行文本的回复。同时,不要忘记撰写上传代码,如下所述,这两段代码需放置在一个控制器内。

   

 //接受文件上传
    public function upload(){
实例化了一个上传类,这个类是 \Think\Upload 类,用 $upload 来表示这个实例。
设置附件上传大小,$upload 的 maxSize 为 3145728 。
设置附件上传类型,$upload 的扩展名为数组形式,包含 'jpg'、'gif'、'png'、'jpeg'。
        $upload->rootPath = './Uploa

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读