AI编程生活评测

结合wordpress的REST API实现公众号关键词回复

编程笔记 / 2020-09-01 / 4 min
全球使用量最大的网站系统 wordpress 大概是从4.5内置了 wordpress rest api 的功能,使 wordpress 与其他系统进行集成变得非常方便,这套接口几乎涵盖了日常用到的所有功能。

需求

说回正题,最近上公众号后台发现经常有人直接输入电影名称,大概是想直接查这个电影相关的东西,但是目前公众号只会憨憨的回复用户:“您的消息已经收到,管理员会第一时间联系您。”,然后我并没有时间去查看,当然也没有去联系您。 既然 wordpress 提供了这样一套 rest api 接口可用,而公众号上又有相关的需要,那就集成一下就好了。需求就是根据用户在公众号里的留言,去搜索电影站上的文字 title ,然后返回链接给客户就好了。

实现

首先读一下wordpress rest api文档,找到我们需要的主接口:
curl https://example.com/wp-json/wp/v2/posts
带上一个 search 参数就可以进行关键词检索了:
curl https://example.com/wp-json/wp/v2/posts?search=赎罪
但是这个返回的结果是这样的: 直接使用api检索 与我们需求不太一致,有两个问题:
  1. 关键词匹配了文章的很多属性,包括标题,内容等,所以会匹配出很多我们不需要的文章来,而我们只想搜索标题。
  2. 返回了一篇文章全量的数据,而我们只需要链接,标题即可。

优化检索

解决问题1
我们需要定制一种检索形式,只检索文章的 title 。具体实现步骤:
这样,我们使用自定义的过滤条件 queryByTitle 再发送一个请求试试:
curl https://www.m1910.com/wp-json/wp/v2/posts?filter[queryByTitle]=赎罪
这样的返回才是我们需要的: 只检索文章标题
解决问题2
对于返回字段进行过滤,只需要加入一个 _fields 参数就可以了,这里我们只需要 titlelink 就行了,这样发请求:
curl https://www.m1910.com/wp-json/wp/v2/posts?filter[queryByTitle]=赎罪&_fields=link,title
可以看到,返回变成了我们想要的样子:
[
    {
        link: "https://www.m1910.com/atonement-2007.html",
        title: {
            rendered: "赎罪 Atonement(2007)_结局应该是死亡还是永恒"
        }
    }
]
如果返回多个结果,循环输出就好了。然后把这个优化后的接口集成到公众号的关键词回复中即可。

效果演示

最终效果就是这样的: 公众号效果演示 欢迎关注公众号 hsu1943 测试,输入电影名称进行测试。在懂的人眼里,这篇文章是在送钱! 手上有公众号想实现这个功能的,不会对接公众号实现的,可以联系我,提供收费服务。
部分内容需付费后查看
  1. 严重浪漫 2020-10-17 · 18:08

    路过,并学习一下、

    1. 行星带 2020-10-20 · 09:37

      互访互访,哈哈哈哈

  2. 发泡鲸 2020-10-09 · 13:06

    在懂代码的博主手里,微信公众号也变得好玩多了。

    1. 行星带 2020-10-13 · 17:30

      沦为一个试验田,哈哈哈哈

  3. wys 2020-09-18 · 17:15

    省些维护公众号的时间了,牛。

    1. 行星带 2020-09-21 · 10:10

      这个公众号沦为实验品,没时间维护它,惨兮兮

  4. 寻小山 2020-09-07 · 20:59

    这个功能好,在公众号里面怎么设置?

    1. 行星带 2020-09-08 · 09:23

      公众号开发里面打开服务器配置。
      思路就是在服务端接受公众号的推送,根据推送的消息(用户发送的消息)使用微信提供的API去自动回复用户就好了。

正在处理,请稍候 . . .