如何基于Serverless借助微信公众号简单管理用户激活码
.
如何基于Serverless借助微信公众号简单管理用户激活码
微信公众号提供了一个简单的接口,可以让开发者轻松的实现公众号的自动回复功能。但是,如果要想实现一个复杂的功能,比如管理用户激活码,就需要开发者自己搭建一个后台服务器来实现。
使用Serverless框架可以让开发者轻松的搭建一个无服务器的后台应用,而且还可以使用云服务提供商提供的API来实现各种功能。
首先,使用Serverless框架创建一个新的项目,然后在serverless.yml文件中配置如下内容:
service: wechat-activation-code-management
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: cn-north-1
functions:
create:
handler: handler.create
events:
- http:
path: /create
method: post
activate:
handler: handler.activate
events:
- http:
path: /activate
method: get
在上面的配置中,我们定义了两个函数,一个是create函数用来创建激活码,另一个是activate函数用来激活用户。
接下来,我们需要编写对应的函数代码,在handler.js文件中编写如下代码:
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'cn-north-1'});
module.exports.create = async (event, context) => {
const data = JSON.parse(event.body);
const params = {
TableName: 'activation_codes',
Item: {
code: data.code,
activated: false
}
};
await docClient.put(params).promise();
return {
statusCode: 200,
body: JSON.stringify({
message: 'success'
})
};
};
module.exports.activate = async (event, context) => {
const data = event.queryStringParameters;
const params = {
TableName: 'activation_codes',
Key: {
code: data.code
},
UpdateExpression: 'set activated = :a',
ExpressionAttributeValues: {
':a': true
},
ReturnValues: 'UPDATED_NEW'
};
const result = await docClient.update(params).promise();
return {
statusCode: 200,
body: JSON.stringify({
message: 'success'
})
};
};
在代码中,我们使用了AWS的DynamoDB数据库来存储激活码的信息,DynamoDB是一个无服务器的数据库,可以让开发者轻松的搭建应用。
最后,我们需要部署应用,执行如下命令:
serverless deploy
执行完上面的命令之后,应用就会自动部署到云服务提供商的云环境中,并且可以通过公网访问。
在微信公众平台中,我们需要配置应用的URL,将上面部署应用的URL填写到微信公众平台的URL中。
现在,我们就可以使用微信公众号来管理用户激活码了。
相关文章