SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

这个系列的第一篇文章,SAP FSM 学习笔记(一) : 使用API消费FSM的数据,我们学习了如何使用SAP FSM提供的nodejs SDK,第二篇文章 SAP FSM 学习笔记(二) : SAP FSM的微信接入,介绍了如何使用微信这个平台,通过nodejs SDK去消费SAP FSM的API.

从本文开始,我们就会真正地调用SAP FSM API,在系统里创建一些数据。我们采用“上门安装服务”这个场景来说明,假设客户购买了某公司的某产品,希望通过微信来预约某个时段的上门安装服务。

本文标题提到的“客户预约”其实不太准确,这个词虽然最容易被终端用户所接受,但SAP FSM实际没有直接的客户预约模型,而是通过Service Call和Activity,以及ServiceAssignment三者联合起来表述的。

从微信公众号里点击“预约”按钮之后,我们开发的前端应用会自动定位出当前用户的地理位置:武侯花园人民*,同样我们也提供了允许客户手动修改地址的功能,如下图预约地址字段尾部的字符2,就是Jerry为了测试手动修改的功能而故意添加上去的。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

维护手机号和希望上门安装的具体时间段,然后就可以从下拉列表里选择该时间段内可以提供服务的安装技师。这里我们选择名叫李小刚的技师:

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

点击确定按钮,运行在微信里的前端应用就通过我们开发的后台服务,向SAP FSM发起API调用。

先看最后的结果:我们在微信里收到了公众号推送的通知消息,告诉我们预约已成功。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

点击这条消息可以查看预约详情:

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

待李小刚动身前往客户途中,我们还能在微信里查看李小刚的实时位置共享信息,这是通过SAP FSM提供的技师位置服务加上我们的少许自开发实现的效果。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

本文只会概括性地介绍如何用API调用的方式在SAP FSM里实现客户预约功能。至于技师位置实时共享等效果,留待本系列后续分享。

我们在微信开发者工具里重复上述步骤,观察请求明细:

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

这个url指向我们开发的一个后台服务,/ticket/后面跟着的一串数字与字母组合是Jerry的个人微信open ID,13911111111是我预约时留下的手机号,手机号后面一长串包含%的片段,是预约时留下地址经过url encode后的结果。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

请求正文里包含了微信里填入的全部预约信息,和李小刚在FSM里的GUID. CustomerID,则是前端应用通过我的微信open ID调用微信API获取到的昵称,Jerry Wang. “上门安装机械臂”,是我们为了demo方便,硬编码的一个预约标题。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

API调用成功后,返回一个ID给消费端,这个ID代表了SAP FSM里成功创建的预约记录。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

下面我们到SAP FSM里根据这些GUID,去详细查看API到底在系统里生成了哪些记录。

首先, 如果一个微信用户在SAP FSM里不存在对应的Business Partner记录,是无法进行业务流程的,因此我们的后台服务实现里,会首先检测该微信用户在SAP FSM里是否存在对应的BP记录,如果没有,就自动创建一个。

关于SAP产品的客户模型设计的更多介绍,参考Jerry这篇文章:Jerry眼中的SAP客户数据模型。

下图是Jerry的个人微信号在SAP FSM里生成的对应BP记录,Additional name即是我微信号的open ID,我们的原型开发里,通过微信号的open ID同SAP FSM BP模型的Additional name这一对字段来维护微信用户和SAP FSM BP一一对应的关系。这个BP的ID为36,记录下来后面会用到。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

而我们在微信预约页面选择的技师李小刚,在微信开发者工具里观察到其GUID为2E9BC784D477CA3DD048E593D853CFF1,这也正是李小刚在SAP FSM里的明细页面列表url的片段之一:

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

而SAP FSM API返回的ID:B0555705B9EC41009739D0111E16CC91,在系统里实际上是一条Service Call记录的GUID,这条Call的ID为175,服务的客户ID是Jerry Wang,Code为36,即前面提到的基于微信号open ID自动创建的客户记录。

这个Service Call有一个同名的Activity,编号为205.

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

在SAP FSM的Activities页面可以查到这条编号为205的记录,其所属的Service Call为175,即上图显示的Call内容。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

Service Call和Activities创建之后,调度员就可以相应地派工,然后李小刚就可以动身出发了。下图显示的李小刚在系统中被分配了多个安装任务,这是Jerry反复测试时创建的数据,其中任务显示上标有的白色小旗,代表任务已完成。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

调度员选择一条我刚刚在微信里创建的预约,点击Release Assignments, 即可完成派工。

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

在我们的后台服务实现里,使用SAP FSM nodejs SDK,依次调用了Service Call,Activity的创建API来创建对应的记录。同时安装技师和安装任务的分配关系,是通过创建一个新的ServiceAssignment对象来维护的。这三个API的说明在SAP FSM官方网站上有文档:

https://docs.coresystems.net/dev-index.html

这个系列的后续文章会继续向大家介绍SAP FSM,感谢阅读。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

SAP FSM 学习笔记(三) 在微信里发起SAP FSM客户预约

上一篇:Java中如何创建一个确保唯一的名字,文件名


下一篇:微信小程序中的左右联动