本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上。
最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,重新发布在我的公众号上。
需要注意的是,时隔三年,微信公众号的开发流程可能有所变化,请大家自行鉴别。和微信公众号集成的系统,我三年前选择的是SAP Cloud for Customer.
系列目录
(1) 微信开发环境的搭建
(2) 如何通过微信公众号消费API
(3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据
(6) 如何通过OAuth2获取微信用户信息并显示在SAP UI5应用中
(9) 如何将微信用户发送到微信公众号的消息保存到SAP C4C系统(本文)
(10) 如何在SAP C4C系统直接回复消息给微信公众号的订阅者
本文实现的场景是:
微信用户点击“关注”按钮,关注了某微信公众号之后:
在SAP C4C系统自动生成了下列数据:
(1) 一个代表该微信用户的individual customer主数据
(2) 一个绑定到customer主数据的C4C Social Media User Profile
这两条数据的ID,会通过微信消息推送回微信用户的微信app上:
这些成功创建的C4C数据的ID,在微信消息服务器,即nodejs应用的控制台上也能观察到:
根据返回给微信用户的客户主数据ID,到C4C系统找到该主数据,在其Social Profiles面板里,能看到该Social Profile的渠道类型(Channel Type)为自定义的Jerry's Wechat Channel:
一旦微信用户给微信公众号发送文本信息,该文本信息通过微信公众号的消息服务器作为中转,调用C4C API,在C4C系统创建一条内容为该文本信息的Social Media Message数据。
下图是一个例子:我发送一条"Hello C4C Agent ......"的文本信息,在SAP C4C系统创建的Social Media Message ID为59610:
根据ID在C4C系统找到这条Social Media Message:
同时,C4C系统还会基于新建的Social Media Message,自动生成一条新的Service Ticket,这是C4C系统的标准功能,无需额外编程实现。这个标准功能也是本系列最后一篇文章,即如何在SAP C4C系统直接回复消息给微信公众号的订阅者 工作的前提条件。
下面是这个场景具体的实现步骤。
打开C4C配置的Activity List:
创建一个自定义Channel:
记下这个新建Channel的Type Code:905
基于上图的Channel 905创建一个新的Social Media Channel,ID为ZJERRYWC:
在我这个Github仓库下有个service文件夹,包含了三个JavaScript文件:
(1) createAccountInC4C.js:负责微信用户关注微信公众号之后, 调用C4C OData API创建individual customer.
(2) createSocialMediaProfile.js:调用API创建C4C Social Media Profile.
(3) bindSocialProfileWithIndividualCustomer.js: 负责将前两步创建的C4C数据绑定起来。
在第二步创建Social Media Profile时,调用C4C API传入的输入负载里,将ChannelCode硬编码成之前在C4C系统里新建的自定义Channel的Type Code:905
在createAccountInC4C.js的实现里,这三步按顺序实现在函数createAccount里:
在微信消息服务器的事件处理函数里,一旦接收到“关注”事件( 事件类型值:subscribe)时,调用createAccount函数,完成上述三个步骤:
微信用户关注了公众号之后,发送文本消息给该公众号,微信消息服务器调用createSocialMediaActivity.js里的函数createSocialMessage, 在C4C系统里创建一条新的Social Media Message.
在unittest文件夹下有一个单元测试用例,展示了该函数的用法。
五个输入参数:
(1) o0KlM1i2_4-zHRm-IWGRlA1Cjc:发送消息给微信公众号的微信用户ID
(2) 1003: 待创建的Social Media Message ID,传一个非空值即可,因为C4C系统会根据自己的Number Range生成该ID,并返回给API调用者。
(3) 6066: 当前微信用户在C4C系统里对应的Social Media User Profile ID,该ID是在微信用户关注公众号时,在C4C系统生成并返回的。
(4) ZJERRYWC: 之前已经介绍过,在C4C系统手动创建的自定义Channel ID.
(5) “Hello C4C Agent….”: 微信用户发送给微信公众号的文本信息。
使用函数createSocialMessage,在C4C系统创建以微信用户发送给微信公众号的文本信息作为内容的Social Media Message,创建成功后返回其ID给微信用户:59160.
根据ID 59160到C4C系统查询到该Social Media Message,检查其Message字段的值,同微信用户发送给微信公众号的文本信息完全一致。
本系列的最后一篇文章,我们将学习如何直接在C4C系统,回复文本消息给微信用户。感谢阅读。
更多Jerry的原创文章,尽在:"汪子熙":
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。