主意
上周五发现了一个有趣的仓库:co-()。 一时兴起,我不想要你的想法,我想要我的想法。 腾讯云函数和这个库理论上可以快速搭建一个微信公众号的自动回复机器人。 所以我开始检查文件并开始工作。
开始做吧
步骤1
首先使用VS Code的VS Code插件生成云函数。 并根据本文档修改.yaml,配置API网关触发器。
进入功能面板,点击上传功能,等待上传完成,即可在控制台看到部署的功能。
创建带有API网关触发器的云函数。 访问API网关触发器下方的访问路径,触发云函数运行。
第2步
那我们就来看看微信公众号吧。

如果您没有自己的订阅账号,您可以先在注册页面()注册您自己的订阅账号。
注册完成后,我们还需要完成开发者配置。 最全的接入指南:()。
登录后,可以在左侧菜单栏看到,选择 ,可以看到如下页面:
重点关注图中的红色方框。
点击修改配置后,可以填写配置,然后点击提交尝试。 会报验证失败错误。
查看文档
哦,原来是服务器要返回才可以连接成功。 然后我们在云功能下进行操作。
在云函数日志中可以看到之前失败的请求日志:
你就可以知道你要返回的东西已经打开了。 那么我们就一口气完成了接入。

exports.main_handler = async (event, context, callback) => {
console.log(event)
return {
"isBase64Encoded": false,
"statusCode": 200,
"headers": {"Content-Type":"plain/text"},
"body": event.queryString.echostr
}
};
他一提交,就成了。 微信公众号平台到云功能的请求链接现已开放。
第三步
我们可以开始编写云函数代码(bug)。
我正在使用开发并使用两个库 - http() 和 co-。 根据两个库的文档,我们可以编写如下代码。
"use strict";
const Koa = require("koa");
const serverless = require("serverless-http");
const wechat = require("co-wechat");
const config = {
token: 'token',
appid: 'appid',
encodingAESKey: 'encodinAESKey',
};
const app = new Koa();
app.use(
wechat(config).middleware(async (message, ctx) => {
if (message.Content === "屌丝") {
return "呵呵";
}
})
);
const handler = serverless(app);
exports.main_handler = async (event, context, callback) => {
return await handler(
{ ...event, queryStringParameters: event.queryString },
context
);
};
简单解释一下代码:
整个代码使用了koa,一个开发Web服务的框架。
-http 库封装了 api 网关发送的请求参数,这样我们在云功能中使用 koa 时,即使不监听某个端口,仍然可以像平时使用 koa 开发一样使用 koa 相关的 API。
co-这个库封装了微信公众号平台的自动回复API,然后作为koa中间件供开发者使用。 我们只需要用它作为koa的中间件,同时传入微信需要的配置参数,比如等等,这些在前面的开发者配置中已经提到过。 更多使用详情可以去仓库查看文档。
代码写好之后,就可以自己调试了。 调试方法如下:
1、使用微信提供的“接口调试工具”进行调试。 同时,代码中需要将()改为(, true)才能开启模式;
2、复制微信请求数据,添加api网关测试模板,使用VS Code插件进行调试。详细的调试方法下一篇讲。

调试后,如果没有问题就可以部署到腾讯云了。 同时,在微信公众号平台上启用服务器配置。
成就
看看结果,一个简单的自动回复机器人就完成了。 如何激活(tiao)和发送(xi)这个机器人取决于开发者自己的想象力。
总结
微信公众号开发的场景非常适合使用腾讯云功能。
查看微信公众平台接入指南,按照之前的接入方式,需要自己购买服务器。 配置好服务器之后,恐怕你就没兴趣继续鼓捣逻辑代码了。 通过API网关使用腾讯云功能非常方便。 看看上面的步骤,只需要几分钟就可以创建一个可用的云函数。
第二步是调试。 如果是传统的服务,我可能要分析微信的请求信息,使用或者curl来调试。 使用VS Code插件,我需要复制微信请求信息,生成API测试模板,然后在本地运行该功能。 我什至可以用它进行断点调试。
最后一步是部署。 如果这样一个比较简单的代码部署在服务器上,很有可能是手动上传然后再运行(给我就行,别跟我说CICD)。 但部署在云函数上时,使用VS Code插件部署简单、方便、省事。
总的来说,使用腾讯云功能是比较方便的做法。