微信二次开发之被动回复文本、图片和图文消息

被动回复文本消息有5个参数(ToUserName,FromUserName,CreateTime,CreateTime,content),其中最重要的就content,也就是开发者回复用户的消息内容

 < ![CDATA[toUser] ]> < ![CDATA[fromUser] ]> 12345678 < ![CDATA[text] ]> < ![CDATA[你好] ]> 

下面是我写的回复文本消息的关键代码。首先要从前台获取所填写的内容,并使用add()方法写入数据表mp_reply_text中,返回值是插入信息的ID号也就是reply_id,将关键字、类型、reply_id、mpid写入另一个数据表mp_rule中,微信平台通过mp_rule数据表中的类型和reply_id两个字段来判断回复用户什么信息。

$mp = $this->mp;//获取正在使用的公众号的ID
		$arr['content'] = I('post.content');
		// print_r($arr);
		// exit;
		$reply_id = M('mp_reply_text')->add($arr);//将填写的数据写入数据表中,返回插入信息的reply_id
		// echo $reply_id;
		$data['reply_id'] = $reply_id;
		$data['keyword'] = I('post.keyword');
		$data['mpid'] = $mp['id'];
		$data['type'] = "text";
		$ret = M('mp_rule')->add($data);
		// echo $ret;
		// exit;
		if($ret){
			$this->ajaxReturn(array('msg'=>"上传成功"));
		}else{
			$this->ajaxReturn(array('msg'=>$ret));
		}

下面是我写的回复用户图片消息的代码。方法和回复文本消息大致一致,只是多了两步访问上传永久图片接口和上传图片,调用callWebServer方法访问接口,返回值为图片的URL和media_id。

$mp = $this->mp;
		$url = I('post.url');
		$file = realpath('.' . $url);
		include APP_PATH . 'LaneWeChat/lanewechat.php';
		// 获取access_token
		$access_token = getAccess_token();
		// 上传永久
		$url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$access_token&type=image";
		$data['media'] = '@' . $file;
		$ret = Curl::callWebServer($url,$data,'post',true,false);
		// print_r($arr);
		// $this->ajaxReturn($ret);
		// print_r($ret);
		$reply_id = M('mp_reply_image')->add($ret);
		$arr = array();		
		$arr['type'] = 'image';
		$arr['keyword'] = I('post.keyword');
		$arr['mpid'] = $mp['id'];
		$arr['reply_id'] = $reply_id;
		$result = M('mp_rule')->add($arr);
		if($result){
			$this->ajaxReturn(array('msg'=>"上传成功"));
		}else{
			$this->ajaxReturn(array('msg'=>$result));
		}

下面是我写的回复图文消息的代码。写法和回复图片大致一致,只是数据表的字段信息不一样。

$mp = $this->mp;
		$url = I('post.url');
		$file = realpath('.' . $url);
		include APP_PATH . 'LaneWeChat/lanewechat.php';
		// 获取access_token
		$access_token = getAccess_token();
		// 上传永久
		$url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$access_token&type=image";
		$data['media'] = '@' . $file;
		$ret = Curl::callWebServer($url,$data,'post',true,false);
		// print_r($ret);
		// exit;
		$arr['title'] = I('post.title');
		$arr['description'] = I('post.content');
		$arr['picurl'] = $ret['url'];
		$arr['url'] = I('post.content_source_url');
		// print_r($arr);
		// exit;
		$reply_id = M('mp_reply_news')->add($arr);
		$arr1['mpid'] = $mp['id'];
		$arr1['reply_id'] = $reply_id;
		$arr1['keyword'] = I('post.keyword');
		$arr1['type'] = "news";
		$result = M('mp_rule')->add($arr1);
		if($result){
			$this->ajaxReturn(array('msg'=>'提交成功!'));
		}else{
			$this->ajaxReturn(array('msg'=>$result));
		}

你可能感兴趣的:(微信二次开发之被动回复文本、图片和图文消息)