本系列的前三篇文章,我们依次介绍了微信公众号开发环境的搭建,微信公众平台 API 的调用,以及地图功能的集成。
本文作为该系列第四篇文章,介绍如何实现 SAP Cloud for Customer 系统同微信公众号的双向通信功能。
所谓双向通信,即将用户发送给微信公众号的消息,转存到 SAP Cloud for Customer 系统(本文余下部分使用缩写 C4C 来代替),以及从 C4C 直接回复消息到用户微信 App 这两个方向的交互。
下面我们分别介绍。
https://www.jianshu.com/p/91ba1ec3e8f7
用户通过微信 app 将消息发送到 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系统的标准功能,无需额外编程实现。
下面是这个场景具体的实现步骤。
打开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函数,完成上述三个步骤: