Serverless 框架中使用微信 / 企业微信进行消息推送

近年来,Serverless 架构逐步成为了云计算领域的热门话题。通过将应用程序拆分为单个并且独立的函数,Serverless 具有低成本、高可靠性、灵活与应用无关的优势。很多前端开发者也及时了解了 Serverless 架构,但是在实际应用中,如何使用微信或企业微信进行服务器端消息推送,是一个需要解决的问题。

什么是微信 / 企业微信

微信是目前中国使用范围最广的即时通讯软件之一,拥有近 10 亿的用户。针对企业或组织,微信开通了企业微信,具有群聊、文件传输、接收审批消息等功能,并且有专门的开发文档和接口。

如何实现微信 / 企业微信消息推送

准备工作

  1. 注册微信/企业微信开发者账号;
  2. 申请使用微信公众号/企业微信开发接口;
  3. 安装 Serverless 框架 CLI 命令行工具,详见 serverless.com;

Serverless 框架下准备 HTTP 服务

使用 Serverless 框架搭建一个简单的 HTTP 服务,以便可以通过接口发送消息。以下是快速开始参照摘自 Serverless 官网。

  1. 创建项目
$ sls create --template aws-python3
  1. 安装依赖
$ cd my-service
$ npm init -y
$ npm install --save-dev serverless-python-requirements
$ npm install --save requests
  1. 编辑 serverless.yml 文件,在 functions 下面添加以下内容
functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get
  1. 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 服务。

配置企业微信机器人

  1. 登录企业微信管理后台,选择「应用管理」 -> 「创建应用」 -> 「自建」,创建相应的应用。得到「应用 ID」和「应用 Secret」信息。

  2. 在相应的「安全」 -> 「接口权限」下,开启「Webhook」应用权限。

  3. 创建「应用」 -> 「自建」 -> 「机器人」。创建后得到「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


纠错反馈