SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API

JerryWang_汪子熙

本系列的英文版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系统(SAP Cloud for Customer,以下简称C4C)集成。要实现这个目标,就得通过微信公众号消费SAP C4C的OData API.

作为学习的第一步,我们首先学习如何在微信公众号调用普通的API,而非SAP C4C OData API.

假设这样一个简单的场景:用户关注微信公众号之后,通过微信app给公众号发送一些文字信息。公众号收到这些文字信息,会转发给我们在本系列第一篇文章 微信开发环境的搭建 里提到的微信消息服务器。此时微信消息服务器接收到转发过来的文字信息后,调用一些具有人工智能的API,将API的响应通过微信app回复给用户。

绑定了微信消息服务器的微信公众号,在这个场景里扮演的其实就是一个简单的聊天机器人的角色。用户和微信公众号通过一问一答的方式进行交互。

Jerry还记得上大学的时候,学习《Unix网络编程》这门专业课,一个练习就是,通过套接字自行实现一对客户端和服务器,客户端发送一个字符串给服务器,服务器接收后原封不动地将其返回,即所谓的Echo Server.

在动手实现微信聊天机器人之前,我们先降低难度,实现一个简单的微信echo服务,即无论用户发送任何信息给公众号,都会收到信息本身,再加上"Add by Jerry"的前缀。

本文用到的项目完整源代码,在我的Github能够下载。

首先在server.js里,利用nodejs express库启动一个web服务器:

上图第二行routesEngine的实现,位于index.js里。微信app收到用户通过微信app发送的文本消息时,会通过一个HTTP POST请求转发给微信消息服务器。微信消息服务器接收到该请求后,调用第五行的echoService处理:

echoService的实现位于文件echo.js中:首先从变量req包含的HTTP请求中,将用户输入的文本信息解析出来(第11行),然后加上"Add by Jerry: "的前缀,并将结果存储在变量content里(第13行), 最后调用自己开发的工具方法replyMessage,将加上前缀的文本信息返回给用户。

上图第15行的replyMessage工具方法,需要从微信app转发给微信消息服务器的HTTP POST请求里, 解析出发送消息的微信用户id,然后再将拼接了"Add by Jerry: "前缀的内容发送给该id标识的微信用户。

replyMessage的实现位于replyMessage.js中:

有了Echo Service的实现经验之后,再实现微信聊天机器人就没有什么难度了。

只需要把index.js里接收到HTTP Post请求之后的操作,从调用echoService改成调用新的实现,tuningService即可。

调用图灵API的tuningService函数的实现源代码在这里下载。

我2017年的时候使用的图灵API是如下网站提供的:

申请一个API key, 粘贴到下图第6行的url里:

将用户输入的文本信息解析出来,存储到第20行的body变量里,使用encodeURI处理之后,直接拼接到图灵API url尾部,然后第27行使用request函数调用图灵API. 在匿名回调函数里获得API的响应,最后调用工具方法replyMessage将响应通过微信消息服务器发送给微信app.

本系列的下一篇文章,我们会真正开始和SAP系统的集成:每当新的微信用户关注微信公众号时,我们会自动为该微信用户在SAP C4C系统创建一个客户主数据。

感谢阅读。

本系列的其他文章

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

阅读 564

Jerry Wang的SAP技术专栏
SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使

Jerry 2007年从电子科技大学计算机专业硕士毕业后进入SAP成都研究院工作至今, SAP社区导师,SAP中国技术大使。

632 声望
89 粉丝
0 条评论
你知道吗?

Jerry 2007年从电子科技大学计算机专业硕士毕业后进入SAP成都研究院工作至今, SAP社区导师,SAP中国技术大使。

632 声望
89 粉丝
宣传栏