📜  如何使用Python和 MSG91 API 发送 SMS 警报(1)

📅  最后修改于: 2023-12-03 15:08:25.662000             🧑  作者: Mango

如何使用Python和 MSG91 API 发送 SMS 警报

在现代软件开发中,负责部署和维护应用程序的运维人员需要监视诸如服务器负载、系统磁盘空间、错误日志等指标。SMS 警报是一种非常重要的工具,它可以让操作人员在出现问题时及时获得通知,并立即采取行动。

本篇文章将介绍如何使用 Python 编程语言和 MSG91 API 发送 SMS 警报。

1. 准备工作
1.1 注册 MSG91 账户并创建 API 密钥

MSG91 是一个广泛使用的 SMS 网关服务提供商。在使用 MSG91 API 发送 SMS 之前,您需要先注册账户并创建 API 密钥。

  1. 请访问 https://msg91.com/ 并注册一个新账户。
  2. 在 MSG91 控制台中,转到“API 部分”,单击“生成新密钥”按钮,并保存生成的 API 密钥。
1.2 安装必要的 Python 库

在继续下一步之前,请确保您已经安装以下 Python 库:

  • requests
  • json

这些库是我们在编写 Python 脚本时将要使用的。

2. 编写 Python 脚本

现在我们已经准备好了开始写 Python 脚本。

首先,我们需要使用 requests 库向 MSG91 API 发送 POST 请求。以下是一个简单的 Python 脚本,其中请求头需要包含您的 API 密钥、目标手机号码和您要发送的 SMS 信息。

import requests
import json

url = "https://api.msg91.com/api/v5/flow/"
mobile_number = "1234567890"
auth_key = "YOUR_AUTH_KEY"

payload = {
  "flow_id": "YOUR_FLOW_ID",
  "mobile": mobile_number,
  "extra_param": {},
  "global_var": {},
  "custom_key": {},
  "engine": "1",
  "creative_id": "1",
  "pl": "v4",
  "authkey": auth_key
}

headers = {
  "Content-Type": "application/json"
}

response = requests.request("POST", url, headers=headers, data=json.dumps(payload))

print(response.text)

接下来,我们需要将上面的代码中的以下值替换为自己的值:

  • mobile_number:要发送 SMS 的手机号码。
  • auth_key:在 MSG91 控制台中生成的 API 密钥。
  • flow_id:消息模板的 ID。
  • creative_id:消息模板的创意 ID。

警报消息模板应该在 MSG91 控制台中设置为模板 ID 和创意 ID,以便发送警报 SMS。

3. 进一步改进

上面的 Python 脚本提供了一个简单的方法来发送 SMS 警报。但是,我们可以做一些额外的工作,以在实际中实现更好的警报。

例如,我们可以使用 Python 的 logging 库来记录警报以及发送 SMS。以下是修改后的脚本示例:

import logging
import requests
import json

# 创建一个记录器对象
logger = logging.getLogger(__name__)

# 设置日志级别
logger.setLevel(logging.INFO)

# 创建文件处理器
handler = logging.FileHandler("sms.log")

# 创建格式化器
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")

# 将格式器添加到处理器
handler.setFormatter(formatter)

# 将处理器添加到记录器
logger.addHandler(handler)


def send_sms(mobile_number):
    url = "https://api.msg91.com/api/v5/flow/"
    auth_key = "YOUR_AUTH_KEY"

    payload = {
        "flow_id": "YOUR_FLOW_ID",
        "mobile": mobile_number,
        "extra_param": {},
        "global_var": {},
        "custom_key": {},
        "engine": "1",
        "creative_id": "1",
        "pl": "v4",
        "authkey": auth_key
    }

    headers = {
        "Content-Type": "application/json"
    }

    try:
        # 向 MSG91 API 发送请求
        response = requests.request("POST", url, headers=headers, data=json.dumps(payload))

        # 如果 SMS 成功发送,则记录日志
        if response.status_code == 200:
            logger.info("SMS sent to %s", mobile_number)
        else:
            logger.error("Failed to send SMS to %s with error code %s", mobile_number, response.status_code)

    except Exception as e:
        # 如果发送 SMS 时出现错误,则记录日志
        logger.error("Failed to send SMS to %s with error %s", mobile_number, e)


# 在运行时发送 SMS 警报
if __name__ == '__main__':
    mobile_number = "1234567890"

    # 发送 SMS 警报
    send_sms(mobile_number)

这个脚本做了一些额外的工作。例如,它已经添加了一个文件处理器用于记录警报,并使用 logging 模块设置了记录器的日志级别。在发送 SMS 时,脚本还捕获任何异常并记录错误。

4. 总结

通过使用 Python 编程语言和 MSG91 API,我们可以轻松地在软件开发中实施 SMS 警报通知。在准备工作中,我们注册并设置了 MSG91 账户,并在代码中添加了必要的信息,例如 API 密钥和 SMS 模板 ID。我们还修改了脚本以记录警报和捕获异常。