近年来,Serverless 架构逐步成为了云计算领域的热门话题。通过将应用程序拆分为单个并且独立的函数,Serverless 具有低成本、高可靠性、灵活与应用无关的优势。很多前端开发者也及时了解了 Serverless 架构,但是在实际应用中,如何使用微信或企业微信进行服务器端消息推送,是一个需要解决的问题。
什么是微信 / 企业微信
微信是目前中国使用范围最广的即时通讯软件之一,拥有近 10 亿的用户。针对企业或组织,微信开通了企业微信,具有群聊、文件传输、接收审批消息等功能,并且有专门的开发文档和接口。
如何实现微信 / 企业微信消息推送
准备工作
- 注册微信/企业微信开发者账号;
- 申请使用微信公众号/企业微信开发接口;
- 安装 Serverless 框架 CLI 命令行工具,详见 serverless.com;
Serverless 框架下准备 HTTP 服务
使用 Serverless 框架搭建一个简单的 HTTP 服务,以便可以通过接口发送消息。以下是快速开始参照摘自 Serverless 官网。
- 创建项目
$ sls create --template aws-python3
- 安装依赖
$ cd my-service $ npm init -y $ npm install --save-dev serverless-python-requirements $ npm install --save requests
- 编辑
serverless.yml
文件,在functions
下面添加以下内容
functions: hello: handler: handler.hello events: - http: path: hello method: get
- 在
handler.py
文件中添加以下代码
import json import requests def hello(event, context): headers = {'Content-Type': 'application/json;charset=utf-8'} url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=12345-abc-67890' data = {"msgtype": "text", "text": {"content": "这是一条测试消息!"}} r = requests.post(url, headers=headers, data=json.dumps(data)) return { "statusCode": 200, "body": json.dumps(r.json()) }
完成后在命令行输入 sls deploy
命令,部署 Serverless 服务。
配置企业微信机器人
登录企业微信管理后台,选择「应用管理」 -> 「创建应用」 -> 「自建」,创建相应的应用。得到「应用 ID」和「应用 Secret」信息。
在相应的「安全」 -> 「接口权限」下,开启「Webhook」应用权限。
创建「应用」 -> 「自建」 -> 「机器人」。创建后得到「Webhook URL」。
发送消息
修改 handler.py
文件,将以下代码替换到之前的代码中,这是一个关于使用企业微信机器人发送消息的方法。
def send_message(url, body): headers = {'Content-Type': 'application/json;charset=utf-8'} data = { "msgtype": "markdown", "markdown": { "content": body } } r = requests.post(url, headers=headers, data=json.dumps(data)) return r def hello(event, context): url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=12345-abc-67890" # webhook url body = """# 今日要闻 ## 1. 新产品发布 ## 2. 业绩报告公布 ## 3. xx 年公司计划 更多信息请查看[官网](www.***.***) """ result = send_message(url, body) return { "statusCode": 200, "body": result.text }
完成后重新部署 Serverless 服务即可成功发送消息。
总结
通过上述步骤,我们成功使用 Serverless 框架和企业微信机器人,实现了消息的推送。Serverless 不仅可以让前端开发者用更加熟悉的语言、工具与服务代码去管理底层的架构,同样还可以结合现有的第三方标准服务,如微信等。这样,开发者们可以专注于应用程序的实现与开发,而不是底层的基础架构管理。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a6e092add4f0e0fffb0a11