使用Drupal8 + wechat模块,配置微信服务号

  作者: 老葛 亚艾元软件

我们这里主要讲解,微信服务号“亚艾元象棋”的配置。“亚艾元象棋”的前身是“亚艾元培训”,再前面是“老葛的Drupal培训班”,因为名字的原因,从最初的名字改为了“亚艾元培训”,最近将其改为“亚艾元象棋”。我们想做一个网站,能够充分的说明我们的技术,同时又具有实用性。加上我本人一直是一名象棋的爱好者,所以以象棋棋谱网站为例,作为Drupal制作网站的示例。

 

首先,前期的准备工作,一个是需要申请一个微信服务号,https://mp.weixin.qq.com/,微信公众号的注册申请,我们这里就略过了;申请完了以后,要通过认证,说白了是给微信缴纳300元的认证费,如果不认证的话,基本上是没有接口权限的,后面的工作就做不了。

 

认证完了以后,我们需要制作一个Drupal网站,注意这里是Drupal,而且是Drupal8。如果你现在刚开始学习Drupal,建议你学习Drupal8,因为Drupal7还是10年前的技术,整体架构已经落伍了不少;从Drupal7Drupal8的升级很痛苦,但是从Drupal8Drupal9的升级会很平滑。我们的亚艾元象棋网,已经初步搭建完毕。运行的环境:nginxphp7.1mysqlcentos7

我们从drupal官网上下载微信模块wechat模块,下载地址:

https://www.drupal.org/project/wechat,注意下载8.x-1.0-beta3或者更高版本。

下载完毕,将其解压缩,传到网站的modules目录。导航到:admin/modules页面,找到微信模块,在前面的复选框中,将对应模块选中。

8-1-1.png 

                       8-1-1

    这里有3个模块,wechatwechat menuwechat default config,熟悉了以后,其实第3个模块可以不用启用的,自己配置即可。wechat default config只是为了降低初学者的配置成本,给出来的一个默认配置。wechat default config模块依赖于image url formatter模块。

 

导航到admin/wechat/config/default

8-1-2.png 

                        8-1-2

 

这里需要设置Token AppIDAppSecret,将来还需要设置EncodingAESKey,在后面的版本中,将会增加这个配置选项。这些配置选项,除了Token ,是自己的设定的以外,AppIDAppSecret都是微信公众平台提供的。

登陆微信公众平台,https://mp.weixin.qq.com/,点击右边菜单的“开发”---“基本设置”

 

 

8-1-3.png 

                             8-1-3

    我们会看到如下所示的界面

8-1-4.png 

 

 

8-1-4

从这里获取AppIDAppSecret。注意这里的IP白名单设置,需要将我们网站的公网IP地址,填到这里。

 

 

 8-1-5.png

 

                          8-1-5

IP白名单,是微信后面新增的一个安全限制,开始的时候没有。微信是一个一致在进入的系统。

8-1-6.png 

                          8-1-6

如果这里没有启用的话,需要启用,并填写或者修改这里的配置。注意服务器地址:

http://chess.yaiyuan.com/wechat,域名+内部路径,我们的内部路径为wechatDrupal端,对应配置配置好后,这里的配置也做对应修改。TokenDrupal端,微信公众号后台,需要保持一致。注意,wechat模块,暂时只支持明文模式,后续版本将会支持安全模式。所以目前只能选择明文模式。

这里保存设置,保存成功表示Drupal端与微信公众号后端通信成功;如果失败,请检查白名单是否设置,已经各项设置是否正确。


Drupal版本:

B,微信菜单的配置

  作者: 老葛 亚艾元软件

我们导航到admin/wechat/config/menu,这是我的配置:

8-1-7.png

                         8-1-7

 

微信菜单:最多两级,一级菜单最多3个,一菜单下属二级菜单最多5个。

   点击上面的添加按钮,进入页面admin/wechat/config/menu/add

 

 8-1-8.png

8-1-8

 

如果是一级菜单的话,只需要输入名字,选中父按钮即可。

8-1-9.png 

8-1-9

     如果是二级菜单的话,需要选择所属的父级菜单:

8-1-10.png 

8-1-10

 

对于菜单类型,包含以下选项:

8-1-11.png 

8-1-11

点击推事件、跳转URL、扫码推事件、扫码推事件且弹出“消息接收中”提示框、弹出系统拍照发图、弹出拍照或者相册发图、弹出微信相册发图器、弹出地理位置选择器。常用的是点击推事件、跳转URL

点击推事件的示例配置:

8-1-12.png 

8-1-12

 

跳转URL的示例配置:

8-1-13.png 

8-1-13

 

跳转URL,就是输入一个URL的绝对路径,这里需要注意的是,路径里面参数的值带有网址的话,需要url_encode一下,进行转义,最初不转义也可以工作,现在不行了。

 

我们使用权重,控制菜单项的相对位置,从小到大排列。在微信菜单的管理界面,我们没有实现可以拖拽调整顺序的效果,只能通过每个菜单项的权重进行调整。

 

这里,需要着说明的是,点击推事件的配置:

8-1-14.png 

8-1-14

Drupal里面处理列表都是用的视图(Views),对于微信里面的图文消息,wechat模块使用views对它进行相应,所以这里需要输入视图的机读名字、显示的机读名字,还有参数。

微信菜单推事件、微信默认搜索,这两个地方默认使用views进行响应。我们在wechat模块里面,实现了wechat response这个显示类型。这里我们看一下,我们views的具体配置,对于他们含义的详细讲解,参考后面的微信搜索的配置。

8-1-15.png 

8-1-15

我们需要构建一个entity的绝对路径,一种方式是使用wechat模块提供的:

Global: Entity absolute url

 

8-1-16.png 

8-1-16

一种是views自带的,覆写输出的形式:

8-1-17.png 

8-1-17

视图参数,我们用的分类术语,传递的是术语的tid,导航到分类页面,找到对应的分类术语,鼠标移动上去,地址里面的/taxonomy/term/[tid],这里可以获得tid。就是向views传递的参数。

 

8-1-18.png 

8-1-18

 

  就是微信菜单项里面对应的参数。

8-1-19.png 

8-1-19


Drupal版本:

C,搜索的实现

  作者: 老葛 亚艾元软件

在微信的配置界面,找到“微信默认搜索”配置项:

8-1-20.png 

8-1-20

  点击,进入页面:admin/wechat/config/default_search,我们看到

 

8-1-21.png 

8-1-21

这里我们需要弄明白,每个配置项的含义,如果你熟悉views的话,那么很简单。

Views name: 视图的机读名字

Views display: 显示的机读名字

过滤器标识符: 全文搜索对应字段的标识(机读名字)

 

admin/structure/views views的管理界面,找到上面的配置对应的视图

 

8-1-22.png 

8-1-22

 

Views的机读名字:

8-1-23.png 

8-1-23

可以在路径里面获取。

 

8-1-24.png 

8-1-24

再打开的视图的配置界面,点击上面的wechat response”。

Display的名字,也可以在URL里面找到:

 8-1-25.png

8-1-25

也可以在views的高级配置里面找到:

8-1-26.png 

8-1-26

前面这两个相对简单一点,过滤器标识符,需要特别熟悉Drupal的人才会知道,我们这里给出它对应的位置,看这里:

8-1-27.png 

8-1-27

  点击过滤条件Search:全文搜索”, 或者你使用的搜索条件。我们看到这样的弹出框。

8-1-28.png 

8-1-28

这个还是比较熟悉的,我们往下拉,看到下面的信息:

8-1-29.png 

8-1-29

   过滤器标识符就在这里,它其实是URL参数里面的key

Views里面,全文搜索字段,必须是选中这个复选框的:“把这个过滤条件显示给网站的访问者,允许他们可以更改这个过滤条件。”

微信端的输入,最终传递给了这个过滤条件,这个过滤条件,用来检索用。

 

我们这里面使用的是solrsearch APIsearch api solr, 注意安装的时候使用composercomposer 很多时候需要科学上网。

 

微信模块自带的默认配置,走的是Drupal核心自带搜索,需要启用核心search模块。

 

8-1-30.png 

8-1-30

默认搜索,对于中文来说,下面的配置“索引关键词最小字数”,从3改为1

 

8-1-31.png 

8-1-31

Drupal8下面,改进了一点,不改为1可能也能搜索出来。

 

 

需要注意几点:

 1) display type 必须选择使用 wechat response:

8-1-32.png 

8-1-32

2) 必须做好Views字段与微信消息字段之间的映射关系。点击显示里面的设置。

8-1-33.png

8-1-33

我们看到这样的弹出框。

 

 8-1-34.png 

8-1-34

这里的label名字,是微信官方需要我们提供的。下拉列表里面的字段,是对应views的可用字段。

8-1-35.png 

8-1-35

这里的字段,是在views配置的FIelds里面添加的:

8-1-36.png 

8-1-36

 

   这是另一个映射示例:

 

 

8-1-37.png 

8-1-37

总之这里的映射关系,需要配置好。

3)

显示的项目数量不能超过8。微信的限制:以前是10, 后来改成8了。推荐使用5

8-1-38.png 

 

8-1-38


Drupal版本: