2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

2022-09-19:给定字符串 S and T,找出 S 中最短的(连续)子串 W ,使得 T 是 W 的 子序列 。 如果 S 中没有窗口可以包含 T 中的所有字符,返回空字符串 ““。 如果有不

福大大架构师每日一题

算法 rust 福大大

在windows电脑上配置kubectl远程操作kubernetes

程序员欣宸

Kubernetes 9月月更

[极致用户体验] 多页面应用里,「网页内返回」按钮,何时用 history.back 何时用 replaceState?

HullQin

CSS JavaScript html 前端 9月月更

那些你不知道的炫酷按钮交互效果

南城FE

CSS 前端 动画 交互设计 按钮

行业方案|“机场”行业智能运维解决方案介绍

云智慧AIOps社区

解决方案 智能运维 运维管理 智能运维AIOps 监控安全

《简单记个笔记》之部分CSS选择器介绍

吉师职业混子

9月月更

Python 教程之变量

芯动大师

变量 9月月更 Python语法

Python语法之数据类型

芯动大师

Python 数据类型 9月月更

Chrome操作指南——入门篇(七)console中的await和log

Augus

Chrome开发者工具 9月月更

Flomesh 多租户 Ingress Controller

Flomesh

Service Mesh 服务网格

面对全新的编程语言,这些思路可以帮助你察觉漏洞

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞利用

Chrome操作指南——入门篇(五)Snippets

Augus

Chrome开发者工具 9月月更

NGINX 的未来:回到开源的初心

NGINX开源社区

nginx Kubernetes nginx 开源版 NGINX Kubernetes Gateway NGINX Amplify

PLG SaaS 产品 Figma 商业模式拆解

程序员泥瓦匠

SaaS

高并发之负载均衡

源字节1号

软件开发

挑战30天学完Python:Day3夯实基础-布尔值和运算符

MegaQi

9月月更 挑战30天学完Python

如何用AR Engine开发一个虚拟形象表情包?

HarmonyOS SDK

AR

Python教程之Python简介

芯动大师

编程语言 9月月更 Python简介

Qt|ListWidget控件总结

中国好公民st

List qt 9月月更

ScrumMaster可不是项目经理!

ShineScrum

Scrum ScrumMaster 项目经理

MASA MAUI Plugin 安卓蓝牙低功耗(一)蓝牙扫描

MASA技术团队

.net MASA MAUI Xamarin

Chrome操作指南——入门篇(六)console.injector

Augus

Chrome开发者工具 9月月更

Orbeon form 的安装和使用教程

汪子熙

typescript SAP Hybris form 9月月更

Hinton等谈深度学习十年;PyTorch落地Linux基金会的影响;机器学习界的“GitHub”|AI系统前沿动态

OneFlow

人工智能

通过爬虫爬取一些图片

吉师职业混子

9月月更

史上最详细vue的入门基础

楠羽

Vue 笔记 9月月更

【字符串函数内功修炼】strlen + strstr + strtok + strerror(三)

Albert Edison

C语言 9月月更 strlen strstr strtok

OKR之剑·理念篇02: OKR布道之旅

vivo互联网技术

团队管理 OKR 目标管理

本周预告:资深架构师解读多架构体系下的内核与系统开发等技术演讲 | 第47-48期

OpenAnolis小助手

开源 ebpf sig 龙蜥大讲堂 普华

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