自动回复这块是比较麻烦的

一、后端回复管理

后端没什么说的,根据微信公众平台的自动回复建表,添加数据即可

需要强调的是 规则、关键词、回复内容需要建三个表

规则表中关键词和回复内容拼接id成字符串 存入表中

二、前端回复逻辑

$this->app->server->push(function($message){switch ($message['MsgType']) {case 'event'://若通过扫描二维码关注if (isset($message['EventKey'])){$class = "\\app\\common\\library\\wechat\\message\\" . ucfirst($message['MsgType']);class_exists($class) && new $class($message);}//关注事件回复$content = db('wx_reply_receive')->where('reply_type=1')->find();switch ($content['content_type']){case 1:$contentStr = $content['content'];$contentStr = $this->replace_str($contentStr);$resultStr = new Text($contentStr);return $resultStr;break;case 2:$contentStr = $content['content_id'];$resultStr = new Image($contentStr);return $resultStr;break;case 3:$contentStr = $content['content_id'];$resultStr = new Voice($contentStr);return $resultStr;break;case 4:$contentStr = $content['content_id'];$resultStr = new Video($contentStr);return $resultStr;break;default:break;}break;//关键词回复case 'text':$keyword = $message['Content'];if(!empty( $keyword )){$where['keyword'] = $keyword;$where['status'] = 1;$content = db('wx_reply')->where($where)->whereBetweenTimeField('start_time','end_time')->select();if (empty($content)){$len = mb_strlen($keyword);if ($len<=15){$words = $this->split_str($keyword);$map[] = array('status','=',1);$map[] = array('keyword','in',$words);$bcont = db('wx_reply')->where($map)->whereBetweenTimeField('start_time','end_time')->select();if (!empty($bcont)){foreach ($bcont as $value){if ($value['matching_mode']==0){if ($value['reply_mode']==0){   //回复方式  全部回复switch ($value['reply_type']){case 1:$contentStr = $value['content'];$contentStr = $this->replace_str($contentStr);$resultStr = new Text($contentStr);return $resultStr;break;case 2:$contentStr = $value['media_id'];$resultStr = new Image($contentStr);return $resultStr;break;case 3:$contentStr = $value['media_id'];$resultStr = new Voice($contentStr);return $resultStr;break;case 4:$contentStr = $value['media_id'];$resultStr = new Video($contentStr);return $resultStr;break;default:break;}}else{switch ($value['reply_type']){case 1:$contentStr = $value['content'];$contentStr = $this->replace_str($contentStr);$resultStr = new Text($contentStr);return $resultStr;break;case 2:$contentStr = $value['media_id'];$resultStr = new Image($contentStr);return $resultStr;break;case 3:$contentStr = $value['media_id'];$resultStr = new Voice($contentStr);return $resultStr;break;case 4:$contentStr = $value['media_id'];$resultStr = new Video($contentStr);return $resultStr;break;default:break;}break;}}}}else{$receive = db('wx_reply_receive')->where('reply_type=0')->find();switch ($receive['content_type']){case 1:$contentStr = $receive['content'];$contentStr = $this->replace_str($contentStr);$resultStr = new Text($contentStr);return $resultStr;break;case 2:$contentStr = $receive['content_id'];$resultStr = new Image($contentStr);return $resultStr;break;case 3:$contentStr = $receive['content_id'];$resultStr = new Voice($contentStr);return $resultStr;break;case 4:$contentStr = $receive['content_id'];$resultStr = new Video($contentStr);return $resultStr;break;default:break;}}}}}break;default:return '收到其它消息';break;}});$this->app->server->serve()->send();

关键词分割

//分解关键词public function split_str($str){$len = strlen($str);// $data = str_split($str);for($i = 1; $i<=$len;$i++){for($j = 0; $j < $len; $j++) {$data[] = mb_substr($str,$j,$i);}}$data = array_unique($data);$data = array_filter($data);return $data;}

处理html标签,包括<p></p>、<br>、&nbsp;等

//微信端显示处理public function replace_str($str){$str = str_replace('<p>','',$str);$str = str_replace('</p>',"\n",$str);$str = str_replace('&nbsp;',"  ",$str);$str = str_replace('<br>',"\n",$str);$str = str_replace('&amp;','&',$str);return $str;}

大体步骤就是这样,业务逻辑根据需求更改即可

微信公众号开发之自动回复相关推荐

  1. java微信自动回复开发,Java微信公众号开发----关键字自动回复消息

    在配置好开发者配置后,本人第一个想要实现的是自动回复消息的功能,说明以下几点: 1. url 仍然不变,还是开发配置里的url 2. 微信采用 xml 格式传输数据 3.微信服务器传给我们的参数主要有 ...

  2. 微信公众号开发——关键词自动回复

    最近忙国赛的一个项目,我得做一个微信公众号.功能就是调数据并回复给用户,需要用户发送给公众号一个关键词,通过关键词自动回复消息. 这时就是查询微信公众平台文档了,地址如下: https://mp.we ...

  3. JAVA微信公众号开发之自动回复消息与图片

    首先,应该建立一个消息与图片的实体,看一下微信公众号的文档: 回复文本消息 <xml> <ToUserName><![CDATA[toUser]]></ToU ...

  4. php 公众号回复天气预报,微信公众号开发天气自动回复

    当用户输入一个地名的时候,回复该地区的当前天气预报.使用的api接口为https://www.sojson.com/open/api/weather/json.shtml?city=北京返回的数据为j ...

  5. 微信公众号开发(总结)

    这一周给大家完整的分享了关于微信公众号开发之自动回复电影的功能实现,这可以说是一个项目了,一个简单的项目,一个用你学到的编程技术所实现的项目,我相信非常多的人刚开始学习编程,都不知道具体它可以怎么样用 ...

  6. 微信公众号自动回复html,[.NET] 简单接入微信公众号开发:实现自动回复

    简单接入微信公众号开发:实现自动回复 一.前提 先申请微信公众号的授权,找到或配置几个关键的信息(开发者ID.开发者密码.IP白名单.令牌和消息加解密密钥等). 二.基本配置信息解读 开发者ID:固定 ...

  7. 微信公众号--开发模式之用户关注后自动回复(Java实现)

    访问我的个人博客 秋码个人博客 微信公众号开发–关注后自动回复(Java记录篇) 最终效果如下:

  8. 微信公众号 开发详解02【自动回复、发布文章、自定义菜单、3种链接跳转】

    [微信公众号--零基础全面系统教学] [P01-P07]微信公众号 开发详解01[目的.起名.准备工作.注册流程.后台功能] [P08-P12]微信公众号 开发详解02[自动回复.发布文章.自定义菜单 ...

  9. 微信公众号php编程,PHP编程:微信公众号开发之文本消息自动回复php代码

    搜索热词 <微信公众号开发之文本消息自动回复PHP代码>要点: 本文介绍了微信公众号开发之文本消息自动回复PHP代码,希望对您有用.如果有疑问,可以联系我们. 本文实例为大家分享了PHP微 ...

最新文章

  1. mfc对话框的二次切分
  2. 如何捕获和分析 JavaScript Error
  3. HandlerThread
  4. [译] Go: 理解 Sync.Pool 的设计
  5. ckeditor java 上传_CKEditor粘贴图片自动上传到服务器(Java版)
  6. Atitit 学习的本质 团队管理与培训的本质 attilax总结 v2
  7. 字节码指令之类型转换指令
  8. 微积分-指数函数求导
  9. 龙卷风路径_“龙卷风”:预判路径 减轻灾害
  10. Visual Studio项目属性配置
  11. ThinkPHP6.0 Session 问题
  12. QMediaplayer播放本地文件mp4失败
  13. AD常用使用快捷键和技巧
  14. 在word修改模式下如何进行修改
  15. 山东二本计算机排名大学最新,2018山东二本大学排名
  16. 如何解决1万个并发连接,用每个客户一个线程的方法
  17. H3C云AP瘦转胖fit转fat超详细图文攻略
  18. Enhancer和MethodInterceptor的需要导入的jar
  19. 无向图最小环——Floyd解法
  20. STM32CubeMX-HAL库开发笔记(常用语句)-基于Proteus仿真

热门文章

  1. kali-curl命令
  2. 【自动微分原理三】自动微分的具体实现
  3. ❤️导图整理数组6:四数组的四数之和,详解Counter类实现哈希表计数,力扣454❤️
  4. 《白话机器学习中的数学》
  5. 管家婆服装 手持终端wince 盘点程序
  6. 陆琪:为什么说爱情中“莫欺少年穷”?《秒懂男人》书摘
  7. 万兆网卡使用注意事项
  8. 安卓手机管理_安卓虚拟机,手机分身,时间管理大师直呼内行
  9. 安培龙冲刺创业板上市:收入依赖美的,邬若军、黎莉夫妇为实控人
  10. Docker容器化技术入门