当前位置: 首页 > 后端技术 > Node.js

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

时间:2023-04-03 14:48:03 Node.js

SAP系统与微信集成系列教程之第七篇:使用Redis存储微信用户与公众号公众号的对话记录这是Jerry在2020年的第88篇文章,也是王子熙一共第269篇原创文章。本系列英文版由Jerry于2017年撰写,本教程共十篇,发布于SAP社区。系列目录(一)搭建微信开发环境(二)如何通过微信消费API公众号(三)微信用户关注公众号后,SAPC4C系统会自动创建客户主数据(四)如何使用导入SAPC4C主数据推送修改到微信公众号(五)如何将SAPUI5应用嵌入微信公众号菜单(六)如何通过OAuth2获取微信用户信息并显示在SAPUI5应用中(七)使用Redis存储微信用户和公众号的对话记录(本文)(八)微信公众号的地图集成(九)如何将微信用户发给微信公众号的消息保存到SAPC4C系统(10)SAPC4C系统如何直接回复微信订阅者的消息公众号最近微信上有很多朋友问我关于SAP系统和微信整合的问题公众号,所以我翻译了当时写的英文版时间变成中文并重新发布在我的公众号上。需要注意的是,时隔三年,微信公众号的开发流程可能已经发生变化,请自行辨别。对于集成微信公众号的系统,三年前我选择了SAPCloudforCustomer。自己操作过公众号的朋友都知道,粉丝和公众号的对话信息只能保留5天。于是,诞生了一个需求:将粉丝和公众号的聊天记录持久化,比如保存在数据库中,以后可以随时读取出来做进一步分析。这篇文章将介绍粉丝和公众号对话,保存到Redis(一个Key-Value存储系统)的执行步骤。Redis是一个高性能的键值数据库。redis的出现很大程度上弥补了memcached等key/value存储的不足,在某些场合可以对关系型数据库起到很好的补充作用。它提供了Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等客户端,使用起来非常方便。Redis支持主从同步。数据可以从主服务器同步到任意数量的从服务器,从服务器可以是关联其他从服务器的主服务器。这使Redis可以执行单级树复制。存储可以有意或无意地写入数据。由于完全实现了发布/订阅机制,当树从数据库同步到任何地方时,它可以订阅一个频道并接收到主服务器的完整消息发布记录。同步有助于读取操作的可伸缩性和数据冗余。一、在微信app中与微信公众号对话:上图微信公众号的智能回复功能,及其实现方法,在本系列上一篇文章:SAP系统教程之二及微信集成:如何使用微信公众号消费API已介绍。根据本系列第五篇:SAPUI5应用如何嵌入微信公众号菜单,在公众号中新增两个菜单:审核和删除。Review菜单负责将存储在Redis中的聊天记录读出并显示在微信小程序中;删除菜单负责清除Redis中的数据。点击Review菜单后的效果如下图:四个字段的解释:from:消息的发送者to:消息的接收者question:粉丝问的问题to公众号answer:公众号调用TuringAPI,点击删除菜单后返回的response是效果:聊天记录被清空。下面是实现步骤。许多云平台都提供对Redis的支持。本系列我选择的云平台是Heroku。打开HeroKu的Redis控制台,在应用列表中选择需要开启Redis服务的应用:wechatjerry。Heroku默认的Redis计划:HobbyDev仅供开发使用,完全免费。点击Provision按钮后,在Heroku应用的控制台中,可以看到Redis已经出现在应用wechatjerry的Addons列表中。应用程序变量REDIS_URL包含当前可用的Redis实例的url,我们将在后续的nodejs代码中使用此url访问Redis实例。调用微信API为公众号创建两个新菜单Review和Delete,使用如下payload:然后在微信消息服务器实现中,在通过下图第22行的replyMessage函数推送回复给微信用户之前,insert第21行的conversationLogService模块的log函数调用,将会话记录存储在Redis中。conversationLogService实现的完整代码在我的Github上。调用一个nodejs版本的开源Redis客户端:https://github.com/NodeRedis/...最后实现Review和Delete公众号菜单的点击响应功能,调用conversationLogService分别执行相应的Redis操作。本系列下一篇文章将介绍如何将地图控件集成到微信中公众号,感谢阅读。系列目录(一)搭建微信开发环境(二)如何通过微信消费API公众号(三)微信用户关注公众号后,SAPC4C系统会自动创建客户主数据(四)如何使用导入SAPC4C主数据推送修改到微信公众号(五)如何将SAPUI5应用嵌入微信公众号菜单(六)如何通过OAuth2获取微信用户信息并显示在SAPUI5应用中(七)使用Redis存储微信用户和公众号的对话记录(本文)(八)微信公众号的地图集成(九)如何将微信用户发给微信公众号的消息保存到SAPC4C系统(10)如何在SAPC4C系统微信中直接回复消息公众号订阅者更多杰瑞原创文章,尽在:《王子熙》: