跳至主要內容

如何將 WhatsApp 通話集成到您的 CRM 或內部門戶

摘要

本指南解釋了如何將 WhatsApp 呼叫與您自己的語音代理或第三方平台進行整合。它涵蓋了進入和出站通話流程、API 認證、WebRTC 設置、Webhook 配置、通話權限,以及維持穩定語音整合的最佳實踐。

注意: 將 WhatsApp 通話與您的 CRM 或內部工具整合 的功能目前處於測試階段,可按需獲取。要啟用此功能,請聯絡您的客戶成功經理 (CSM) 或 Wati 支持團隊。

指示

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

  • 導航至菜單中的 連接器API 文檔

  • 複製您的:

    • API 端點

    • Bearer Token

注意: 如果您更改了 Wati 密碼,則現有的 Bearer Token 將變為無效。您必須使用新令牌更新您的整合。

處理進來的呼叫

步驟 1:配置進來的呼叫 Webhook

在 Wati 平台上,為以下內容配置您的 webhook URL:

  • 新進來的呼叫 Webhook

此 webhook 接收來自 WhatsApp 用戶的來電請求和 SDP 提供。

步驟 2:接收進來的 webhook

當用戶呼叫您的 WhatsApp 號碼時,Wati 會發送一個 POST 請求,包含呼叫者的 SDP 提供。

示例請求有效載荷:

{
"callId": "WHATSAPP_CALL_ID",
"sdp": "v=0... (來自 WhatsApp 的提議)",
"businessNumber": "1234567890"
}

步驟 3:執行 WebRTC 談判

您的應用程序現在必須建立 WebRTC 會話。

初始化對等連接

在您的伺服器、語音代理或第三方平台上創建一個 RTCPeerConnection

設置遠程描述

使用從 webhook 收到的 SDP 作為遠程描述。

生成 SDP 答案

從您的對等連接生成本地 SDP 答案。

重要: 確保 SDP 指紋為大寫,以實現 WhatsApp 的兼容性。

示例:

a=fingerprint:SHA-256

步驟 4:接受通話

將生成的 SDP 答案發送回 Wati,使用接受通話 API。

請求細節

方法

POST

端點

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

標頭

Authorization: Bearer {YOUR_ACCESS_TOKEN}

請求正文

{
"Sdp": "v=0... (您的答復)"
}

進行外撥通話

WhatsApp 要求企業在開始外撥通話之前獲得用戶的許可。

步驟 1:管理通話權限

檢查現有的權限狀態

使用以下端點檢查用戶是否已授予通話權限。

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

請求許可

如果尚未授權,則使用以下方式請求許可:

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

等待許可批准

在用戶接受或拒絕請求後,Wati 會發送 通話許可 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}>

標頭

Authorization: Bearer {YOUR_ACCESS_TOKEN}

請求正文

{
"Sdp": "v=0... (您的提議)"
}

接收通話 ID

如果請求成功,Wati 將返回一個 callId

建立音頻流

步驟 3:完成 WebRTC 連接

監控通話狀態

使用 新外撥通話狀態 Webhook 跟蹤更新,例如:

  • 呼叫中

  • 響鈴中

  • 已接受

接收用戶的 SDP 答案

當用戶接聽通話時,Wati 發送 新外撥通話 Webhook,其中包含用戶的 SDP 答案。

完成連接

將接收到的 SDP 答案設置為您的 RTCPeerConnection 中的遠程描述。

這樣就建立了用戶和您的語音平台之間的音頻流。

終止通話

當用戶掛斷時

Wati 會發送 終止通話 Webhook 以通知您的應用程序通話已結束。

當企業掛斷時

使用終止通話 API。

請求詳情

端點

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

標頭

Authorization: Bearer {YOUR_ACCESS_TOKEN}

您可以在哪裡發佈您的 webhook URL?

所需的 webhook URL

在 Wati 中配置以下 webhook 端點。

新進來的呼叫 Webhook

接收來自 WhatsApp 使用者的進來 SDP 提供。

終止通話 Webhook

接收通話斷開連接的通知。

新外撥通話 Webhook

接收外撥通話的 SDP 答復。

新外撥通話狀態 Webhook

接收外撥通話狀態更新,例如:

  • 呼叫中

  • 響鈴中

  • 已接受

通話權限 Webhook

接收用戶的權限批准或拒絕事件。

Webhook 要求

您的 webhook 端點必須:

  • 對外公開可訪問

  • 返回 HTTP 200 OK 響應

  • 在 30 秒內響應

配置 webhook API 金鑰驗證

您可以在 Wati 配置 UI 中為 webhook 驗證配置專用的 API 金鑰。

Wati 在每個 webhook 請求的 Authorization 標頭中包含此金鑰。

示例:

Authorization: Bearer {ApiKey}

您可以使用此金鑰來:

  • 驗證 webhook 的真實性

  • 驗證來自的請求

  • 保護您的 webhook 端點

技術最佳實踐

使用 Opus 編解碼器

WhatsApp 通話目前僅支持音頻。

您的語音平台必須使用 Opus 音頻編解碼器以保持兼容性。

禁用 ICE Trickle

在 SDP 談判期間不要使用 ICE Trickle。

Wati 需要完整的 SDP 區塊,其中已包含所有 ICE 候選者。

發送完整的 SDP 有效載荷

確保您的 SDP 包含:

  • ICE 候選者

  • 指紋

  • 媒體信息

在將請求發送到 Wati API 之前。

通話流程概述

進來的通話流程

外撥通話流程

通話權限流程

常見問題 (FAQs)

可用性和訪問

1. 此功能是否在所有 Wati 計畫中可用?

不,該功能僅在 Pro 及更高計畫中可用。

2. 為什麼我在我的 Wati 帳戶中看不到此配置?

該配置僅在按需的基礎上啟用。您需要聯繫 Wati 支持以啟用您的帳戶。

通話和整合

3. 使用 WhatsApp 通話在外部平台或自定義 AI 代理時,通話會被錄音和轉錄嗎?

不,使用 WhatsApp 通話在外部平台或自定義 AI 代理時,通話不會被錄音或轉錄。通話發生在您的伺服器上,Wati 沒有控制權。

4. 我可以在 Wati 和外部整合的平台上同時處理通話嗎?

不,所有進來的通話將被路由到您的外部整合平台,而不是 Wati。

5. 為什麼通過 Wati 進行的外撥通話無法檢測呼叫是否被接受或拒絕?

通過 Wati 進行的外撥通話無法檢測呼叫是否被接受或拒絕,因為您將配置自己的 webhook 端點以接收通話狀態更新,例如響鈴、已接受或已拒絕。

支持和實施

6. 如果我對實施不熟悉,誰可以幫我設置此功能?

Wati 為商業計畫客戶提供基本的實施支持。您可以聯繫您的客戶成功經理 (CSM) 安排通話。

是否回答了您的問題?