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

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

系列目录

(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系统直接回复消息给微信公众号的订阅者git

最近有很多朋友在微信上向我咨询SAP系统和微信公众号集成的问题,所以我把当时写的英文版翻译成中文,从新发布在个人公众号上。github

须要注意的是,时隔三年,微信公众号的开发流程可能有所变化,请你们自行鉴别。和微信公众号集成的系统,我三年前选择的是SAP Cloud for Customer.web

始终牢记咱们这个系列的目标是学会如何用微信公众号同SAP系统(SAP Cloud for Customer,如下简称C4C)集成。要实现这个目标,就得经过微信公众号消费SAP C4C的OData API.express

做为学习的第一步,咱们首先学习如何在微信公众号调用普通的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的原创文章,尽在:"汪子熙":

相关文章
相关标签/搜索