企业级应用系统和微信集成的系列教程之九:如何将微信用户发送给微信公众号的内容自动转存到SAP C4C系统

举报
汪子熙 发表于 2022/04/25 16:32:41 2022/04/25
【摘要】 最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,发表在华为云社区上。系列目录(1) 微信开发环境的搭建(2) 如何通过微信公众号消费API(3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据(4) 如何将SAP C4C主数据变化推送给微信公众号(5) 如何将SAP UI5应用嵌入到微信公众号菜单中(6) 如何通过OAuth2...

最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,发表在华为云社区上。

系列目录

(1) 微信开发环境的搭建

(2) 如何通过微信公众号消费API

(3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据

(4) 如何将SAP C4C主数据变化推送给微信公众号

(5) 如何将SAP UI5应用嵌入到微信公众号菜单中

(6) 如何通过OAuth2获取微信用户信息并显示在SAP UI5应用中

(7) 使用Redis存储微信用户和公众号的对话记录

(8) 100行代码在微信公众号里集成地图搜索功能

(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系统,回复文本消息给微信用户。感谢阅读。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。