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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,经济版 1GB 1个月
简介: 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天。因此就萌生了一个需求:将粉丝和公众号的聊天记录持久化,比如保存到某数据库里,过后可以随时读取出来,进行进一步分析。


image.png本文会介绍,将粉丝和公众号的对话,保存到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里同微信公众号对话:


image.pngimage.png上图展示的微信公众号的智能回复功能,其实现方式,在本系列之前的文章:SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API 里做过介绍。


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


image.pngimage.pngReview菜单负责把Redis里存储的聊天记录读取出来,展示在微信app里;Delete菜单负责清空Redis里的数据。

点击Review菜单之后的效果如下图所示:image.pngimage.pngimage.png四个字段的解释:

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

点了Delete菜单之后的效果:聊天记录被清空。image.pngimage.png面是实现步骤。

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

打开HeroKu的Redis控制台,从应用列表里选择要启用Redis服务的应用:wechatjerry.image.pngHeroku默认的Redis plan:Hobby Dev仅用于开发用途,完全免费。image.png点击Provision按钮之后,在Heroku应用的控制台里,能看到Redis已经出现在应用wechatjerry的Addons列表里。image.png应用变量REDIS_URL包含了当前可用的Redis实例的url,我们之后的nodejs代码里,会使用这个url访问该Redis实例image.png调用微信API给公众号创建两个新的菜单,Review和Delete,使用如下的payload:image.png然后在微信消息服务器实现里,在将回复通过下图第22行的replyMessage函数推送给微信用户之前,插入21行的conversationLogService模块的log函数调用,将对话记录存储到Redis中。image.pngconversationLogService实现的完整代码,在我的Github上。

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

https://github.com/NodeRedis/node-redisconversationLogService实现的完整代码,image.png本系列的下一篇文章,会介绍如何将地图控件集成到微信公众号中去,感谢阅读。


系列目录

(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系统直接回复消息给微信公众号的订阅者


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7天前
|
存储 NoSQL Java
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
|
16天前
|
NoSQL Redis
redis集群教程
redis集群教程
|
19天前
|
NoSQL Redis Windows
win10下Redis安装、启动教程
win10下Redis安装、启动教程
21 2
|
28天前
|
存储 消息中间件 缓存
Redis:内存数据存储与缓存系统的技术探索
**Redis 概述与最佳实践** Redis,全称Remote Dictionary Server,是流行的内存数据结构存储系统,常用于数据库、缓存和消息中介。它支持字符串、哈希、列表等数据结构,并具备持久化、主从复制、集群部署及发布/订阅功能。Redis适用于缓存系统、计数器、消息队列、分布式锁和实时系统等场景。最佳实践包括选择合适的数据结构、优化缓存策略、监控调优、主从复制与集群部署以及确保安全配置。
25 3
|
27天前
|
DataWorks NoSQL Java
DataWorks操作报错合集之数据集成使用公共数据集成资源组写入到redis数据源(使用的是VPC连接),提示以下错误:request action:[InnerVpcGrantVpcInstanceAccessToApp], message:[InvalidInstanceId.怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
9天前
|
缓存 NoSQL Java
Spring Boot与Redis集成的最佳实践
Spring Boot与Redis集成的最佳实践
|
9天前
|
缓存 NoSQL Java
pring Boot与Redis集成的最佳实践
pring Boot与Redis集成的最佳实践
|
10天前
|
缓存 NoSQL Java
Spring Boot2 系列教程(二十九)Spring Boot 整合 Redis
Spring Boot2 系列教程(二十九)Spring Boot 整合 Redis
|
17天前
|
NoSQL Java Redis
Spring Boot2 系列教程(二十六)Spring Boot 整合 Redis
Spring Boot2 系列教程(二十六)Spring Boot 整合 Redis
|
1月前
|
NoSQL Java 网络安全
Redis在java(Maven)中使用,常用基本命令大全,最全Termius怎么进行端口映射(MAC系统最简单教学)
Redis在java(Maven)中使用,常用基本命令大全,最全Termius怎么进行端口映射(MAC系统最简单教学)