跳转到主要内容

如何在 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 Endpoint

    • 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 答案。

重要:确保 SDP 指纹使用大写字母以兼容 WhatsApp。

示例:

a=fingerprint:SHA-256

步骤 4:接受通话

使用“接受通话”API 将生成的 SDP 答案发送回 Wati。

请求详情

Method

POST

Endpoint

<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。

Method

POST

Endpoint

<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 会发送New Outbound Call Webhook,其中包含用户的 SDP 答案。

完成连接

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

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

终止通话

用户挂断电话时

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

企业挂断电话时

使用“终止通话”API。

请求详情

Endpoint

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 密钥验证

您可以在 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 发送请求之前。

通话流程概述

入站通话流程

出站通话流程

通话权限流程

常见问题解答

可用性和访问

1. 此功能在所有 Wati 计划中都可用吗?

不,此功能仅适用于 Pro 及更高计划。

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

此配置仅根据请求启用。您需要联系 Wati 支持为您帐户启用。

通话和集成

3. 在外部平台或自定义 AI 代理上使用 WhatsApp 通话时,通话会被录制和转录吗?

不,在使用外部平台或自定义 AI 代理的 WhatsApp 通话时,通话不会被录制或转录。通话发生在您自己的服务器上,Wati 无法控制。

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

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

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

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

支持和实施

6. 如果我不太了解技术实施,谁能帮助我设置此功能?

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

这是否解答了您的问题?