100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 微信公众号二次开发实现自动回复文字 图片 图文功能

微信公众号二次开发实现自动回复文字 图片 图文功能

时间:2022-03-16 06:36:10

相关推荐

微信公众号二次开发实现自动回复文字 图片 图文功能

微信公众号二次开发实现自动回复文字,图片,图文功能

自动回复文字或图片:

表单里需要有关键字和内容。但就这两个字段也需要在两个数据表里分别显示,因为要提前准备字段内容里有可能是图片,图文等等类型。所以数据库里需要建一个回复类型表:例如mp_reply_text,mp_reply_image,mp_reply_news....,另一个建立公众号响应规则表:例如mp_reply_rule。这两个表之间的关联是:(如果主键是自动增长型 成功后返回值就是最新插入的值(返回的是主键值)。例如mp_reply_text里添加文字内容成功之后返回的主键值是reply_id。则在mp_reply_rule表里也建一个reply_id,让mp_reply_text表里的reply_id赋值给mp_reply_rule表里的reply_id。就此联系起来。

具体代码如下:

$content = I('post.content');$arr['content'] = $content;$replyid = M('mp_reply_text')->add($arr);if ($replyid) {$mp = getCurrentMp();$arr['mp_id'] = $mp['id'];$arr['type'] = 'text';$arr['keyword'] = I('keyword');$arr['reply_id'] = $replyid;$result =M('mp_rule')->add($arr);}

自动回复图文:

在实现自动回复图文功能中,让我最晕的是获取图片在微信里的url而不是本地的url,所以对我来说这个需要注意。但也不是大问题。跟实现自动回复图文和文字的逻辑差不多。不同的就是自动回复图片需要获得的是微信中的media_id,而自动回复图文需要获得的是微信中图片的url。(还得调用use LaneWeChat\Core\Curl才可以获得微信公众平台里的media_id和url)。

最后如果想要在公众号平台测试是否成功,还需要引用LaneWeChat文件夹里的WechatRequest类中的操作方法。

public static function text(&$request){// $content = '收到文本消息';// return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);//获取那个公众号发过来的请求$mpid=$_GET['id'];$content=$request['content'];$where['mp_id']=$mpid;$where['keyword']=$content;$data=M('mp_rule')->where($where)->find();if($data){//发送请求中有这个关键字$reply_id=$data['reply_id'];$type=$data['type'];//回复类型//判断回复类型switch($type){case 'text':$reply=M('mp_reply_text')->find($reply_id);if($reply){$reply_text=$reply['content'];}else{$reply_text='出错啦';}return ResponsePassive::text($request['fromusername'],$request['tousername'],$reply_text);break;case 'image':$reply = M('mp_reply_image')->find($reply_id);if($reply){$media_id = $reply['media_id'];return ResponsePassive::image($request['fromusername'],$request['tousername'],$media_id);}else{$reply_text = "出错啦";return ResponsePassive::text($request['fromusername'], $request['tousername'], $reply_text);}break;case 'news':$reply=M('mp_reply_news')->find($reply_id);if($reply){$item[]=ResponsePassive::newsItem($reply['title'],$reply['description'],$reply['picurl'],$reply['url']);return ResponsePassive::news($request['fromusername'],$request['tousername'],$item);}else{$reply_text='出错啦';return ResponsePassive::text($request['fromusername'],$request['tousername'],$reply_text);}break;default:return 'success';break;}}else{return 'success';}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。