Skip to main content
Whatsapp 应用用于服务通过 WhatsApp 交互的 Agent 或团队,使用 FastAPI 服务器处理 webhook 事件和发送消息。

设置和配置

1

先决条件

请确保您拥有以下条件:
  • Meta 开发者账户
  • Meta 商务账户
  • 有效的 Facebook 账户
  • ngrok (用于开发)
  • Python 3.7+
2

创建 Meta 应用

  1. 前往 Meta for Developers 并验证您的账户。
  2. Meta Apps Dashboard 创建一个新应用。
  3. 在“用例”下,选择“其他”。
  4. 选择“商务”作为应用类型。
  5. 提供:
    • 应用名称
    • 联系邮箱
  6. 点击“创建应用”。
3

设置 Meta 商务账户

  1. 导航至 Meta Business Manager
  2. 创建新的商务账户或使用现有账户。
  3. 点击邮件链接验证您的企业。
  4. 前往您的应用页面,导航至“应用设置/基本设置”,然后在“企业验证”下点击“开始验证”。完成生产环境的验证过程。
  5. 将应用与您的商务账户关联并点击“创建应用”。
4

设置 WhatsApp Business API

  1. 前往您应用的 WhatsApp 设置页面。
  2. 点击“开始使用 API”(API 设置)。
  3. 生成访问令牌。
  4. 复制您的手机号码 ID。
  5. 复制您的 WhatsApp Business 账户 ID。
  6. 添加一个您将用于测试的“收件人”号码(这可能通常是您的个人号码)。
5

设置环境变量

在您的项目根目录创建一个 .envrc 文件,并包含以下内容,将占位符值替换为您自己的凭证:
确保您的 shell 加载了此文件(例如,通过使用 direnv allow)。
6

使用 ngrok 设置 Webhook

  1. 对于本地开发,请使用 ngrok 将您的本地服务器暴露给互联网。如果您没有静态 ngrok URL,每次 ngrok 分配新 URL 时都需要更新 WHATSAPP_WEBHOOK_URL 环境变量和您的 Meta 应用 webhook 配置。
  2. 运行 ngrok,确保端口与您的 Agno WhatsApp 应用运行的端口匹配(例如 8000):
  3. 复制 ngrok 提供的 https:// URL。这是您的基础 ngrok URL。
  4. 通过在 ngrok URL 后面添加 /webhook(或者您选择的前缀)来构建完整的 webhook URL(例如 https://<random-string>.ngrok-free.app/webhook)。如有必要,请更新 .envrc 中的 WHATSAPP_WEBHOOK_URL
  5. 在您的 Meta 应用的 WhatsApp 设置页面,导航至“Webhook”部分并点击“编辑”。
  6. 配置 webhook:
    • 回调 URL(Callback URL): 输入您完整的 ngrok webhook URL。
    • 验证令牌(Verify Token): 输入与您在 .envrc 文件中 WHATSAPP_VERIFY_TOKEN 相同的值。
  7. 点击“验证并保存”。您的 Agno 应用程序必须在本地运行才能成功验证。
  8. 在成功验证后,点击 Webhook 字段旁边的“管理”。在 whatsapp_business_account 下订阅 messages 字段。
7

配置应用程序环境

设置 APP_ENV 环境变量:
  • 开发模式:
    (此时 webhook 签名验证可能不严格或被绕过)。
  • 生产模式:
    您还需要设置 WHATSAPP_APP_SECRET 以进行 webhook 签名验证:
    这应该是您在 Meta 应用的“应用设置 > 基本设置”页面中找到的“应用密钥”。

示例用法

创建一个 Agent,用 WhatsappAPI 包裹它,然后运行它:
运行方式:
  1. 如果使用 OpenAI 模型,请确保已设置 OPENAI_API_KEY 环境变量。
  2. API 将会运行(例如,http://localhost:8000),但主要通过配置的 webhook 与 WhatsApp 进行交互。
  3. API 文档(如果设置中已启用)可能位于 http://localhost:8000/docs

核心组件

  • WhatsappAPI: 通过 FastAPI 将 Agno Agent/Team 封装以实现 WhatsApp 集成。
  • WhatsappAPI.serve: 使用 Uvicorn 运行 FastAPI 应用,并配置为支持 WhatsApp。

WhatsappAPI

Agno WhatsApp 应用的主入口点。

初始化参数

请提供 agentteam 中的一个,但不要同时提供。

主要方法

端点

端点可在 prefix(默认为根级别:"")访问。

1. GET /webhook

  • 描述: 验证 WhatsApp webhook(challenge)。
  • 响应:
    • 200 OK: 如果令牌匹配,则返回 hub.challenge
    • 403 Forbidden: 令牌不匹配或模式无效。
    • 500 Internal Server Error: 未设置 WHATSAPP_VERIFY_TOKEN

2. POST /webhook

  • 描述: 接收传入的 WhatsApp 消息和事件。
  • 处理:
    • 验证签名(如果 APP_ENV="production"WHATSAPP_APP_SECRET 已设置)。
    • 通过 agent.arun()team.arun() 处理消息(文本、图像、视频、音频、文档)。
    • 通过 WhatsApp 发送回复。
  • 响应:
    • 200 OK: {"status": "processing"}{"status": "ignored"}
    • 403 Forbidden: 签名无效。
    • 500 Internal Server Error: 其他处理错误。

参数