企业级应用系统和微信集成的系列教程之四:如何将 CRM 云系统主数据变化推送给微信公众号的关注者
最近有不少朋友在微信上向我咨询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.
这个系列的前一篇文章,微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据,我们已经实现了这样一个场景:微信用户关注公众号之后,在SAP Cloud for Customer(以下简称C4C)系统里自动创建一个客户主数据,并把该数据的Last Name字段设置成关注者的Wechat id.
成功创建的C4C客户主数据的id也会通过微信消息发送到关注者的微信app上。
在C4C系统查看通过OData API创建的客户主数据:
这个场景的数据交互流,微信app是消息的发送方,而SAP C4C系统是消息接收方,消息通信通过nodejs开发的微信消息服务器完成。
本文我们实现一个新的场景,当C4C的客户主数据发生变化时,C4C主动通知微信关注者。在这个场景里,C4C是消息的发送方,而微信app是消息的接收方。
具体实现步骤
前一篇文章里,我选用C4C Account BO标准的LastName字段来存储微信关注者的Wechat id:
这个客户主数据的明细页面如下:
本文我选择在Customer BO上创建一个名为WechatID的扩展字段,专门存放微信关注者的Wechat id.
在C4C系统中创建一个新的OData服务,选中新建的扩展字段WechatID,将其暴露到OData API中:
将新建的C4C OData服务重命名为zindividualcustomer,在Postman里测试,确保使用OData filter操作符时,能够读取包括这个扩展字段在内的客户主数据的值。
测试url:
https://<此处填入C4C系统的hostname>/sap/c4c/odata/cust/v1/zindividualcustomer/CustomerCommonCollection?$filter=ParentObjectID%20eq%20%2700163E20C9511EE7B8975BD4AB3F60C0%27
ParentObjectID字段后面红色高亮值是Customer BO实例的guid.
我们期望的行为是,一旦客户主数据在C4C系统被修改后,C4C系统会自动发送一个notification(通知)给微信消息服务器,后者收到通知后,调用微信消息API将该通知转发给微信关注者。
一个好消息是,上面红色高亮的行为描述,是C4C系统一个开箱即用的功能:OData Event Notification. Jerry曾经成功地使用这个功能完成过很多原型开发,比如这篇文章里介绍的一个案例:
一些SAP Partners能够通过二次开发实现打通C/4HANA和S/4HANA的方法介绍
下图的设置含义是,一旦名称为CUSTOMER的BO数据发生变化时,发生变化的具体数据,通过下图蓝色高亮字段指定的OData服务,zindividualcustomer, 发送到绿色高亮字段指定的事件监听者去。这个事件监听者的endpoint通过url标识,即本系列部署在heroku云平台上的微信消息服务器:https://wechatjerry.herokuapp.com/c4c
现在修改一个C4C客户主数据并保存,C4C系统会调用我们之前配置好的zindividualcustomer,通过HTTP POST的方式发送下列格式的数据到微信消息服务器:
上图标号1代表发生变化的BO名称,标号2代表发生变化的BO实例的guid,标号3代表OData服务endpoint,我们在微信消息服务器里访问该endpoint,即可获取包含WechatID扩展字段在内的BO数据。有了WechatID之后,我们即可调用微信消息发送API,将BO发生变化的情况发送给微信公众号的关注者。
在微信消息服务器里,响应来自C4C系统的HTTP POST请求,从请求中解析出发生变化的Customer BO实例的guid,存储在第42行代码的变量AccountBOguid里,紧接着在第43行代码的notifyWechatUser里,根据AccountBOguid调用C4C OData拿到扩展字段WechatID的值,然后向该WechatID标识的微信用户推送消息。
这里我调用sendMessage函数,发送给微信关注者的文本是一段硬编码的文字:
_getAccount的具体实现在我的Github上:
最后,将前一篇文章介绍的场景联合起来测试。首先关注微信公众号,这个行为会在C4C系统自动创建一个客户主数据1000443:
在C4C系统打开这条主数据,修改之后保存:
然后在我的微信app上收到了一条推送信息,即之前在微信消息服务器里硬编码的一条文本:
下一篇文章,我们会了解如何将SAP UI5应用嵌入到微信公众号里访问。
感谢阅读。
系列目录
(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系统直接回复消息给微信公众号的订阅者
- 点赞
- 收藏
- 关注作者
评论(0)