写点什么

轻松使用 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:191115
用户头像

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

关注

评论

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

react源码分析:深度理解React.Context

flyzz177

React

OpenHarmony 3.2 Beta多媒体系列——音视频播放gstreamer

OpenHarmony开发者

OpenHarmony

MatrixOne从入门到实践02——源码编译

MatrixOrigin

MatrixOrigin MatrixOne

第一届云原生边缘计算学术研讨会KEAW'22成功举办

科技热闻

前后端结合解决Excel海量公式计算的性能问题

葡萄城技术团队

前端 性能 Excel

「风控算法服务平台」高性能在线推理服务设计与实现

京东科技开发者

Python 数据 高性能 风控 风险控制

HarmonyOS 3重磅版本更新,Mate Xs 2等更多设备支持超级中转站!

极客天地

MASA Framework 事件总线 - 进程内事件总线

MASA技术团队

Framework MASA Framewrok MASA

Java对象拷贝原理剖析及最佳实践

京东科技开发者

Java Apache 编程 对象拷贝 srping

创云融达基于 Curve 块存储的智慧税务场景实践

网易数帆

开源 分布式存储 Ceph curve

如何用科学的方法“撞大运”? | 学点运气

赵新龙

CTO 创新 与运气竞争

阿里技术风险与效能部负责人张瓅玶:阿里集团深度用云实践

云布道师

云计算

上海 Meetup | 一键获取 11 大云原生热门开源项目技术分享入场券

阿里巴巴云原生

阿里云 开源 容器 微服务 云原生

深入浅出DDD编程

百度Geek说

架构 后端 领域驱动设计

avm 开发 APP 怎么设置字体

YonBuilder低代码开发平台

AR手势识别交互,让应用更加“得心应手”

HarmonyOS SDK

HMS Core

工程团队如何合理地管理数据库访问

Bytebase

DevOps 运维 dba 数据库管理工具 删库保护

《算法》世界一

初学者

算法 网络 11月月更

《算法》世界二

初学者

算法 网络 11月月更

SREWorks 数智服务尝鲜,你的数据准备好了吗?

阿里云大数据AI技术

大数据 运维 数据 十一月月更

MatrixOne从入门到实践01——初识MatrixOne

MatrixOrigin

MatrixOrigin MatrixOne

先聊聊「堆栈」,再聊聊「逃逸分析」。Let’s Go!

王中阳Go

Go golang 逃逸分析 内存分配 11月月更

react源码分析:组件的创建和更新

flyzz177

React

使用keytool生成Tomcat证书

源字节1号

如何给 Fiori Elements 应用添加自定义按钮

汪子熙

前端开发 web开发 Fiori SAP UI5 11月月更

算法基础:单链表图解及模板总结

timerring

算法 11月月更 单链表

一个漏测Bug能让你想到多少?

得物技术

测试 测试框架 bug修复 漏洞检测 测试技术

看完这篇SpringBoot让我在阿里成功涨薪40%,感谢

钟奕礼

Java java程序员 java面试 java编程

MatrixOne从入门到实践03——部署MatrixOne

MatrixOrigin

MatrixOrigin MatrixOne

直播预约|Flink + StarRocks 实时数据分析新范式

StarRocks

数据库

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