分享

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

 汪子熙 2020-12-03

本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上:

https://blogs./2017/12/10/wechat-development-series-1-setup-your-development-environment/

系列目录

(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能够下载。

https://github.com/wangzixi-diablo/wechat-sap-integration

首先在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中:

https://github.com/wangzixi-diablo/wechat-sap-integration/blob/main/jerryapp/tool/replyMessage.js

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

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

调用图灵API的tuningService函数的实现源代码:

https://github.com/wangzixi-diablo/wechat-sap-integration/blob/main/jerryapp/service/tuning.js

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

http://www./

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

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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多