这是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/node-redis

最后,实现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的原创文章,尽在:“汪子熙”:

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

  1. SAP系统和微信集成的系列教程之八:100行代码在微信公众号里集成地图搜索功能

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...

  2. SAP系统和微信集成的系列教程之六:如何通过OAuth2获取微信用户信息并显示在SAP UI5应用中

    这是Jerry 2020年的第87篇文章,也是汪子熙公众号总共第269篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...

  3. SAP系统和微信集成的系列教程之五:如何将SAP UI5应用嵌入到微信公众号菜单中

    这是Jerry 2020年的第86篇文章,也是汪子熙公众号总共第268篇原创文章. 2020年即将到达尾声了. Jerry所在团队的产品经理,已经开始让大家把圣诞节期间的休假情况,维护在公司wiki里 ...

  4. SAP系统和微信集成的系列教程之四:如何将SAP C4C主数据变化推送给微信公众号的关注者

    这是Jerry 2020年的第85篇文章,也是汪子熙公众号总共第267篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...

  5. SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据

    这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...

  6. SAP系统和微信集成的系列教程之一:微信开发环境的搭建

    系列目录 (1) 微信开发环境的搭建 ( 本文 ) (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据 (4) 如何将SAP C4C主数据变化 ...

  7. 公众号向特定用户主动推送消息_SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据...

    这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上: https://blogs ...

  8. sap系统搭建教程_SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户...

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上: https://blogs.sap.com/2017/12/10/wechat-development-ser ...

  9. SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...

最新文章

  1. 下图为双总线结构机器的数据通路_图像采集卡常见的三种总线结构
  2. 真相了 | 敲代码时,程序员戴耳机究竟在听什么?
  3. 【剑指offer-Java版】08旋转数组的最小数字
  4. 进fastreboot
  5. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc
  6. Java二分查找、折半查找
  7. 单例设计模式-饿汉式
  8. python的输入来源包括网络输入法_python可以调用计算机上的输入法进行输入吗?比如调用输入法在其他程序的输入框中写上字符串...
  9. 392. 判断子序列(javascript)
  10. 已经被说“烂”的微服务,到底是个什么鬼?通过拆分实战案例来带你入门。...
  11. oracle销售合同管理,Oracle服务合同管理系统11i
  12. 华三(H3C) H3C5820V2 交换机IOS升级
  13. 使用openfiler配置共享存储(1)——openfiler的安装和配置
  14. url资源(html相关)
  15. C++病毒-----------混乱鼠标
  16. [matlabpython]01——sort排序的相关内容
  17. Chapter7 机器人导航仿真(Ⅰ)----导航实现
  18. 游戏体验之穿越火线手游
  19. admi后台 vue_vue-admin
  20. C语言二维数组内存申请及初始化方法

热门文章

  1. 职业生涯中的愚蠢想法
  2. 自定义LOG投递OSS数据Partition,优化你的计算
  3. Quartz 定时器任务调度
  4. 2.Strings and Console Output(字符串与输出)
  5. java基础----线程
  6. 常用php时间函数 date() mktime() strtotime()
  7. 计算机字符编码详尽讲解
  8. asp.net core 集成 log4net 日志框架
  9. BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈
  10. 【App性能】:TraceView分析法