WhatsApp机器人被广泛用于客户支持、自动回复、通知以及内部工具。你无需依赖昂贵的第三方平台,而是可以使用现代的开源工具来构建并部署自己托管的WhatsApp机器人。
在本教程中,你将学习如何使用以下工具来构建和部署一个可投入实际使用的WhatsApp机器人:
-
FastAPI
-
Evolution API
-
Docker
-
EasyPanel
-
Google Cloud Platform (GCP)
完成本指南的学习后,你将拥有一个能够正常运行的WhatsApp机器人,它会被连接到你的个人WhatsApp账户,并部署在云虚拟机上。
目录
系统架构的工作原理
在开始安装任何软件之前,让我们先了解这个系统的运作机制。

你的WhatsApp机器人的工作原理
在继续进行设置之前,让我们先确保你明白幕后实际发生了什么。别担心——这里不需要任何技术背景知识。
想象一种邮政服务
可以把你的WhatsApp机器人想象成一种速度极快、完全自动化的邮政服务:
-
有人给你发了一封邮件(一条WhatsApp消息)。
-
一位“邮递员”(Evolution API)会接收这条消息,并将其送到你的“办公室”。
-
你的“办公室经理”(FastAPI机器人)会阅读这条消息并回复。
-
那位“邮递员”又会将回复送回去。
就是这么简单的,整个系统就是这样的运作流程。
7个步骤
-
有人给你的WhatsApp号码发送消息——就像给朋友发短信一样。
-
Evolution API会检测到这条消息——它会持续监控你的WhatsApp号码,随时等待新消息的到来,就如同前台接待员时刻守在电话旁一样。
-
Evolution API会将这条消息传递给你的机器人——它会把消息内容发送到你的应用程序中,并告诉你“嘿,你有一条新消息!”
-
你的机器人会阅读这条消息并决定如何回复——这就是你的代码发挥作用的地方。
-
你的机器人会将回复发送回Evolution API——“好的,请发送这个回复吧。”
-
Evolution API会通过WhatsApp将回复送达给对方。
-
用户通常会在几秒钟内就在自己的手机上看到这条回复。
一句话总结
用户 → WhatsApp → Evolution API → 你的机器人 → Evolution API → WhatsApp → 用户
本指南中的每一步其实都在搭建这个流程中的某个环节。一旦所有环节都连接起来,整个系统就能自动运行了。
这种架构能让你实现自动回复功能,同时还能让你完全掌控自己的基础设施。
为什么选择这些工具?
让我们简要了解一下为什么会选择这些工具。
FastAPI
FastAPI是一个用于构建API的现代Python框架。它运行速度快、体积轻,非常适合处理来自Evolution API的Webhook请求。
Evolution API
Evolution API是一个基于Baileys构建的自助式WhatsApp自动化服务器。使用它可以直接连接你的个人WhatsApp账户,而无需获得官方的WhatsApp Business API授权。
Docker
Docker允许我们在容器中运行应用程序。这样可以让部署过程更加一致、便于迁移,并且能够直接用于生产环境。
EasyPanel
EasyPanel是一个用于管理Docker服务的图形化工具。我们不需要手动编写Docker Compose配置文件,而是可以通过EasyPanel的界面轻松地部署和管理我们的服务。
Google Cloud Platform (GCP)
GCP提供了用于托管我们基础设施的虚拟机。我们将使用Ubuntu 22.04服务器来运行Docker、EasyPanel、Evolution API以及我们的FastAPI机器人。
我之所以选择这些工具,是因为它们非常实用、体积轻巧,而且非常适合在实际生产环境中使用。
先决条件
在开始之前,请确保你满足以下要求:
-
拥有Google Cloud、AWS或Azure账户。
-
已开启计费功能。
-
已经选择了一个项目。
-
能够使用Cloud Shell。
-
具备基本的Linux和Docker知识。
步骤1:在GCP上创建防火墙规则
我们需要允许流量进入虚拟机上的特定端口。因此,我们在GCP Cloud Shell中运行以下命令:
gcloud compute firewall-rules create easypanel-whatsapp-fw \
--network default \
--direction INGRESS \
--priority 1000 \
--action ALLOW \
--rules tcp:22,tcp:80,tcp:443,tcp:3000,tcp:8080,tcp:9000,tcp:5000-5999 \
--source-ranges 0.0.0.0/0 \
--description "SSH、EasyPanel、Evolution API、Bot"
这条命令的作用是:
-
创建一个名为
easypanel-whatsapp-fw的防火墙规则 -
应用于default网络
-
允许外部互联网流量进入(
INGRESS方向) -
开放以下端口:
-
22→ SSH(用于服务器访问) -
80→ HTTP -
443→ HTTPS -
3000, 8080, 9000→ 应用程序面板/API接口 -
5000–5999→ 自定义应用程序端口范围
-
-
允许任何IP地址访问该虚拟机(
0.0.0.0/0)
简单来说,这条规则使得外部用户能够通过互联网访问你的应用程序和服务。它允许外部流量进入你的虚拟机。
步骤2:创建一台虚拟机(Ubuntu 22.04系统)
现在我们要创建一台用于托管所有服务的服务器。在GCP Cloud Shell中运行以下命令,来配置一台安装了Ubuntu 22.04系统的虚拟机。
gcloud compute instances create whatsapp-vm \
--zone=asia-south1-a \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--boot-disk-size=30GB \
--tags=easypanel
这条命令会在Google Cloud上创建一台新的虚拟机:
-
名称:
whatsapp-vm -
位置(所在区域):
asia-south1-a(印度地区) -
机器配置:
e2-medium(2个CPU核心,4GB内存) -
操作系统: Ubuntu 22.04 LTS
-
磁盘容量: 30GB
-
标签:
easypanel(用于应用防火墙规则)
这样,你就在Google Cloud上获得了一台Linux服务器,可以用来运行EasyPanel、WhatsApp机器人程序或你的API服务。
注意:请等待大约一分钟,让虚拟机启动完成。
步骤3:通过SSH登录到虚拟机
使用SSH连接到你在Google Cloud上刚刚创建的虚拟机。
gcloud compute ssh whatsapp-vm --zone=asia-south1-a
这条命令会使用SSH协议,连接到位于asia-south1-a区域的whatsapp-vm虚拟机。
登录成功后,你就可以开始安装软件或运行各种命令了。此时你会看到终端提示符,说明你已经成功进入了Ubuntu服务器环境,可以开始后续操作了。
步骤4:安装Docker
要运行EasyPanel和Evolution API,必须安装Docker。
首先更新系统:
sudo apt update -y
sudo apt install -y curl
这个命令会完成两件事:
-
sudo apt update -y→ 更新服务器上的软件包列表,使可用软件的信息保持最新。 -
sudo apt install -y curl→ 安装curl工具,该工具可用于通过终端从互联网下载文件。
这样就可以为服务器做好准备,并安装一个用于下载及安装其他软件的工具。
接下来安装Docker:
curl -fsSL https://get.docker.com | sudo sh
这个命令使用curl下载Docker的官方安装脚本,然后通过|符号将脚本直接传递给sudo sh,从而以管理员权限运行该脚本。
这样就能在服务器上自动安装Docker了。
安装完成后,Docker就应该已经成功安装好了。
启用Docker:
sudo systemctl enable docker
sudo systemctl start docker
这个命令也会完成两件事:
-
enable docker→ 使Docker在服务器每次重启时自动启动。 -
start docker→ 立即启动Docker。
这样就能确保Docker始终处于开启状态,即使在服务器重启后也能继续运行。
允许Ubuntu用户使用Docker:
sudo usermod -aG docker ubuntu
这个命令会将ubuntu用户添加到Docker组中。
这一点非常重要:默认情况下,每次使用Docker命令时都需要先输入sudo。但执行这条命令后,Ubuntu用户就可以直接使用Docker而无需再输入sudo了。
注意:这条命令假设你的用户名是ubuntu,因为这是Google Cloud虚拟机的默认设置。如果你的用户名不同,请将ubuntu替换成你的实际用户名。
退出当前会话并重新连接:
exit
gcloud compute ssh whatsapp-vm --zone=asia-south1-a
-
exit→ 使你退出当前的服务器会话。 -
gcloud compute ssh whatsapp-vm --zone=asia-south1-a→ 使你重新连接到Google Cloud虚拟机。
为什么要这样做:在将ubuntu用户添加到Docker组后,必须先退出会话然后再重新连接,这样才能使权限变更生效。
测试Docker:
docker run hello-world
这个命令会下载一个名为hello-world的小型测试镜像,在Docker环境中运行它,如果Docker运行正常,就会显示成功信息。
这个命令用于检查Docker是否已经安装完成并且能够正常工作。如果你看到了“Hello from Docker!”这样的提示,那就说明Docker运行成功了。
步骤5:安装EasyPanel
EasyPanel提供了一个用于部署Docker服务的用户界面。在虚拟机中运行以下命令:
curl -sSL https://get.easypanel.io | sudo bash
这个命令会:
-
下载官方的EasyPanel安装脚本
-
以管理员权限(sudo)运行该脚本
-
自动在您的服务器上安装并配置EasyPanel
该命令会在您的虚拟机上安装EasyPanel,这样您就可以通过网页界面来管理应用程序,而无需使用命令行。安装过程大约需要一分钟。
步骤6:打开EasyPanel控制面板
获取到自己的IP地址后,在浏览器中打开一个新的标签页,然后输入如下地址:
http://:3000
例如,如果您的IP地址是34.123.45.67,那么您应该输入:
http://34.123.45.67:3000
EasyPanel默认在端口3000上运行,因此我们在地址末尾添加了”:3000″。如果没有这个部分,您的浏览器将不知道应该在服务器上打开哪个服务。
创建一个管理员账户并登录,此时会出现EasyPanel的登录页面。
点击“创建管理员账户”按钮。
填写以下信息:
-
用户名(请选择容易记住的名称)
-
电子邮件地址
-
密码(设置一个强度较高的密码!)
-
提交表格。
现在您已经以管理员身份登录成功,可以通过EasyPanel控制面板来管理应用程序、API和机器人了。
您会看到如下所示的页面:

步骤7:部署Evolution API
-
创建一个新项目(例如:
whatsapp-1) -
进入“服务”→“模板”选项卡
-
选择Evolution API
-
部署最新版本
等待所有服务状态变为绿色。此时您会看到如下所示的页面。

接下来,打开“环境变量”设置,找到以下变量:
AUTHENTICATION_API_KEY
复制AUTHENTICATION_API_KEY的值。
打开Evolution API的控制面板
在EasyPanel中找到您的Evolution API服务。您会看到一个可点击的域名链接,其格式通常如下:
https://evolution-api.easypanel.host
点击该链接,在浏览器中打开它。系统会返回一个JSON响应,确认该服务已经成功运行。
一旦你点击该链接,就会看到一个确认操作成功的JSON响应。要继续进行登录操作,请复制响应中显示的管理员链接。这个链接会打开管理控制面板,在那里你可以完成身份验证并开始使用Evolution API。下方的截图标出了管理员URL以及版本信息,以便你随时参考。

复制管理员链接,然后在新的标签页中打开它。接下来,再复制你在上一步中获得的AUTHENTICATION_API_KEY。其具体格式如下所示:

创建一个新的实例:
-
选择频道:Baileys
-
将电话号码留空
-
为你的实例起一个名字
保存这个实例。
步骤8:连接WhatsApp
在你的实例管理控制面板中:
-
点击获取QR码
-
使用手机上的WhatsApp扫描该QR码
连接成功后,你的聊天记录和联系人信息将会自动同步。如果同步失败,请断开连接后再重新尝试。
步骤9:部署FastAPI机器人
现在我们开始部署这个机器人服务。
1. 进入EasyPanel
你正在打开刚刚安装的EasyPanel管理控制面板。在这里,你可以使用图形界面来管理应用程序、服务器和服务,而无需使用终端命令。
2>创建一个新的项目
“项目”就像是你的机器人服务的容器或文件夹,它用于整理与该应用相关的所有文件、设置和部署信息。
3>添加一个应用服务
“应用服务”指的是你的应用程序的运行实例。在这个例子中,它就是WhatsApp机器人。
4>选择Git部署方式
通过Git部署,你可以将代码仓库连接到EasyPanel。这样,EasyPanel会自动从GitHub下载你的代码,并在Docker环境中运行它。
5>粘贴你的代码仓库URL
https://github.com/rajumanoj333/wabot
这个GitHub仓库中存放着WhatsApp机器人的代码。EasyPanel会自动克隆这个仓库并准备好应用程序的部署环境。
6>在EasyPanel中配置域名
这一环节允许你为你的应用服务指定一个URL或域名。即使你没有自定义域名,也可以使用服务器的公共IP地址。你的WhatsApp机器人应用程序会在服务器上的9000端口运行。
7>将端口号设置为9000
通过将端口号设置为9000,EasyPanel就能知道应该将流量发送到哪里。
完成这一步骤后,URL格式如下:
https://your-project.easypanel.host
这是人们(以及其他服务)用来联系你的机器人的公共地址。
你正在告诉 EasyPanel:
“每当有人访问这个项目时,将他们转发到运行在 9000 端口的机器人服务上。”
如果没有这一步,机器人服务虽然会运行,但你无法通过浏览器或其他应用程序访问它。
配置环境变量
设置以下变量:
EVOLUTION_API_URL=http://evolution-api:8080
EVOLUTION_API_KEY=YOUR_AUTHENTICATION_API_KEY
INSTANCE_NAME=your_instance_name
注意:这里有两个不同的名称——AUTHENTICATION_API_KEY(在 EasyPanel 中使用)和 EVOLUTION_API_KEY(在你的机器人代码中使用)。其实它们是同一个密钥。只需将 EasyPanel 中的值复制并粘贴到这两个地方即可。
步骤 10:连接 Webhook —— 告诉 Evolution API 将消息发送到哪里
目前,你有两个独立运行的服务:
-
Evolution API:负责与 WhatsApp 连接并处理消息的服务
-
你的应用程序(fastapi 机器人):你在前几步中部署的聊天机器人
目前,这两个服务并不知道对方的存在。它们就像住在不同房间里的两个人,无法互相传递信息。而Webhook正好可以解决这个问题。
那么,Webhook 到底是什么呢?
Webhook 实际上就是一个 URL(网址),你将其提供给某个服务,这样当有事情发生时,该服务就可以自动通知另一个服务。
你要告诉 Evolution API:“每当有 WhatsApp 消息到达时,就将其转发到这个地址。”你的应用程序会驻留在这个地址上,等待接收消息、读取内容并发送回复。
可以把它想象成邮局的一个转寄地址。当邮件(也就是 WhatsApp 消息)到达时,它会自动被转发到你的应用程序那里。
让我们来设置它吧
1. 打开你的 Evolution API 控制面板。
根据之前的步骤,你应该已经打开了这个界面。在左侧边栏中,点击Events,然后再点击Webhook。在这里你可以配置 Evolution API 如何将数据发送给你的应用程序。
2>启用 webhook。
在页面顶部,你会看到“Enabled”这个词旁边有一个开关按钮。点击它,使其变为绿色。这样就表示你希望开始使用 webhook 了。
3>输入你的应用程序的 webhook URL。
在URL字段中,输入你的应用程序地址,并在末尾加上/webhook,例如:
https://your-domain.easypanel.host/webhook
将your-domain替换为你在部署应用程序时设置的实际域名。末尾的/webhook这部分非常重要:它是你的应用程序专门为接收这些消息而设置的页面。如果没有这个地址,Evolution API 就会发送消息到错误的地方。
4. 目前先不要启用“通过事件触发Webhook”和“Webhook Base64”选项。
这些都是高级设置,对于基本的聊天机器人来说并不需要。
5. 向下滚动到“事件”部分,然后启用以下两个事件:
-
MESSAGES_UPSERT:每当有人向你的WhatsApp号码发送消息时,这个事件就会被触发。如果不启用这个选项,你的应用程序就无法知道有新消息到达。
-
SEND_MESSAGE:当有消息被发送出去时,这个事件会被触发。它有助于确保回复能够正常发送出去。
其他所有事件(比如APPLICATION_STARTUP)都可以保持未启用的状态。它们处理的是群聊或联系人信息更新等功能,而我们当前的项目并不需要这些功能。
6. 点击“保存”。
对你刚刚所做的操作的简要总结
你已经在Evolution API和你的应用程序之间建立了直接的联系。现在,每当有人向你的WhatsApp号码发送消息时,Evolution API会立即将这条消息传递给你的应用程序。你的应用程序会自动读取消息、生成回复,并将其发回去。
正是这个步骤让你的聊天机器人真正“活”了起来。如果没有这个设置,别人发给你的消息根本不会被处理;而有了它,整个系统就能正常运转了。
第11步:最终测试
使用另一个WhatsApp号码发送一条消息(不要使用已经关联的号码)。
发送内容如下:
Hi
如果配置正确,你的聊天机器人应该会回复:
👋 Hello! Bot is working.
恭喜!你的WhatsApp聊天机器人现在已经可以正常使用了。
生产环境下的注意事项
在实际部署时,请考虑以下几点:
-
建议使用防火墙规则进行限制,而不是允许0.0.0.0/0这个地址访问。
-
建议使用带有自定义域名的HTTPS连接。
-
应该使用密钥管理工具来保护API密钥的安全。
-
需要定期监控日志以及容器的运行状态。
-
要设置自动备份机制。
-
能够完全控制基础设施。
-
无需依赖昂贵的SaaS平台。
- 可以方便地进行生产环境下的容器化部署。
- 系统具有很高的扩展性。
本教程展示了核心的工作原理,但采取这些改进措施可以让你的部署更加安全且更具扩展性。
总结
现在,你已经成功搭建了一个完全自主托管的WhatsApp聊天机器人。该机器人运行在基于FastAPI、Evolution API、Docker、EasyPanel和GCP构建的云虚拟机上。
这种部署方式为你带来了以下优势:
接下来,你还可以通过以下方式进一步优化你的聊天机器人:
集成AI技术:将你的机器人与ChatGPT、Gemini或Claude等平台连接起来,使其能够智能地回答问题,而不仅仅是发送固定的回复。
使用数据库存储数据:可以将收到的消息、用户信息或对话记录保存到PostgreSQL或MongoDB等数据库中。
设置自定义自动化工作流程:根据关键词触发相应的操作,例如当有人输入“menu”时自动发送PDF文件,或者当有人输入“schedule”时自动预约会议。
CRM集成功能:将您的机器人与HubSpot或Notion等工具连接起来,从而自动记录潜在客户信息以及与客户的对话内容。搭建属于自己的基础设施是深入了解现代后端系统如何协同工作的最佳方式之一。
祝您构建顺利!

