下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

为你解答weiphp调用插件的过程

作者:课课家教育     来源: http://www.kokojia.com点击数:1011发布时间: 2016-11-25 08:00:42

标签: weiphp框架微信开发移动开发

  在前面的文章中有给大家讲解了关于Weiphp的一个简单的介绍,它是基于OneThink开发的,而且我们又知道OneThink是基于ThinkPHP的,因此它的框架是相同的,本文将会假设不了解OneThink的一个情况下,解释weiphp调用插件的过程,有不懂的朋友可以参考一下。

  实际上微信公众平台的应用场景是很少的,比如一些基本的功能基本是:客户端它发送一个消息,比如是:“广州天气”,然后程序对用户发送的消息进行处理,如果是刚好碰到“天气”这个词的话,这样就可以去触发一些消息的一个处理,比如说去调用一些天气预报API,就可以把天气数据用消息方式返回给客户端。

  (需要把注意的是这个消息可以是文本消息,也可以是图文消息,绝大部分应用场景都是如此实现的)。在其它的一些情况下面,也是可通过点击微信公众平台的自定义菜单来实现触发事件的功能,然后是来去打开一些外部的网页。

  综合上面讲的,微信公众平台的应用场景,实际上是很大程度上受限于微信的,但是在WeiPHP上开发微信公众平台,实际上是做一些实用,轻便,好玩的一些小的功能——而WeiPHP它的二次开发的思路也是如此——一般都是通过开发插件的方式来去开发微信公众平台的。

  1.WeiPHP的架构介绍

  一般熟悉TP的MVC架构的人会对WeiPHP的架构总会感觉有一点的疑惑(主要是Controller与Model它们各自承担的一些功能),因此介绍一下它的目录结构是非常有必要的,下面是WeiPHP官方Vote插件的目录介绍,可以参考一下。

为你解答weiphp调用插件的过程_weiphp框架_微信开发_移动开发_课课家

  我们从上图中是可以看出来插件Vote它的目录中有一层MVC,插件根目录下的config.PHP是插件的配置文件,VoteAddon.class.php这个文件是插件Vote的主体文件,它继承自Common\\Controller\\Addon\\Addon.class.php所以它需要实现install和uninstall两个方法。

  在View层里它是有几个视图,这里页面实际上是有几种的,首先第一个是微信管理员在后台的页面,第二个是用户在微信端用微信浏览器打开看到的用户界面,它们都是放在view里面的。

  Controller层它是与我们原先理解的Controller差不多的意思,首先是对于投票的一个插件,它是需要实现一些控制层逻辑。但有一点需要注意的是,在这个Controller层,它是并不负责处理微信端口的消息处理与消息的一个返回,这是比较疑惑的一点。而且它的命名空间是Home\\Controller\\AddonsController,它是继承自AddonsController类,而不是Think\\Controller,因此它是和TP里熟悉的继承自Controller类的控制层的作用是不同的,感兴趣的可以去翻看AddonsController深入了解。

  Model层里会注意到一个WeixinAddonModel.class.php,我们会发现任何一个插件都有这样一个类,它的作用是负责处理用户消息(接收与返回)的。它继承自Home\\Model的WeixinModel类。而另外的两个Model文件则是传统意义上的数据表的对象实例化,继承自Think的Model类,熟悉TP的一般都是懂的。

  2、图灵机器人聊天插件的介绍

  该插件它原本是WeiPHP2.0中的,它原插件是采用图灵机器人提供的API,如果是艾逗乐园版本采用了curl模拟请求的方式,但是由于图灵官方的API做了一些更改导致二者都不能是正常的去使用。下面将通过分析修改WeiPHP2.0的图灵机器人插件的bug,感兴趣可以学习一下。

  分析一下这个插件的实现方式——

  当用户从微信客户端发送一条消息,

  WeiPHP它是通过关键词遍历插件,搜索这条消息是否触发某个插件

  如果没有触发,它就会把这个消息分发给自动回复插件处理

  当自动回复插件里没有这条信息的关键词记录,最后该消息就会被分发给Chat插件(这里消息处理的顺序可以查看Home\\Controller\\WeixinController.class.php,注意到248-250行)

运行代码

  实际上它就是执行了插件Model目录下WeixinAddonModel.class.php的reply方法。

  我们首先在管理员管理插件的页面点击“快速创建”看到下图所示的代码:

代码显示

  看到上图的代码,我们会发现WeiPHP它是帮我们在Addons\\Chat目录下搭建好一个插件的基本结构了。因此我们在这时候主要是去观察WeixinAddonModel.class.php代码中的reply()方法(只关注图灵机器人API的调用,那么其它几个只能聊天机器人因为已经开始收费了)。

  可以注意到传入reply方法有两个数组,一个是dataArr,dataArr[‘Content’]它就是用户向微信客户端发送的消息内容;而另一个是$keywordArr。

  在turingApi方法的作用,它是向图灵Api发送get的一个请求,然后是获取返回的聊天内容内容,它的代码结构是很简单的,对返回各种状态码进行不同的处理,在此就不粘贴详细的代码了,其中的关键是file_get_contents用于get请求。源代码中对错误码的判断有一点小错误,只需要把其中的

  if($result['code']>40000)改成if($result['code']>40000&&$result['code']<40008)这样就行了。

  weiphp调用插件的过程是一个复杂得过程,刚入门学习的朋友们或者会对这些数组。程序有一点的不懂,随着对微信开发的不断深入,也将会更加的熟悉。

赞(22)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程