这是 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 的原创文章,尽在:” 汪子熙 ”: