该接口对应的文件为Com/Wechat.class.php, 主要用户接收微信推送过来的用户数据并自动回复。

注意:识别和分析用户发送的内容,并提供回复内容需要开发者更具实际情况自己实现,本接口值提供获取用户数据和自动回复方法。

执行流程

  1. 实例化WeChat类,并传入在微信后台填写的token $wechat = new Wechat($token);
  2. 接收微信服务器推送的数据 $data = $wechat->request();
  3. 分析数据,决定要做出什么样的回复 (由开发者自己实现)
  4. 回复消息 $wechat->response($content, $type);

注意:在微信后台填写 TOKEN 和 URL 时验证Token的逻辑已经在Wechat类里面实现,你完全不需要考虑认证的情况。只需要保证微信服务器能正常访问到你所提供的URL,且该 URL对应的Controller里实例化了 Wechat 类就可以了。

示例代码

  1. $token = ''; //微信后台填写的TOKEN
  2. /* 加载微信SDK */
  3. $wechat = new Wechat($token);
  4. /* 获取请求信息 */
  5. $data = $wechat->request();
  6. if($data && is_array($data)){
  7. //在这里你可以分析用户发送过来的数据来决定需要做出什么样的回复
  8. $content = ''; //回复内容,回复不同类型消息,内容的格式有所不同
  9. $type = ''; //回复消息的类型
  10. /* 响应当前请求(自动回复) */
  11. $wechat->response($content, $type);
  12. }

接收到的消息类型

接受到的信息类型有9种,分别使用下面九个常量标识

  • Wechat::MSG_TYPE_TEXT //文本消息
  • Wechat::MSG_TYPE_IMAGE //图片消息
  • Wechat::MSG_TYPE_VOICE //音频消息
  • Wechat::MSG_TYPE_VIDEO //视频消息
  • Wechat::MSG_TYPE_MUSIC //音乐消息
  • Wechat::MSG_TYPE_NEWS //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
  • Wechat::MSG_TYPE_LOCATION //位置消息
  • Wechat::MSG_TYPE_LINK //连接消息
  • Wechat::MSG_TYPE_EVENT //事件消息

事件消息又分为下面五种

  • Wechat::MSG_EVENT_SUBSCRIBE //订阅
  • Wechat::MSG_EVENT_SCAN //二维码扫描
  • Wechat::MSG_EVENT_LOCATION //报告位置
  • Wechat::MSG_EVENT_CLICK //菜单点击
  • Wechat::MSG_EVENT_MASSSENDJOBFINISH //群发消息成功

自动回复消息

识别用户发送的消息,通过相关程序处理后,决定要给用户回复什么样的数据,可以调用 $wechat->response($content, $type); 进行回复。 其中,$content为回复的内容,$type为回复的消息类型。不同类型的消息,$content的数据结构有所不同。

文本消息:

  1. //当回复文本消息时$content为字符串
  2. $content='回复的文本消息';

图片消息:

  1. //当回复图片消息时$content为图片ID
  2. //图片ID是通过 WechatAuth 的 mediaUpload 接口上传的图片ID
  3. $content=$midea_id;

音频消息:

  1. //当回复音频消息时$content为音频ID
  2. //音频ID是通过 WechatAuth 的 mediaUpload 接口上传的音频ID
  3. $content=$midea_id;

视频消息:

  1. //当回复视频消息时$content为一维数组
  2. //array($media_id, $title, $description)
  3. //$media_id WechatAuth 的 mediaUpload 接口上传的视频ID
  4. //$title 视频标题
  5. //$description 视频说明
  6. $content=array($media_id, $title, $description);

音乐消息:

  1. //当回复音乐消息时$content为一维数组
  2. //array($title, $description, $musicurl, $hqmusicurl, $thumb_media_id)
  3. //$title //音乐名称
  4. //$description //音乐说明
  5. //$musicurl //普通音质 mp3 url
  6. //$hqmusicurl //高品质 mp3 url
  7. //$thumb_media_id //缩略图ID
  8. $content=array($title, $description, $musicurl, $hqmusicurl, $thumb_media_id);

图文消息:

  1. //当回复图文消息时$content为二维数组
  2. //array($news, $news1, $news2, ..., $news9);
  3. //注意:微信规定,一条消息最多只能发送10条图文信息
  4. //每条消息的结构如下
  5. //$news=array($title, $description, $url, $thumb_media_id);
  6. //$title //新闻标题
  7. //$description //新闻简介
  8. //$url //新闻原文URL
  9. //$thumb_media_id //缩略图ID
  10. $content=array(
  11. array($title, $description, $url, $thumb_media_id),
  12. array($title1, $description1, $url1, $thumb_media_id1),
  13. array($title2, $description2, $url2, $thumb_media_id2),
  14. ...
  15. array($title9, $description9, $url9, $thumb_media_id9),
  16. );

thinkphp wechat的更多相关文章

  1. Thinkphp框架----微信公众测试号开发

    最开始的一个步骤.注册一个微信公众测试号.URL:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login; 接口配置的信息,对新手 ...

  2. thinkphp 开发的获取用户信息

    <?php namespace Home\Controller; use Think\Controller; use Com\Wechat; use Com\WechatAuth; class ...

  3. thinkphp微信开发:安全模式消息加解密

    使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. TRight 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解 ...

  4. 一个基于thinkphp的微信授权登陆功能

    共享一份基于thinkphp开发的用户授权登陆的功能代码,本实例使用thinkphp的第三方微信公众平台PHP-SDK,地址https://github.com/dodgepudding/wechat ...

  5. 【TP3.2.X】(同样适用于OT) 设置单入口index.php文件,区分PC/WAP/Wechat 三个终端

    1.目的:本教程适用于 OneThink1.0.或者TP3.2.X 系列,达到单入口index.php文件,区分PC/WAP/Wechat 三个终端 2.启发至 : http://www.thinkp ...

  6. thinkphp微信开发(消息加密解密)

    使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解密文件和Wec ...

  7. overtrue/wechat 包 由 sys_get_temp_dir 引发的 the directory "c:\Windows" is not writable

    vendor\overtrue\wechat\src\Foundation\Application.php registerBase 方法 在初始化属性时 $this['cache'] = funct ...

  8. 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP)

    wechat github 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP) 概述 公众号开发是痛苦的,痛苦在好多问题开发者文档是没有提到的,是需要你猜的. 在开发过程中 ...

  9. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

随机推荐

  1. Hashtable、HashMap、TreeMap、ConcurrentHashMap、ConcurrentSkipListMap区别

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444013.html 并发场景下的Map容器使用场景 如果对数据有强一致要求,则需使用Hashtab ...

  2. centos7.5部署ELk

    第1章 环境规划 1.1 ELK介绍       ELK是ElasticSerach.Logstash.Kibana三款产品名称的首字母集合,用于日志的搜集和搜索.      Elasticsearc ...

  3. winform 控件拖拽和缩放

    核心类: using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using ...

  4. delphi 获取系统注册的文件图标

    var Icon:TICON; Key : string; App : string; Index : Integer; begin FileName:=Edit6.Text; then begin ...

  5. nginx防止SQL注入规则

    $request_uriThis variable is equal to the *original* request URI as received from the client includi ...

  6. 10个优秀的 Web UI库/框架

    UI(User Interface)即用户界面,也称人机界面.是指用户和某些系统进行交互方法的集合,实现信息的内部形式与人类可以接受形式之间的转换.本文为WUI用户整理了10个优秀的 Web UI 库 ...

  7. tomcat设置deploy部署文件位置

    参考: https://blog.csdn.net/xiaojiang167168/article/details/25330899 一.较新版本的eclipse中,Tomcat设置之后,项目部署.编 ...

  8. django更换默认数据库sqlite3为pymsql后出现Keyerror:255的解决办法----升级PyMySQL

    一.更换数据库的办法: 1.安装PyMySQL 2.修改project目录同名文件下的settings.py:DATABASES = { 'default': { # 'ENGINE': 'djang ...

  9. ylbtech-公司-滴滴出行:滴滴出行

    ylbtech-公司-滴滴出行:滴滴出行 滴滴出行是涵盖出租车. 专车.  滴滴快车.  顺风车. 代驾及 大巴等多项业务在内的一站式出行平台,2015年9月9日由“滴滴打车”更名而来. 2月1日起, ...

  10. VTemplate模板引擎的使用--高级篇

    VTemplate模板引擎的使用--高级篇 在网站中,经常会有某个栏目的数据在多个页面同时使用到.比如新闻网站或电子商务网站的栏目列表,几乎在很多页面都会显示栏目导航.对于这种多个页面同时使用到的“数 ...