回复图文消息需要在前台页面多加入几个字段,标题,内容,访问地址......
我们需要建一个news表,用来储存表单提交的数据,回复的关键字依然放在rlue表中。
在后台写一个方法replynews,代码如下:
public function replyNews(){
if(IS_GET){
$this->display();
}else{
$result=I('post.');
if(empty($result['keyword'])|| empty($result['url'])){
$this->ajaxReturn(array('status'=>0,'msg'=>'必须输入关键字和选择图片'));
exit;
}
if(empty($result['media_id'])){
$accessToken=getAccess_token();
include APP_PATH . 'LaneWeChat/lanewechat.php';
$url1="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
$file=realpath('.'. $result['url']);//相对路径->绝对路径
$data['media']=Curl::addFile($file);
$ret=Curl::callWebServer($url1,$data,'post',1,0);
if(isset($ret['media_id'])){
$media_id=$ret['media_id'];
$url=$ret['url'];
}else{
$ret['fail']='本地图片上传公众号失败';
$this->ajaxReturn(array('status'=>1,'msg'=>$ret));
exit;
}
$data['title']=$result['title'];
$data['description']=$result['content'];
$data['picurl']=$url;
$data['url']=$result['content_source_url'];
$reply_id=M('mp_reply_news')->add($data);
$mp=getCurrentMp();
$arr=array(
'mpid'=>$mp['id'],
'type'=>'news',
'keyword'=>$result['keyword'],
'reply_id'=>$reply_id
);
$ret=M('mp_rule')->add($arr);
if($ret){
$this->ajaxReturn(array('status'=>1,'msg'=>'添加成功','url'=>U('replynews')));
}else{
$this->ajaxReturn(array('status'=>0,'msg'=>'添加失败'));
}
}
}
}
将前台内容添加到数据库后,就可以调用微信部分,回复图文消息了。