2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

发布了 1963 篇内容, 共 168.5 次阅读, 收获喜欢 82 次。

关注

评论

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

据+AI赋能教育智能化转型,华为云技术优势明显!

爱尚科技

Mysql索引覆盖

京东科技开发者

MySQL 数据库 sql 搜索引擎 优化

重磅!XTransfer荣登InfoQ【十大开发者最向往的高价值技术团队】榜单

XTransfer技术

DTT年度收官圆桌π,华为云8位技术专家的年末盘点

华为云开发者联盟

云计算 后端 华为云 12 月 PK 榜

HarmonyOS多媒体框架介绍

HarmonyOS开发者

HarmonyOS

华为云大数据BI,企业数字化运营得力助手

爱尚科技

如何正确使用网格设置制作卡片类型展示页面

Towify

零信任与 K8s 环境实践

HummerCloud

k8s 零信任 kubernetes 运维

等保四级适用于哪些领域?一年一次吗?

行云管家

等保 等级保护 等保四级

跳槽一次能涨多少?总算是见识到跳槽天花板了

程序知音

Java java面试 后端开发 八股文 Java面试题

时序数据库 TDengine 签约新奥新智

TDengine

数据库 tdengine 时序数据库

理解iOS端的WebView同层组件

珲少

跳板攻击原理及如何追踪定位攻击者主机(下)

郑州埃文科技

IP地址 跳板攻击 攻击溯源

Liga妙谈 | 找准「话事人」,高效甄别和响应用户反馈

LigaAI

产品经理 敏捷开发 PO 产品负责人 12 月 PK 榜

行云管家荣膺STIF第三届国际科创节 “2022年度数字化创新典范奖”

行云管家

信息安全 数字化 国际科创节

使用 SQL 实现同比环比分析

搞大屏的小北

数据可视化 同比环比 展示同比环比 BI大屏同比环比

有了华为云大数据BI,企业数字化转型该如何做?

爱尚科技

如何在等待页面制作加载动画

Towify

一文讲清「敏捷路线图」| Liga译文

LigaAI

Scrum 产品经理 敏捷开发 软件开发 12 月 PK 榜

Apache APISIX 3.1.0 版本正式发布

API7.ai 技术团队

开源 api 网关 APISIX apache 社区

为有状态应用而生,云原生本地存储Carina正式进入CNCF沙箱

BoCloud博云

云原生 本地存储 Carina

捷报频传 | Bonree ONE获2022科技赋能金融业场景金融建设突出贡献奖

博睿数据

可观测性 智能运维 博睿数据 ONE平台 荣誉奖项

智能制造 | AIRIOT智慧工厂管理解决方案

AIRIOT

物联网 智慧工厂 物联网系统搭建

着眼全局提升决策质量,华为云大数据BI让企业看见未来

爱尚科技

云网络运维必备神器:全链路故障诊断与分析

华为云开发者联盟

云计算 后端 华为云 12 月 PK 榜

这个API管理工具不登录不下载就能用!

不想敲代码

API 接口管理 协同办公 协同软件

直播回顾 | 根因分析助力AIOps走得更远!

博睿数据

可观测性 智能运维 博睿数据

聚焦电商场景数字化转型升级,华为云大数据解决方案高效赋能

爱尚科技

工业数据分析为什么要用FusionInsight MRS IoTDB?

华为云开发者联盟

大数据 后端 华为云 工业数据 12 月 PK 榜

接口自动化测试不想写代码?这款工具强烈推荐

不想敲代码

自动化测试 API 自动化测试平台

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