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

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

最近有不少朋友在微信上向我咨询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系统直接回复消息给微信公众号的订阅者

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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