微信服务号已经深入人心,成为了企业宣传和客户交流的重要途径。然而,微信官方文档中的开发指南可能还不够详细或者有点抽象,而 Hapi.js,一个 Node.js Web 应用框架,能够刚好填补这个空缺。
在本文中,我们将介绍如何使用 Hapi.js 搭建一个微信服务号,并实现一些简单的功能。
步骤
1. 创建微信服务号并配置开发者模式
首先,需要在微信公众平台上创建一个服务号,并配置开发者模式。
在微信公众平台的开发者中心页面中,开启开发者模式并填写 URL 和 Token,其中 URL 是你的 Hapi.js 应用的地址,Token 是你随意定义的一个字符串。
2. 搭建 Hapi.js 应用
接着,安装 Hapi.js 应用。在命令行中进入项目目录,并执行以下命令:
npm install hapi --save
然后,在这个项目目录中创建一个 index.js
文件,并将以下代码插入其中:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - --- -------------- ------------------- ----- ---- --- -------------- ------- ------ ----- ---- ---------------- ------ - ------ ------------ ---------- -- --- ------------------ -- - -- ----- - ----------------- - ------------------- ------- --- --------------------- ---
上述代码片段用于搭建一个简单的 Hapi.js 应用,并监听端口为 3000
。这个应用只有一个路由,当你 GET 这个应用的主页时,它将返回 Hello Hapi.js
。
在终端中运行以下命令可以启动应用程序:
node index.js
如果看到输出 Server running at: http://localhost:3000
,则意味着你的应用程序已经正常启动了。
3. 获取微信服务号的 Token
为了完成微信服务号的开发,你需要使用微信公众平台提供的 API。其中,请求都需要 Token。
在 index.js
中,添加以下代码获取 Token:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ----------- - ----------------------- ----- ------------ - - --------- -------------------- ----- ----------------------------------------------------------------------------------------- ------- ------ -- ----- -------- - -- -- - ----- ------- - -------------------------- ---------- -- - --- ------ - --- ------------------- ------- -- - ------ -- ------ --- ------------------ -- -- - ----- ----- - -------------------------------- ------------------- --- --- -------------- - -----------
在上述代码中,yourAppid
和 yourAppSecret
都需要替换为你自己的服务号的 Appid 和 App Secret。
运行后你就可以得到你的 Token。
4. 接入微信服务号
微信服务号将向你的应用程序发送两种类型的消息:GET 和 POST。在请求 URL 中提供的 Token 应该被用于验证并用来处理后续的消息。
添加以下代码段,然后启动你的应用程序,运行代码确认服务器响应请求:
-- -------------------- ---- ------- -------------- ------- ------ ----- ---- ---------------- ------ - ----- - ---------- ---------- ------ ------- - - -------------- ----- ----- - ------------ ----- ----- - ------------------------------------- ----- ---- - ------------------------------------- ----- ---- - ------------------- ---------- -------------------------------------- -- ---------- --- ----- - ------ --------------- - ------ ---------- -------------------- -- --- -------------- ------- ------- ----- ---- ---------------- ------ - --------------------- --------- ------ --------------- ---------- -- ---
在上述代码片段中,我们添加了两个路由。第一个路由处理微信服务号的 GET 请求,并验证 Token 是否有效。如果验证通过,则返回 echostr。第二个路由处理微信服务号的 POST 请求。
5. 处理微信服务号的 POST 请求
当微信服务号收到消息时,它会将消息发送到你的服务器的 URL 地址中。接下来,你的 Hapi.js 应用需要提取收到的消息。(这就是为什么我们在上一步中添加了一个 POST 路由)。
处理微信服务号 POST 请求的代码应该类似于:
-- -------------------- ---- ------- -------------- ------- ------- ----- ---- ---------------- ------ - --- ----------- - --- ------------------ ------- -- - ----------- -- ------ --- ----------------- -- -- - ----- ------ - ------------------ ----- ------ - --- --------------- -------------- ------ ------------ ----- --- ------------------------------- ----- ------- -- - ------------------------ --- --- ----------------- -- ---
在上述代码片段中,我们创建了 xml2js
实例,用于解析微信服务器发送的 POST 请求。reply
返回了一个字符串success
,表示你已经正在处理发来的消息并且成功处理。
6. 处理不同类别的消息
微信服务号可以处理多个类型的消息,包括文字消息、语音消息、位置信息等等。在代码上,这通常是依据 POST 请求中的 MsgType 属性:
-- -------------------- ---- ------- -------------- ------- ------- ----- ---- ---------------- ------ - --- ----------- - --- ------------------ ------- -- - ----------- -- ------ --- ----------------- -- -- - ----- ------ - ------------------ ----- ------ - --- --------------- -------------- ------ ------------ ----- --- ------------------------------- ----- ------- -- - ----- - ------- - - ----------- ------ --------- - ---- ------- --------------------- ---- -------- ------------------------ ------ ---- -------- --------------------- ----- ---------- ------ -------- - --- --- ----------------- -- ---
在上述代码片段中,我们为 Text 和 Image 消息分别添加了处理代码。更多的消息类型可以在微信官方文档中找到。
总结
在本文中,我们学习了如何使用 Hapi.js 开发微信服务号应用,了解了如何处理微信服务号发来的 GET 和 POST 请求,并做了一些简单的消息处理。
这只是一个入门教程,并只包含了开发的基础内容,当然,你可以使用 Hapi.js 来创建更加高级的应用程序。使用下面的代码将会有不错的效果,同时,不会有必要再从零开始创建你的应用了。
可以把这个 Hapi.js 应用转换成一个包,然后发布到 NPM。这是对微信服务号开发的关键之一,将返回的消息构造成标准的 XML 并使用 reply
作出响应。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ------------------ ----- ------ - --- -------------- ------------------- ----- ---- --- -------------- ------- ------ ----- ---- ---------------- ------ - ----- - ---------- ---------- ------ ------- - - -------------- ----- ----- - ------------ ----- ----- - ------------------------------------- ----- ---- - ------------------------------------- ----- ---- - ------------------- ---------- -------------------------------------- -- ---------- --- ----- - ------ --------------- - ------ ---------- -------------------- -- --- -------------- ------- ------- ----- ---- ---------------- ------ - --- ----------- - --- ------------------ ------- -- - ----------- -- ------ --- ----------------- -- -- - ----- ------ - --- --------------- -------------- ------ ------------ ----- --- ------------------------------- ----- ------- -- - ----- ------- - -------------------------- --------------- --- --- -- --- ----- ------------- - ------------- - ----- ------- - - ----------- ----------------- ------------- --------------- ----------- ----------- -------- ------- -- ------ ------------- - ---- ------- --------------- - ---- ---- --- -------- ---------------- ------ ---- ----------- --------------- - ----- -------- --- ------------------ ------------------- ------ -------- --------------- - ------- - ------ ---------- ---- --- ------- - ----- ------- - --- ---------------- --------- ----- --- ------ ----------------------------- -
使用这个初步的 Hapi.js 应用,你可以在微信公众平台中回答用户的消息。通常情况下,应用程序只是解析消息然后返回简单的响应。如果有需要,操作也是可能的,例如将消息存储到数据库中、将用户发送过来的消息传递到 API 或者做出网络请求。
我希望你在本文中找到了你需要的关键信息,并能够在实践当中使用 Hapi.js 创建一个微信服务号应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64687532968c7c53b08aa1d1