速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

发布了 1851 篇内容, 共 119.2 次阅读, 收获喜欢 78 次。

关注

评论

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

平衡人工智能的性能要求,实现可信AI在银行业务场景的高质量应用

易观分析

人工智能

避免惊群以及负载均衡的原理与具体实现

C++后台开发

nginx 负载均衡 后端开发 C++后台开发 惊群

eKuiper 1.5.0发布:实现无缝式工业数据采集+边缘流处理

EMQ映云科技

物联网 IoT emq 开源之夏 5月月更

Scrum实施的8个步骤

爱吃小舅的鱼

Linux 使用 cp 命令强制覆盖功能

AlwaysBeta

Linux 运维

IoT技术的最后决战!百万大奖究竟花落谁家?

华为云开发者联盟

IoT 华为云 iotda NSBD-IOT

开发一个社区网站,只要20分钟?

华为云开发者联盟

ide 敏捷开发 devcloud 网站开发

前沿聚焦:2022最受关注的六大技术热词,你都知道吗?

华为云开发者联盟

零代码 NFT 数字人 元宇宙 云边端协同

6月月更“粽”头戏,大家一起来参与吧!

InfoQ写作社区官方

热门活动 6月月更

数据行业中的建模是什么?

清林情报分析师

数据分析 行业分析 数据建模 业务思维 模型思维

深入 HTTP/3(2)|不那么 Boring 的 SSL

SOFAStack

互联网 TLS HTTP3.0 QUIC协议 HTTP API

聚焦无障碍阅读,福昕捐出2000套福昕高级PDF编辑器

联营汇聚

PingCAP Clinic 服务:贯穿云上云下的 TiDB 集群诊断服务

PingCAP

TiDB 查询优化及调优系列(四)查询执行计划的调整及优化原理

PingCAP

企业的文档管理策略

小炮

文档管理

HDFS 细粒度锁优化,FusionInsight MRS有妙招

华为云开发者联盟

hdfs NameNode 元数据 FusionInsight MRS FGL

Kube-OVN v1.10.0:新增Windows节点支持,用户自定义子网ACL等10+硬核功能

York

云原生 网络 cni

Java Core「4」java.util.concurrent 包简介

Samson

学习笔记 5月月更 Java core

百度智能小程序巡检调度方案演进之路

百度Geek说

大数据学习必备 | 推荐几个牛X 的 github 项目,助你事半功倍

大数据梦想家

大数据 学习资料 Github'

又一国际知名律师事务所选择福昕PDF

联营汇聚

技术立根,行业立范,发展立本:中国工业互联网的2.0新征程

脑极体

十一、云原生网络微隔离

穿过生命散发芬芳

5月月更 微隔离

为什么穷人越穷,富人越富?

大数据梦想家

程序人生

末流985,秋招斩获多家大厂offer 经验分享

大数据梦想家

面经分享 大数据开发

「v2.4」千呼万唤的图形化编排,来了!

Jianmu

持续集成 低代码 开发工具 开源项目 节点编排

7 款最棒的开源 React UI 库测评 - 特别针对国内使用场景推荐

蒋川

JavaScript react.js 开源 UI 组件库

英特尔开源项目推动SYCL标准采用,打破单个厂商封闭生态系统

科技之家

云原生时代,热门监控工具对比与使用场景分析

云智慧AIOps社区

云原生 监控 Grafana Prometheus 监控宝

使用 awk 命令统计文本

程序员小航

后端 awk Linxu

没有店面店铺可以做自助洗车吗?

共享电单车厂家

自助洗车加盟 自助洗车店面

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