摘要
本指南說明如何將 WhatsApp 通話與您自己的語音代理程式或第三方平台整合。內容涵蓋了來電和去電流程、API 驗證、WebRTC 設定、webhook 設定、通話權限以及維持穩定語音整合的最佳實務。
說明
Wati 的 WhatsApp 通話 API 讓企業能透過 WebRTC 將 WhatsApp 通話與自身的語音基礎設施連接。
此整合透過連接以下 componente 來運作:
由 Wati API 和 webhook 管理的 WhatsApp 信令層
由您自己的語音代理程式或第三方平台處理的 媒體層
本指南的對象為開發自訂語音整合的開發人員。
核心架構與驗證
此整合使用 Wati 和您的 WebRTC 基礎設施之間的 Session Description Protocol (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 帳戶。
在選單中導覽至 Connectors → API Docs。
複製您的:
API Endpoint
Bearer Token
注意:如果您更改 Wati 密碼,您現有的 Bearer Token 將失效。您必須更新您的整合以使用新權杖。
處理來電
步驟 1:設定來電 webhook
在 Wati 平台中,為以下項目設定您的 webhook URL:
New Inbound Call Webhook (新來電 Webhook)
此 webhook 接收來自 WhatsApp 使用者的來電請求和 SDP 提議。
步驟 2:接收來電 webhook
當使用者撥打您的 WhatsApp 電話號碼時,Wati 會發送一個包含來電者 SDP 提議的 POST 請求。
範例請求負載:
{
"callId": "WHATSAPP_CALL_ID",
"sdp": "v=0... (來自 WhatsApp 的提議)",
"businessNumber": "1234567890"
}步驟 3:執行 WebRTC 協商
您的應用程式現在必須建立 WebRTC 會話。
初始化 peer 連線
在您的伺服器、語音代理程式或第三方平台上建立一個 RTCPeerConnection。
設定遠端描述
使用從 webhook 收到的 SDP 作為遠端描述。
產生 SDP 回應
從您的 peer 連線產生一個本機 SDP 回應。
重要:為確保與 WhatsApp 相容,請務必將 SDP 摘要設為大寫。
範例:
a=fingerprint:SHA-256
步驟 4:接聽電話
使用 Accept Call 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... (您的回應)"
}
撥出電話
WhatsApp 要求企業在撥出電話前必須取得使用者的同意。
步驟 1:管理通話權限
檢查現有權限狀態
使用以下端點檢查使用者是否已授予通話權限。
GET .../calls/permissions/{waid}請求權限
如果尚未授予權限,請使用以下方式請求:
POST .../calls/call-permission-request/{waid}等待權限批准
在使用者接受或拒絕請求後,Wati 會發送一個 Call Permission Webhook (通話權限 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... (您的提議)"
}接收通話 ID
如果請求成功,Wati 將會回傳一個 callId。
建立音訊串流
步驟 3:完成 WebRTC 連線
監控通話狀態
使用 New Outbound Call Status Webhook (新撥出通話狀態 Webhook) 追蹤更新,例如:
CALLING (撥號中)
RINGING (響鈴中)
ACCEPTED (已接聽)
接收使用者的 SDP 回應
當使用者接聽電話時,Wati 會發送 New Outbound Call Webhook (新撥出通話 Webhook),其中包含使用者的 SDP 回應。
完成連線
將收到的 SDP 回應設定為您 RTCPeerConnection 中的遠端描述。
這將建立使用者與您的語音平台之間的音訊串流。
結束通話
當使用者掛斷電話時
Wati 會發送 Terminate Call Webhook (結束通話 Webhook) 來通知您的應用程式通話已結束。
當企業掛斷電話時
使用 Terminate Call 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 (新來電 Webhook)
接收來自 WhatsApp 使用者的來電 SDP 提議。
Terminate Call Webhook (結束通話 Webhook)
接收通話斷線通知。
New Outbound Call Webhook (新撥出通話 Webhook)
接收撥出電話的 SDP 回應。
New Outbound Call Status Webhook (新撥出通話狀態 Webhook)
接收撥出通話狀態更新,例如:
Calling (撥號中)
Ringing (響鈴中)
Accepted (已接聽)
Call Permission Webhook (通話權限 Webhook)
接收來自使用者的權限批准或拒絕事件。
Webhook 需求
您的 webhook 端點必須:
公開可存取
回傳 HTTP
200 OK回應在 30 秒內回應
設定 webhook API 金鑰驗證
您可以在 Wati 設定 UI 中設定一個專用的 API 金鑰來驗證 webhook。
Wati 會將此金鑰包含在每個 webhook 請求的 Authorization 標頭中。
範例:
Authorization: Bearer {ApiKey}您可以使用此金鑰來:
驗證 webhook 的真實性
驗證傳入請求
保護您的 webhook 端點
技術最佳實務
使用 Opus 編碼器
WhatsApp Calling 目前僅支援音訊。
為確保相容性,您的語音平台必須使用 Opus 音訊編碼器。
停用 ICE trickle
請勿在 SDP 協商期間使用 ICE Trickle。
Wati 要求完整的 SDP 區塊,其中已包含所有 ICE 候選者。
傳送完整的 SDP 負載
請確保您的 SDP 包含:
ICE 候選者
摘要
媒體資訊
在傳送 API 請求給 Wati 之前。
通話流程概覽
來電流程
撥出電話流程
通話權限流程
常見問題 (FAQ)
可用性與存取
1. 此功能在所有 Wati 方案中都可用嗎?
否,此功能僅適用於 Pro 及以上方案。
2. 為什麼我的 Wati 帳戶中看不到此設定?
此設定僅依請求啟用。您需要聯絡 Wati 支援以啟用您帳戶的功能。
通話與整合
3. 使用外部平台或自訂 AI 代理程式撥打 WhatsApp 電話時,通話會被記錄和轉錄嗎?
否,使用外部平台或自訂 AI 代理程式撥打 WhatsApp 電話時,通話不會被記錄或轉錄。通話發生在您自己的伺服器上,Wati 無法控制。
4. 我可以在 Wati 和外部整合平台同時處理來電嗎?
否,所有來電將會路由到您的外部整合平台,而不是 Wati。
5. 為什麼透過 Wati 撥出的電話無法偵測到通話是否已接聽或拒絕?
透過 Wati 撥出的電話無法偵測到通話是否已接聽或拒絕,因為您將設定自己的 webhook 端點來接收通話狀態更新,例如響鈴、已接聽或已拒絕。
支援與實施
6. 如果我在技術上不熟悉實施,誰能協助我設定此功能?
Wati 可為 Business Plan 的客戶提供必要的實施支援。您可以聯絡您的客戶成功經理 (CSM) 來安排通話。





