跳转到主要内容

如何在 Wati 中设置 WhatsApp 呼叫 API 和 Webhook

摘要

本指南说明如何将 WhatsApp 通话集成到您自己的语音代理或第三方平台。它涵盖了入站和出站通话流程、API 身份验证、WebRTC 设置、Webhook 配置、通话权限以及维护稳定语音集成的最佳实践。

说明

Wati 的 WhatsApp 通话 API 允许企业使用 WebRTC 将 WhatsApp 通话连接到他们自己的语音基础设施。

集成的工作原理是连接:

  • 由 Wati API 和 Webhook 管理的 WhatsApp 信令层

  • 媒体层,由您自己的语音代理或第三方平台处理

本指南适用于构建自定义语音集成的开发者。

核心架构和身份验证

该集成使用 Wati 和您的 WebRTC 基础设施之间的会话描述协议 (SDP) 交换。

API 基本 URL

<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls>

{tenant_id} 替换为您的 Wati 租户 ID。

身份验证

每个 API 请求都必须在请求头中包含 Bearer Token。

Authorization: Bearer {YOUR_ACCESS_TOKEN}

查找您的 API 凭证

  • 登录您的 Wati 帐户。

  • 在菜单中导航到 ConnectorsAPI Docs

  • 复制您的:

    • API 端点

    • Bearer Token

注意:如果您更改 Wati 密码,则您现有的 Bearer Token 将失效。您必须更新集成以使用新令牌。

处理入站通话

步骤 1:配置入站通话 Webhook

在 Wati 平台中,为您配置 Webhook URL:

  • New Inbound Call Webhook

此 Webhook 接收来自 WhatsApp 用户的入站通话请求和 SDP 提议。

步骤 2:接收入站 Webhook

当用户呼叫您的 WhatsApp 号码时,Wati 会发送一个包含呼叫者 SDP 提议的 POST 请求。

示例文本负载:

{
"callId": "WHATSAPP_CALL_ID",
"sdp": "v=0... (Offer from WhatsApp)",
"businessNumber": "1234567890"
}

步骤 3:执行 WebRTC 协商

您的应用程序现在必须建立 WebRTC 会话。

初始化对等连接

在您的服务器、语音代理或第三方平台中创建一个 RTCPeerConnection

设置远程描述

使用从 Webhook 收到的 SDP 作为远程描述。

生成 SDP 回答

从您的对等连接生成本地 SDP 回答。

重要:为确保 WhatsApp 兼容性,请确保 SDP 指纹为大写。

示例:

a=fingerprint:SHA-256

步骤 4:接受通话

使用 Accept Call API 将生成的 SDP 回答发送回 Wati。

请求详细信息

方法

POST

端点

<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/accept>

Headers

Authorization: Bearer {YOUR_ACCESS_TOKEN}

Request body

{
"Sdp": "v=0... (Your Answer)"
}

拨打外呼电话

WhatsApp 要求企业在发起外呼电话前必须获得用户的许可。

步骤 1:管理通话权限

检查现有权限状态

使用以下端点检查用户是否已授予通话权限。

GET .../calls/permissions/{waid}

请求权限

如果尚未授予权限,请使用以下方法请求:

POST .../calls/call-permission-request/{waid}

等待权限批准

在用户接受或拒绝请求后,Wati 会发送一个 Call Permission Webhook

只有在获得批准后才能继续拨打外呼电话。

发起外呼电话

步骤 2:创建并发送 SDP 提议

生成 SDP 提议

使用您的 WebRTC RTCPeerConnection 创建 SDP 提议。

调用外呼电话 API

将 SDP 提议发送给 Wati。

方法

POST

端点

<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/outbound-call/{waid}>

Headers

Authorization: Bearer {YOUR_ACCESS_TOKEN}

Request body

{
"Sdp": "v=0... (Your Offer)"
}

接收通话 ID

如果请求成功,Wati 会返回一个 callId

建立音频流

步骤 3:完成 WebRTC 连接

监控通话状态

使用 New Outbound Call Status Webhook 来跟踪更新,例如:

  • CALLING

  • RINGING

  • ACCEPTED

接收用户的 SDP 回答

当用户接听电话时,Wati 会发送包含用户 SDP 回答的 New Outbound Call Webhook

完成连接

在您的 RTCPeerConnection 中将收到的 SDP 回答设置为远程描述。

这将建立用户与您的语音平台之间的音频流。

终止通话

用户挂断时

Wati 会发送一个 Terminate Call Webhook 来通知您的应用程序通话已结束。

企业挂断时

使用 Terminate Call API。

请求详细信息

端点

POST <https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/terminate>

Headers

Authorization: Bearer {YOUR_ACCESS_TOKEN}

在哪里可以发布您的 Webhook URL?

必需的 Webhook URL

在 Wati 中配置以下 Webhook 端点。

New Inbound Call Webhook

接收来自 WhatsApp 用户的入站 SDP 提议。

Terminate Call Webhook

接收通话断开连接时的通知。

New Outbound Call Webhook

接收外呼电话的 SDP 回答。

New Outbound Call Status Webhook

接收外呼电话状态更新,例如:

  • Calling

  • Ringing

  • Accepted

Call Permission Webhook

接收来自用户的权限批准或拒绝事件。

Webhook 要求

您的 Webhook 端点必须:

  • 可公开访问

  • 返回 HTTP 200 OK 响应

  • 在 30 秒内响应

配置 Webhook API Key 验证

您可以在 Wati 配置 UI 中配置一个专用的 API 密钥用于 Webhook 验证。

Wati 会将此密钥包含在每个 Webhook 请求的 Authorization 头中。

示例:

Authorization: Bearer {ApiKey}

您可以使用此密钥进行:

  • 验证 Webhook 的真实性

  • 验证入站请求

  • 保护您的 Webhook 端点

技术最佳实践

使用 Opus 编解码器

WhatsApp 通话目前仅支持音频。

您的语音平台必须使用 Opus 音频编解码器以实现兼容性。

禁用 ICE Trickle

在 SDP 协商期间不要使用 ICE Trickle。

Wati 需要一个完整的 SDP 块,其中已包含所有 ICE 候选。

发送完整的 SDP 负载

确保您的 SDP 包含:

  • ICE 候选

  • 指纹

  • 媒体信息

在发送请求到 Wati API 之前。

通话流程概览

入站通话流程

外呼通话流程

通话权限流程

常见问题 (FAQ)

可用性和访问

1. 此功能在所有 Wati 套餐中都可用吗?

否,此功能仅适用于 Pro 及以上套餐。

2. 为什么我在 Wati 帐户中看不到此配置?

此配置仅按需启用。您需要联系 Wati 支持以启用您的帐户。

通话和集成

3. 当在外部平台或 BYOA 上使用 WhatsApp Calling 时,通话会录制和转录吗?

否,当在外部平台或自带接入 (BYOA) 上使用 WhatsApp Calling 时,通话不会被录制或转录。通话发生在您自己的服务器上,Wati 无法控制。

4. 我可以在 Wati 和外部集成的平台上处理通话吗?

否,所有入站通话都将路由到您外部集成的平台,而不是 Wati。

5. 为什么通过 Wati 拨打的外呼电话无法检测到通话是否被接受或拒绝?

通过 Wati 拨打的外呼电话无法检测到通话是否被接受或拒绝,因为您将配置自己的 Webhook 端点来接收通话状态更新,例如响铃、已接受或已拒绝。

支持和实施

6. 如果我对实施技术不熟悉,谁可以帮助我设置此功能?

Wati 可根据需要为 Business Plan 客户提供实施支持。您可以联系您的客户成功经理 (CSM) 来安排通话。

这是否解答了您的问题?