这是Jerry 2020年的第85篇文章,也是汪子熙公众号总共第267篇原创文章。
本系列的英文版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.
这个系列的前一篇文章,微信用户关注公众号之后,主动在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...
当初批改一个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上:
https://github.com/wangzixi-d...
最初,将前一篇文章介绍的场景联结起来测试。首先关注微信公众号,这个行为会在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零碎间接回复音讯给微信公众号的订阅者
更多Jerry的原创文章,尽在:"汪子熙":