自动回复消息,就是把自动回复的信息,组成xml文件,每一个回复都会对应着一个xml文件,并不是所有回复都使用的一个xml。下面分别是回复文本、图片、图文消息。在回复图片和图文中都需要上传图片,分别需要点用接口。
这里需要用到四个数据库:
回复文本消息
<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中能够换行,微信客户端就支持换行显示) |
代码示例:
//自动回复文本 public function addtext(){ $content = I('post.content'); $keyword = I('post.keyword'); if(empty($content) || empty($keyword)){ $this->ajaxReturn(array('msg'=>'必须输入关键字和回复内容')); } $mp = $this->mp; $data['content'] = $content; $model = M('mp_reply_text'); $ret = $model->add($data); // echo $ret; // exit; if(isset($ret)){ $data1['keyword'] = $keyword; $data1['mpid'] = $mp['id']; $data1['reply_id'] = $ret; $data1['type'] = 'text'; M('mp_rule')->add($data1); $this->ajaxReturn(array('msg'=>'添加成功')); } else{ $this->ajaxReturn(array('msg'=>$ret)); } }
回复图片消息
<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。 |
代码示例:
//自动回复图片 public function addimage(){ $url = I('post.url');//图片在本地服务器上的路径 //相对路径->绝对路径 $file = realpath('.' . $url); $keyword = I('post.keyword'); if(empty($url) || empty($keyword)){ $this->ajaxReturn(array('status'=>0,'msg'=>'必须输入关键字和回复图片')); } $access_token = getAccess_token(); include APP_PATH . 'LaneWeChat/lanewechat.php'; //上传永久图片api $api = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$access_token&type=image"; $data['media'] = Curl::addFile($file); $ret = Curl::callWebServer($api,$data,'post',true,false); if(isset($ret['media_id'])){ $data['media_id'] = $ret['media_id']; $data['url'] = $ret['url']; $model = M('mp_reply_image'); $r = $model->add($data); if($r){ $mp = $this->mp; $data['mpid'] = $mp['id']; $data['type'] = 'image'; $data['keyword'] = $keyword; $data['reply_id'] = $r; M('mp_rule')->add($data); $this->ajaxReturn(array('status'=>1,'msg'=>'添加成功')); }else{ $this->ajaxReturn(array('msg'=>$ret)); } }else{ $this->ajaxReturn(array('msg'=>$ret)); } }
回复图文消息
<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 addnews(){ $keyword = I('post.keyword'); $title = I('post.title'); $picurl = I('post.url'); $description = I('post.content'); $url = I('post.content_source_url'); //相对路径->绝对路径 $file = realpath('.' . $picurl); if(empty($picurl) || empty($keyword) || empty($title) || empty($description) || empty($url)){ $this->ajaxReturn(array('status'=>0,'msg'=>'请将信息输入完整')); } $access_token = getAccess_token(); include APP_PATH . 'LaneWeChat/lanewechat.php'; //上传永久图片api $api = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$access_token&type=image"; $data['media'] = '@' . $file; $ret = Curl::callWebServer($api,$data,'post',true,false); if(isset($ret['media_id'])){ $data['picurl'] = $ret['url']; $data['title'] = $title; $data['description'] = $description; $data['url'] = $url; $model = M('mp_reply_news'); $r = $model->add($data); if($r){ $mp = $this->mp; $arr['mpid'] = $mp['id']; $arr['keyword'] = $keyword; $arr['type'] = 'news'; $arr['reply_id'] = $r; M('mp_rule')->add($arr); $this->ajaxReturn(array('status'=>1,'msg'=>'添加成功')); }else{ $this->ajaxReturn(array('msg'=>$ret)); } }else{ $this->ajaxReturn(array('msg'=>$ret)); } }