使用 Python 创建 WhatsApp 机器人:开发人员分步指南

2025-06-10

使用 Python 创建 WhatsApp 机器人:开发人员分步指南

对于那些没有时间阅读的人:

本教程旨在指导您使用 Python 开发 WhatsApp 机器人,并充分利用 Whapi.Cloud 的功能。Python 以其简洁易读而闻名,是一种多功能的编程语言,适用于包括机器人开发在内的各种应用。

图片描述

读完本指南后,您将掌握开发和扩展自己的 WhatsApp 机器人所需的基础知识和实践经验,从而为通过自动化技术增强沟通和互动的无限可能铺平道路。无论您的目标是创建用于客户支持、内容分发还是任务自动化的机器人,本教程都将为您提供使用 Python 开启 WhatsApp 机器人开发之旅的宝贵见解。

准备工作环境

在深入研究机器人的开发之前,通过安装 Python 和设置必要的库和工具来准备开发环境至关重要。

安装 Python

如果您尚未安装 Python,可以从 Python 官方网站下载。建议使用 Python 3.6 或更高版本,因为它包含许多新功能和优化。安装过程非常简单,您可以按照提示完成。

设置虚拟环境

安装 Python 后,最好创建一个虚拟环境。虚拟环境是一个独立的 Python 环境,您可以在其中安装库和依赖项,而不会影响 Python 的全局安装。要创建虚拟环境,请打开终端或命令提示符并运行以下命令:

$ mkdir whatsapp_bot
$ cd whatsapp_bot
$ python3 -m venv venv
Enter fullscreen mode Exit fullscreen mode

要激活虚拟环境:
$ .\venv\Scripts\activate
在 MacOS/Linux 上:
$ source venv/bin/activate

安装必要的库

激活虚拟环境后,您需要安装开发机器人所需的库。在本教程中,我们主要使用 Flask 处理 HTTP 请求,并使用请求库与 Whapi.Cloud API 进行交互。

$ pip install Flask requests

选择一个你熟悉的集成开发环境 (IDE)。PyCharm、Visual Studio Code 和 Jupyter 都是不错的选择。选择好之后,配置你的 IDE,使用你创建的虚拟环境作为 Python 解释器。

连接到 WhatsApp API

Whapi.Cloud 是一个 API 网关,方便与 WhatsApp 集成。这使得 Cloud API 能够完全自动化所有 Messenger 功能,即使 Cloud API 的限制很严格,消息处理成本也很高。本文将介绍几种在 WhatsApp 中发送、接收和处理消息的方法,但这款工具的功能远不止于此。

连接到 Whapi.Cloud 实现 WhatsApp 自动化是创建 WhatsApp 机器人的基础步骤。
在 Whapi.Cloud 上注册

开启您的旅程,请先在 Whapi.Cloud 上注册一个免费账户。此步骤非常简单,无需任何信用卡信息。注册后,您可以立即访问测试频道,但会有一些限制。

连接您的手机

测试通道启动大约需要一分钟。激活后,连接您的手机即可启用 WhatsApp 自动化功能。该服务将利用您连接的手机发送消息。以下是分步说明:

  1. 点击您的 Whapi.Cloud 帐户中的试用频道来访问二维码。
  2. 在您的移动设备上打开 WhatsApp。
  3. 导航至设置->链接设备->链接设备->扫描二维码

这种快速的连接过程是 Whapi.Cloud 的突出特点,使您能够在几分钟内启动并运行。

图片描述

频道定制和配置

在连接的第二步和第三步中,系统会提示您个性化您的频道。您可以根据自己的喜好命名频道、配置 webhook 并修改其他设置。不过,这些步骤可以先跳过,稍后再进行完善。

获取API令牌

您的通道恢复运行后,请在限制信息下方的中心区块中找到您的 API 令牌。此令牌对于验证您的 API 请求至关重要。通常,它会作为 Bearer 令牌或请求参数包含在请求标头中,具体取决于所使用的 API 方法。

使用 Webhook

Webhook 对于有效管理传入消息至关重要。您可以在 Whapi.Cloud 帐户的设置中配置它们。收到消息时,配置的 Webhook URL 将收到包含消息数据的 POST 请求,从而使您的机器人能够处理传入消息并做出相应的响应。我们将在接下来的部分中深入探讨 Webhook 的用法。

图片描述

使用 Python 发送 WhatsApp 消息

初步设置完成且环境准备就绪后,下一个基本步骤就是发送一条简单消息。Python 拥有丰富的库,它提供了一种简洁直接的方法来执行此操作,即使用广泛用于发送 HTTP 请求的请求库。

下面是一个基本示例,演示如何使用 Python 发送简单的文本消息。

import requests

url = "https://gate.whapi.cloud/messages/text?token=YOUR_TOKEN"

payload = {
    "typing_time": 5,
    "to": "1234567891@s.whatsapp.net",
    "body": "Hello, world!"
}
headers = {
    "accept": "application/json",
    "content-type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
Enter fullscreen mode Exit fullscreen mode

在此示例中:

  • url:这是 Whapi.Cloud 提供的用于发送短信的端点,包括 API 令牌。
  • 有效载荷:它包含诸如打字时间(用户看到“打字...”状态的时间长度)、收件人的 WhatsApp 号码(域名为 @s.whatsapp.net)和正文(实际消息文本)等参数。
  • 标题:用于将内容类型设置为 JSON。

所有参数的列表可在文档中找到

执行脚本将向指定的 WhatsApp 号码发送“Hello, world!”消息,并且服务器的响应将打印到控制台。

解释

request.post() 方法向指定的 URL 发起 HTTP POST 请求。json=payload 参数用于以 JSON 格式发送有效负载,headers=headers 参数用于设置请求标头,以告知服务器所发送内容的类型。

一旦消息成功发送,response.text 将打印服务器的响应,提供有关消息发送成功或失败的信息。

处理传入消息

处理传入消息是 WhatsApp 机器人开发的关键步骤。在本章中,我们将介绍 webhook 的概念、其用途、通过仪表盘或 API 进行设置的过程,以及处理和响应传入消息的基本逻辑。

什么是 Webhook?

Webhook 是一种在事件发生时触发的 HTTP 回调;它是应用程序之间进行通信的简单方式。在 WhatsApp 机器人中,Webhook 用于接收来自 WhatsApp 用户的消息或事件通知。Whapi.Cloud 允许为不同的事件(消息、确认、聊天、状态)设置多个具有不同模式(正文、路径、方法)的钩子,从而为各种用例提供​​灵活性和广泛的覆盖范围。

通过接口和 API 设置 Webhook

图片描述

您可以通过 Whapi.Cloud 个人账户的界面或 API 编程方式设置 Webhook。以下是一段通过 API 设置的 Python 代码:

import requests

url = "https://gate.whapi.cloud/settings?token=YOUR_TOKEN"

payload = {
    "callback_backoff_delay_ms": 3000,
    "max_callback_backoff_delay_ms": 900000,
    "callback_persist": True,
    "pass_through": True,
    "sent_status": False,
    "webhooks": [
        {
            "events": [
                {
                    "type": "messages",
                    "method": "post"
                },
                {
                    "type": "ack",
                    "method": "post"
                }
            ],
            "mode": "body",
            "url": "<Webhook URL, http or https>"
        }
    ]
}
headers = {
    "accept": "application/json",
    "content-type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.text)
Enter fullscreen mode Exit fullscreen mode

在此脚本中:

  • 该 URL 是用于调整设置的 Whapi.Cloud 端点,包括 API 令牌。
  • 有效载荷包含 webhook 配置。
  • 有效负载中的 webhook 数组指定事件以及事件发生时 webhook 将发送 HTTP POST 请求的 URL。

Whapi.Cloud 的独特功能和优势在于,它允许针对不同事件设置多个具有不同模式的 Webhook,从而提供多功能性和更广泛的交互能力。此功能支持开发更复杂、响应更快的机器人,从而增强用户交互和体验。

为了创建一个处理传入消息的服务器,我们将使用 Flask,这是一个基于 Python 的轻量级 WSGI Web 应用程序框架。在本例中,机器人将响应传入的消息,并根据收到的命令发送不同的回复。

以下是机器人的示例代码(用于发送和接收 whatsapp 消息的 python 代码):

from flask import Flask, request
import requests

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    # Retrieving incoming message
    incoming_message = request.json

    # Retrieving the text of the message
    message_text = incoming_message.get('body', '').lower()

    # Deciding the reply based on the command
    if message_text == 'hello':
        response_text = 'Hi! How can I assist you today?'
    elif message_text == 'info':
        response_text = 'I am a WhatsApp bot created to assist you!'
    else:
        response_text = 'I am sorry, I do not understand the command.'

    # Sending the reply message
    send_message(response_text, incoming_message['from'])

    return '', 200

def send_message(response_text, to):
    # URL to send messages through the Whapi.Cloud API
    url = "https://gate.whapi.cloud/messages/text?token=YOUR_TOKEN"

    # Forming the body of the message
    payload = {
        "to": to,
        "body": response_text
    }
    headers = {
        "accept": "application/json",
        "content-type": "application/json"
    }

    # Sending the message
    response = requests.post(url, json=payload, headers=headers)
    print(response.text)

if __name__ == '__main__':
    app.run(port=5000, debug=True)
Enter fullscreen mode Exit fullscreen mode

在此示例中:

  • 我们正在使用 Flask 创建一个 Web 服务器并在 /webhook 端点上设置一个 Webhook。
  • 当机器人收到新消息时,它会分析该消息的文本并使用 send_message 函数发送适当的回复,在该函数中我们使用了上一章中的消息发送代码。

现成的简单 Python WhatsApp 聊天机器人的源代码

下面是使用 Python 创建简单 WhatsApp 机器人的完整代码示例。

GitHub 上一个强大的 WhatsApp 机器人的源代码

在此代码示例中:

  • 当收到短信时,机器人会通过重复收到的文本进行响应。
  • 我们创建一个小组并展示如何发送不同类型的消息

请将 YOUR_API_TOKEN 替换为你在 Whapi.Cloud 获得的真实 API 令牌。此代码是一个基本示例,可以添加其他函数和处理程序,以创建更复杂、更具交互性的机器人。

扩展功能

在本章中,我们将深入研究扩展 WhatsApp 机器人的功能,使其能够发送媒体消息、创建群组、统计群组中的用户数量以及处理传入的群组消息。
发送 WhatsApp 媒体消息

发送媒体消息涉及通过 WhatsApp 传输不同类型的媒体,例如图像、视频、动图、音频、语音备忘录、文档和贴纸。以下是发送图像的示例:

import requests

url = "https://gate.whapi.cloud/messages/media/image?caption=Name%20of%20pic&to=1234567891%40s.whatsapp.net&mentions=&token=YOUR_TOKEN"

payload = "data:image/png;name=Untitled2.png;base64,iVBORw0KGgoAAAANSUhEUgAAAx...V//5Tq42UXih5JAAAAAElFTkSuQmCC"
headers = {
    "accept": "application/json",
    "content-type": "application/pdf"
}

response = requests.post(url, data=payload, headers=headers)

print(response.text)
Enter fullscreen mode Exit fullscreen mode

在上面的例子中:

  • url 指定发送图像的 API 端点,其中包含标题和收件人作为参数。
  • 有效载荷包含 base64 编码的图像及其名称。
  • 标题中的内容类型指定了发送的媒体类型,在本例中,它是一张图片。

通过相应地修改 url 和内容类型,可以将此方法推广到发送其他类型的媒体,确保它们与正在发送的媒体相匹配。

WhatsApp API 群组管理

检索群组详细信息并统计参与者

要检索群组的详细信息(包括参与者),您可以向 Whapi 提供的相应端点发出 GET 请求。以下是如何检索群组详细信息的示例:

import requests

url = "https://gate.whapi.cloud/groups/120363175154208908%40g.us?token=YOUR_TOKEN"

headers = {"accept": "application/json"}

response = requests.get(url, headers=headers)

print(response.text)
Enter fullscreen mode Exit fullscreen mode

此请求的响应将包含有关该群组的各种详细信息,例如其 ID、名称、类型、时间戳以及参与者列表及其在群组中的排名。以下是响应示例:

{
  "id": "120363175154208908@g.us",
  "name": "Hello",
  "type": "group",
  "timestamp": 1694784032,
  "not_spam": true,
  "participants": [
    {"id": "14406616972", "rank": "creator"},
    {"id": "15057426924", "rank": "member"},
    {"id": "15056452483", "rank": "member"}
  ],
  "name_at": 1694612985,
  "created_at": 1694612985,
  "created_by": "14406616972"
}
Enter fullscreen mode Exit fullscreen mode

要统计群组中的参与者数量,只需计算响应中参与者列表的长度即可。操作方法如下:

import requests
import json

url = "https://gate.whapi.cloud/groups/120363175154208908%40g.us?token=YOUR_TOKEN"

headers = {"accept": "application/json"}

response = requests.get(url, headers=headers)

group_data = json.loads(response.text)
participants_count = len(group_data['participants'])

print(f'The number of participants in the group is {participants_count}.')
Enter fullscreen mode Exit fullscreen mode

在此示例中,json.loads(response.text) 用于将 JSON 响应字符串转换为 Python 字典,使您能够访问参与者列表并计算其长度以确定组中的参与者数量。

更多自动化 Whatsapp 群组的方法可以在这里找到

测试和调试:本地测试

在开发机器人时,持续测试和调试应用程序至关重要,以确保其正常运行且无错误。对于本地测试,您可以使用 Postman 或任何其他 API 测试工具来模拟传入消息并检查机器人的响应。
免费试用

此外,您可以使用 Python 的内置日志模块来记录机器人执行期间可能发生的重要信息、错误和异常,这将有助于更有效地识别和解决问题。

以下是在 Python 应用程序中实现日志记录的简单示例:

import logging

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

try:
    # Your bot logic here
    pass
except Exception as e:
    logger.exception("An error occurred: %s", e)
Enter fullscreen mode Exit fullscreen mode

部署和托管

彻底测试机器人并对其功能满意后,就可以将其部署到服务器上了。您可以将机器人托管在任何云服务提供商(例如 AWS、Google Cloud 或 Azure)上,也可以托管在任何支持 Python 的服务器上。

考虑使用 Docker 等服务来容器化您的应用程序,使其更易于管理、扩展和部署。此外,请务必实施适当的身份验证和加密机制,以确保应用程序的安全,尤其是在处理敏感数据时。

结论和后续步骤

现在,你应该已经拥有一个功能齐全的 WhatsApp 机器人,它可以与用户互动、处理收到的消息并发送不同类型的媒体。Python 和 Whapi.Cloud 的结合使得构建强大且功能多样的 WhatsApp 机器人变得相对简单,但这仅仅是个开始。

图片描述

通过添加更多高级功能(例如用于更智能交互的自然语言处理)或与其他 API 集成以扩展功能来继续构建您的机器人。

在我们详细的文档中,您将找到分步说明和示例方法,让您可以发送各种类型的消息,从任何文件格式、位置和联系人,到贴纸、音频、投票和商品。此外,您还可以动态地与消息进行交互:添加回复、引用、标记为已读或模拟实时打印。

我们文档中的方法将使您的业务自动化:发送产品和目录以吸引潜在客户,处理购物车,并返回放弃购物车的用户。发送调查问卷以收集反馈。创建机器人来预订活动座位等等。

请将 YOUR_API_TOKEN 替换为你在 Whapi.Cloud 获得的真实 API 令牌。此代码是一个基本示例,可以添加其他函数和处理程序,以创建更复杂、更具交互性的机器人。

免费开始

鏂囩珷鏉ユ簮锛�https://dev.to/whapicloud/creating-a-whatsapp-bot-with-python-a-step-by-step-guide-for-developer-1m9c
PREV
构建 TailwindCSS 类名的简单策略
NEXT
✔ WhatsApp Group API:开发人员指南