微信第三平台开发笔记(2)常用服务本地自定义接口开发

微信开发 CN-P5 1349℃ 0评论

微赞(或者微动力4.X之后的版本)在后台看是可以支持简单的api的,在不需要数据库处理处理、不需要复杂的关键字规则的情况下我们可以选择开发自定义接口来扩充微赞的功能并不一定要用牛刀杀鸡去选择开发复杂的addon模块。自定义接口实际返回给系统的是标准的微信api需求的xml数据,本地的常用服务和远程的接口都是一样。而获取的是微赞系统传递来的标准的微信api数据。如此微赞就可以通过这个接口对接本地的服务或者远程的接口了。

本地文件扩展非常适合于简单的 Web 抓取处理的场景。这种场景不需要复杂的业务处理,但是需要请求 Web 获取内容,并将内容处理为合适的格式返回给公众平台。例如系统自带的天气预报, 快递查询等。这些接口PHP 文件的执行环境位于 WeModuleProcessor 对象的 respond() 函数中(具体可以详细研究\framework\builtin\userapi\processor.php),被直接 include 并获得返回值后返回给公众平台。因此可以直接使用 $this→message 成员变量来获取公共平台发送过来的消息内容。同样可以在接口PHP中使用 $this→beginContext() 和 $this→endContext() 来处理上下文锁定, 与模块中的处理不同之处在于在文件扩展中使用上下文锁定将会将会话锁定至当前的文件扩展中。返回结果时, 在接口PHP文件中直接使用 return 语句。返回的结构与 WeModuleProcessor 对象的 respond() 函数返回值相同。

参见上次的笔记《微信第三平台开发笔记(1)目录结构》在\framework\builtin\userapi\api目录下的几个文件就是我们从后台看见的几个常用服务,如下图:

userapi-1.png

以简单的网易新闻(news.php)为例分析自定义接口:

news1.png

可以看见自定义接口的几个跟模块不一样的特征:

  1. 不需要处理关键字、导航、规则等
  2. 不用复杂的代码去处理类似模块的系统逻辑

  3. 直接用return返回数据就能被转发到微信客户端

  4. 直接在一个文件里实现功能代码

  5. 定义触发关键字后你的接口获取到的依旧是全部的消息

PS:第5条特征的意思举个栗子来看:如果后台添加触发关键字“电影”交给movie.php处理,用户在微信发送“电影 小时代”后,movie.php接收的数据就是“电影 小时代”不会自动帮你处理掉关键字。这样有个好处就是可以把某些关键字触发到一个自定义接口用来处理全部的此类数据,把这条规则的优先级降到最低后可以用来弥补做聊天机器人时机器人不能处理的或者处理的不好的语句。

返回数据的return可以返回微信平台上的全部数据类型,例如返回图文的$this->respNews($news)、返回文字的$this->respText等,其他音乐、语音、视频可以查看\framework\builtin\userapi\processor.php文件。

如此就可以写个最简单的实例了:

<?php 
$news = array();
$news[] = array(
    'title' => $this->message['content'].'-黑白的自留地',
    'description' => '黑白的自留地 系列微信开发笔记',
    'picurl' => 'http://www.des8.com/wp-content/uploads/2015/07/1436676281764735.jpg',
    'url' => 'http://www.des8.com'
);
return $this->respNews($news);

把这段代码保存为\framework\builtin\userapi\api\test.php,然后在后台添加相应规则如下:

<

p style=”text-align: center;”>userapi-2.png

然后去微信公众号发送”测试接口“就能看见效果了。

个人笔记仓促而成,抛砖引玉希望大家能多多分享自己的研究。如有不足请留言指正,感谢。

转载请注明:黑白的自留地 » 微信第三平台开发笔记(2)常用服务本地自定义接口开发

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址