乐趣区

关于sap:SAP系统和微信集成的系列教程之七使用Redis存储微信用户和公众号的对话记录

这是 Jerry 2020 年的第 88 篇文章,也是汪子熙公众号总共第 269 篇原创文章。

本系列的英文版 Jerry 写作于 2017 年,这个教程总共蕴含十篇文章,发表在 SAP 社区上。

系列目录

(1) 微信开发环境的搭建

(2) 如何通过微信公众号生产 API

(3) 微信用户关注公众号之后,主动在 SAP C4C 零碎创立客户主数据

(4) 如何将 SAP C4C 主数据变动推送给微信公众号

(5) 如何将 SAP UI5 利用嵌入到微信公众号菜单中

(6) 如何通过 OAuth2 获取微信用户信息并显示在 SAP UI5 利用中

(7) 应用 Redis 存储微信用户和公众号的对话记录 (本文)

(8) 微信公众号的地图集成

(9) 如何将微信用户发送到微信公众号的音讯保留到 SAP C4C 零碎

(10) 如何在 SAP C4C 零碎间接回复音讯给微信公众号的订阅者

最近有不少敌人在微信上向我征询 SAP 零碎和微信公众号集成的问题,因而我把过后写的英文版翻译成中文,从新公布在我的公众号上。

须要留神的是,时隔三年,微信公众号的开发流程可能有所变动,请大家自行甄别。和微信公众号集成的零碎,我三年前抉择的是 SAP Cloud for Customer.

本人经营过公众号的敌人们都晓得,粉丝和公众号的对话音讯,只能放弃 5 天。因而就萌发了一个需要:将粉丝和公众号的聊天记录长久化,比方保留到某数据库里,过后能够随时读取进去,进行进一步剖析。

本文会介绍,将粉丝和公众号的对话,保留到 Redis(一个 Key-Value 存储系统) 的实现步骤。

Redis 是一个高性能的 key-value 数据库。redis 的呈现,很大水平弥补了 memcached 这类 key/value 存储的有余,在局部场合能够对关系数据库起到很好的补充作用。它提供了 Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang 等客户端,应用很不便。

Redis 反对主从同步。数据能够从主服务器向任意数量的从服务器上同步,从服务器能够是关联其余从服务器的主服务器。这使得 Redis 可执行单层树复制。存盘能够有意无意的对数据进行写操作。因为齐全实现了公布 / 订阅机制,使得从数据库在任何中央同步树时,可订阅一个频道并接管主服务器残缺的音讯公布记录。同步对读取操作的可扩展性和数据冗余很有帮忙。

首先在微信 app 里同微信公众号对话:

上图展现的微信公众号的智能回复性能,其实现形式,在本系列之前的文章:SAP 零碎和微信集成的系列教程之二:如何通过微信公众号生产 API 里做过介绍。

依照本系列第五篇文章:如何将 SAP UI5 利用嵌入到微信公众号菜单中 里介绍的办法,给公众号削减两个新的菜单:Review 和 Delete.

Review 菜单负责把 Redis 里存储的聊天记录读取进去,展现在微信 app 里;Delete 菜单负责清空 Redis 里的数据。

点击 Review 菜单之后的成果如下图所示:

四个字段的解释:

  • from:音讯的发送方
  • to: 音讯的接管方
  • question:粉丝向公众号提出的问题
  • answer: 公众号调用图灵 API,返回的回答

点了 Delete 菜单之后的成果:聊天记录被清空。

上面是实现步骤。

很多云平台都提供了对 Redis 的反对,这个系列我抉择的云平台是 Heroku.

关上 HeroKu 的 Redis 控制台,从利用列表里抉择要启用 Redis 服务的利用:wechatjerry.

Heroku 默认的 Redis plan:Hobby Dev 仅用于开发用处,完全免费。

点击 Provision 按钮之后,在 Heroku 利用的控制台里,能看到 Redis 曾经呈现在利用 wechatjerry 的 Addons 列表里。

利用变量 REDIS_URL 蕴含了以后可用的 Redis 实例的 url,咱们之后的 nodejs 代码里,会应用这个 url 拜访该 Redis 实例。

调用微信 API 给公众号创立两个新的菜单,Review 和 Delete,应用如下的 payload:

而后在微信音讯服务器实现里,在将回复通过下图第 22 行的 replyMessage 函数推送给微信用户之前,插入 21 行的 conversationLogService 模块的 log 函数调用,将对话记录存储到 Redis 中。

conversationLogService 实现的残缺代码,在我的 Github 上。

外面调用了 nodejs 版的一个开源 Redis 客户端:

https://github.com/NodeRedis/…

最初,实现 Review 和 Delete 公众号菜单的点击响应函数,别离调用 conversationLogService 的 getLog 和 deleteLog 办法,执行对应的 Redis 操作。

本系列的下一篇文章,会介绍如何将地图控件集成到微信公众号中去,感激浏览。

系列目录

(1) 微信开发环境的搭建

(2) 如何通过微信公众号生产 API

(3) 微信用户关注公众号之后,主动在 SAP C4C 零碎创立客户主数据

(4) 如何将 SAP C4C 主数据变动推送给微信公众号

(5) 如何将 SAP UI5 利用嵌入到微信公众号菜单中

(6) 如何通过 OAuth2 获取微信用户信息并显示在 SAP UI5 利用中

(7) 应用 Redis 存储微信用户和公众号的对话记录 (本文)

(8) 微信公众号的地图集成

(9) 如何将微信用户发送到微信公众号的音讯保留到 SAP C4C 零碎

(10) 如何在 SAP C4C 零碎间接回复音讯给微信公众号的订阅者

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

退出移动版