写点什么

轻松使用 Serverless 架构实现微信公众号后台开发

  • 2019-09-30
  • 本文字数:1975 字

    阅读完需:约 6 分钟

轻松使用 Serverless 架构实现微信公众号后台开发

背景介绍

随着微信公众平台发展,越来越多的商户选择使用微信公众号向客户发送一些重要的通知,例如商品购买通知,订单状态异常通知,信用卡刷卡通知等。


本文主要根据以上场景,使用 AWS Serverless (无服务器)架构实现微信交易通知,这样对于开发者来说就无需烦恼底层服务器的构建和运维等事宜,并且 Serverless 架构会随着需要发送的通知数量进行自适应的扩展,实现实时通知发送。

整体架构

本文介绍的消息通知系统使用目前流行的无服务器架构,实现步骤如下:


1.把需要通知的内容发送到 AWS SNS


2.然后通过 AWS Lambda 订阅 SNS 中的内容,实现简明的业务逻辑


3.使用 AWS Lambda 调用微信公众平台 API,把消息发到指定客户的微信


应用场景业务逻辑分析

在常见消息推送中,一般有几个要素:


1.需要推送给哪个客户


2.确认推送内容(本文指的是微信消息模版)


首先需要配置一个微信公众号测试账号,获取到相关通知要素以及对应的微信 API 接口。

准备工作

在开始之前,如果您还没有微信认证过的公众号,可以先申请一个微信公众号测试账号,申请链接:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 。点开后,使用个人微信号扫一扫确认就可以获取一个测试账号了,这个测试账号具有需要用到的微信高级接口权限。


完成申请操作之后,查看管理页面,并使用微信扫描关注测试公众号,页面如下:



您可以在上述测试号管理页面获取到测试号信息,以及用户关注列表。我们需要用到上述画红框的三个地方,分别是 appID,appsecret,以及微信号(下文称为 openid)。然后点击创建消息模版,这里已经为大家准备好了模版(请复制以下斜体内容,):


{{first.DATA}}
商品明细
名称: {{keyword1.DATA}}
价格:{{keyword2.DATA}}
交易时间:{{keyword3.DATA}}
{{remark.DATA}}
复制代码



新增测试模版之后,复制您的模版 ID,如下图红框所示:


到这里为止您已经配置好了微信公众平台端,此时您应该已经关注了自己的微信公众号,并记录了以下参数(请注意替换成您的参数):



appid = ‘wx12345ab3cd4ef53’
appsecret = ‘
openid = ‘opvZu1WamXXXXXXXXXSR_5AXXXXCE’
templateId = ‘fTjKg-CDFxV5ZemUSR241mAKehXXXXXbSYoGCe3lb4’
复制代码

创建 AWS 资源

上一章节中,我们完成了微信公众号端的设置并拿到对应的开发者权限,那么又如何使用 AWS Serverless 的服务发送微信通知呢?


1.首先登陆 AWS 控制台并打开 Lambda 控制页面。例如北京区域 Lambda 配置页面是https://console.amazonaws.cn/lambda/home?region=cn-north-1#/,点击页面“创建函数”,输入函数名称,设置运行语言为 js8.10,在执行权限一部分,您可以,具体配置如下:




2.创建完 Lambda 之后,首先下载代码部署包,https://github.com/cncoder/awsinit/blob/master/lambdaLabs/sns2wechat.zip,然后如下图在lambda 页面选择上传代码,选择刚刚下载的 zip 代码包,并修改处理程序为“sns2wechatinlambda/index.handler”,再点击右上角保存。



3.部署 Lambda 代码之后,在当前 Lambda 页面修改第 6 和第 7 行代码(下图红框), 替换您在准备工作一节中从微信测试号获取的 appID 以及 appsecret,最后点击右上角保存。



4.配置完 lambda 之后,再设置 SNS 服务,例如北京区域 SNS 控制台页面是https://console.amazonaws.cn/sns/v2/home?region=cn-north-1#/home,打开之后点击页面“创建主题”,并输入主题名称,如下图所示:



5.创建完成会跳到主题详细信息页面,点击页面的“创建订阅”。



6.协议一项选择“AWS Lambda”,终端节点选择在第一步创建的 Lambda,其他默认即可。


测试发送微信消息通知

1.打开上述创建的 SNS 主题,并点击页面“发布到主题”



2.您可以在消息处选择发送以下内容(请注意替换您的 templateId,以及 openid。其他可以根据需要修改对应的值,或者默认即可。):


{
"templateId": " fTjKg-CDFxV5ZemUSR241mAKehXXXXXbSYoGCe3lb4",
"url": "z.cn",
"openid":" opvZu1WamXXXXXXXXXSR_5AXXXXCE",
"first":"跨境交易提醒!",
"keyword1":"海淘...",
"keyword2":"$100.00",
"keyword3":"2019年03月18日",
"remark":"点击查看详情"
}

复制代码



3.点击发送后您可以在微信中看到如下提醒,您可以尝试点击,会跳转到对应的超链接。这个链接就是在上一个步骤中填写的 url。



到这里您就完成了基于 AWS Serverless 的微信开发。

总结

在本文中主要简述了使用 SNS + Lambda 方式发送微信通知,在生产系统中,我们可以通过把不同系统产生的通知消息发送到 SNS,然后由 lambda 自动化处理消息通知。整套架构用到的服务都会按次触发,既降低运维难度又节约成本。


作者介绍:


谢佰臻


亚马逊 AWS 解决方案架构师,负责基于 AWS 的云计算方案的架构设计,在 AWS IoT , Serverless 方向有丰富部署实践经验。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/easytouse-serverless-wechat-official-account-development/


2019-09-30 15:191175
用户头像

发布了 1938 篇内容, 共 162.5 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

寻找伴侣最重要的是什么?

二爷

业务代码必须要做的事情

程序员劝退师

写一个开源的 macOS 程序可以赚多少钱?

子骅 luin

node.js redis GitHub 开源 赚钱

翻译: Effective Go (1)

申屠鹏会

翻译 Go 语言

电子书:《Linux Perf Master》

RiboseYim

Linux 性能优化

【gRPC】Python调用Java的gRPC服务

遇见

Java Python gRPC

测试

Chonge

一文讲清楚 MySQL 事务隔离级别和实现原理,开发人员必备知识点

古时的风筝

MySQL 数据库 事务隔离级别 mysql事务 数据库事务

Linux 性能诊断:负载评估入门

RiboseYim

Linux 性能优化

芋道 Spring Cloud Alibaba 介绍

艿艿

阿里巴巴 分布式 微服务 Spring Cloud Spring Boot

uni-app黑魔法:小程序自定义组件运行到H5平台

崔红保

小程序 uni-app

分享多年积累的 macOS 效率工具

张晓辉

macos

近两年影响我的两个重要原则

Selina

走出舒适区最好办法别走了,扩大它

乐少

毕竟,一生很短,少有圆满

霍太稳@极客邦科技

创业 身心健康 个人成长

用声音在一起,听荔枝CTO丁宁聊UGC声音互动平台的技术世界

ONES 王颖奇

内容 企业架构 互联网

【Vue3.0 Beta】尝鲜

德育处主任

CSS Java html5 Vue 大前端

对话 CTO〡和 PingCAP CTO 黄东旭聊开源数据库新蓝海

ONES 王颖奇

数据库 分布式 开发者

为什么你的创业公司应该运行在Kubernetes上

云原生

云原生 k8s

OKR实践中的痛点(1):老板的KR我的O,怎么办?

大叔杨

OKR Scrum 敏捷

一个创业者的途中思考

非著名程序员

创业 读书笔记 程序员 重新理解创业 思考

【数据结构】双向链表插入操作的时间复杂度分析

遇见

数据结构 算法 时间复杂度

业务系统开发程序员常用linux知识

程序员劝退师

Linux

Flink初体验

数据社

大数据 flink 流计算

人们喜欢彼此制造困难让大家难过

Fenng

WebSphere Application Server运维实践 --从入门到监控

rafe

Java WAS perfservlet visualVM JMX

初入响应式编程(上)

CD826

spring 微服务 Spring Cloud 响应式编程 reactor

此为开卷

X.F

浅谈汽车行业嵌入式软件发布的流程有多复杂

WB

程序员 软件

从流程、认知上做稳定的系统演进

Skysper

系统设计 质量管理

2020了,各家小程序发展的怎么样?

崔红保

小程序 uni-app

轻松使用 Serverless 架构实现微信公众号后台开发_文化 & 方法_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章