本文件說明如何將商家電話號碼從內部部署 API 移轉至雲端 API。
請注意,將商家電話號碼從一個 API 移轉至另一個 API,不同於將商家電話號碼從一個 WhatsApp Business 帳號(WABA)移轉至另一個帳號。
若要從雲端 API 移轉至內部部署 API,請參閱從雲端 API 移轉至內部部署 API。
移轉程序包括產生商家電話號碼的相關中繼資料,然後使用該資料來註冊號碼,以用於雲端 API。這樣會從內部部署 API 註銷號碼,因為一個號碼一次只能註冊用於一個 API。
移轉不會影響:
然而,為了支援移轉,您必須瞭解任何 API 差異,並採取適當的措施來解決這些差異後,再執行本文件所述的移轉步驟。
您必須要有一個 Meta 商業應用程式,能夠將雲端 API 和 Business Management API 用於已加入的顧客資料,並且能夠接收雲端 API 和 Business Management API Webhooks。該應用程式也必須與經過驗證的 Meta 商業帳號相關聯或由該帳號認領。
如果您沒有 Meta 商業應用程式,或是您有 Meta 商業應用程式但尚未配置 WhatsApp 產品,請完成雲端 API 開始使用指南中的步驟。完成這些步驟後,會產生測試雲端 API 和 Business Management API 需要的所有資產。
您的 Meta 應用程式必須進行應用程式審查,並獲准取得 whatsapp_business_messaging 和 whatsapp_business_management 權限(即具備進階存取權限)。
確認您的應用程式能夠處理所有 API 差異後,建議您先移轉容量低的商家電話號碼,並驗證您打算透過雲端 API 提供的所有功能運作正常。驗證一切正常後,再移轉其他號碼。
此外,也建議您在內部部署 API 部署的流量較低時執行移轉。
以下是雲端 API 不支援或處理方式不同的內部部署 API 功能。在開始移轉程序之前,請確認您的應用程式能夠處理這些差異。
雲端 API 和 Business Management API Webhooks 承載結構與內部部署 API 承載結構不同。建議您建立一個可以專門處理雲端 API 和 Business Management API 的新 Webhook 端點。
請參閱下列文件,以幫助您瞭解承載差異,以及如何使用應用程式主控板在應用程式上配置 Webhooks:
請注意,將商家電話號碼移轉到雲端 API 後,您必須使用 WhatsApp Business 帳號 > 訂閱的應用程式端點,為您的 Meta 應用程式訂閱與該商家號碼相關聯之 WABA 的 Webhooks:
curl -X POST 'https://graph.facebook.com/v17.0/<WABA_ID>/subscribed_apps' \ -H 'Authorization: Bearer EAAJB...'
完成移轉至雲端 API 後,將不再傳送商家電話號碼的內部部署 API Webhooks,並將開始傳送雲端 API Webhooks。
使用雲端 API 傳送訊息時,無法使用上傳至內部部署 API 之任何影音素材的影音素材編號,所以您必須使用雲端 API 重新上傳影音素材以產生新的影音素材編號,或者如果影音素材託管在公開伺服器上,可使用影音素材網址。請參閱影音素材訊息和影音素材訊息範本。
請注意,為了確保訊息完整性,雲端 API 不允許使用內部部署 API 所允許的某些影音素材託管網域。如果您為影音素材使用託管服務,建議您在移轉之前,先在自由格式訊息和範本訊息中測試影音素材網址。如果您認為主機誤被封鎖,請聯絡支援團隊。
雲端 API 和 Business Management API 錯誤代碼不同於內部部署 API 錯誤代碼。請參閱下列文件:
內部部署是藉由將 messages.type
設為 voice
來識別 Webhooks 中的按住即可聊天(PTT)訊息,但雲端 API 是藉由將 messages.audio.voice
設為 true
來識別 PTT 訊息。
雲端 API 不支援貼圖包。
在您執行最後一個移轉步驟(註冊要用於雲端 API 的號碼)後,停機時間即開始,而且應該只會持續幾秒鐘。在此期間,WhatsApp 用戶傳送至該號碼的訊息會被默默捨棄。
強烈建議您將移轉作業安排在該號碼活動較少的時段進行,以儘量減少停機時間的影響。
如果內部部署商家電話號碼有執行 2 個以上分片的多重連線,在雲端 API 上會自動升級為高傳送量。
如果要移轉具有官方商業帳號(OBA)狀態的商家電話號碼,當您在註冊號碼(步驟 3)時若包含其中繼資料(在步驟 2 中產生),系統將保留其狀態。如果省略此資料,該號碼將失去其 OBA 狀態。
如果您有任何疑問或需要有關移轉的協助,請提交直接支援票證:
如果您知道商家電話號碼的 PIN 碼,可以略過此步驟。
執行步驟 3 時,您會需要商家電話號碼的 PIN 碼,所以如果您不知道 PIN 碼,則必須先為商家電話號碼停用雙步驟驗證。如果您不是商家電話號碼的擁有者,則請擁有者為您停用。
使用備份和還原 API 來產生商家電話號碼的中繼資料。
POST /v1/settings/backup { "password": "<PASSWORD>" }
<PASSWORD>
可以是任何字串。此值會用來將中繼資料編碼,所以請記下此值,下一個步驟會需要它。
{ "settings": { "data": "<METADATA>" }, "meta": { "api_status": "<API_STATUS>", "version": "<API_VERSION>" } }
此 API 會傳回指派給 data
屬性的編碼字串,其中描述您的商家電話號碼及其設定。請擷取此值,下一個步驟會需要它。
<METADATA>
— 這是描述商家電話號碼及其設定的編碼字串。請擷取此值,下一個步驟會需要它。<API_STATUS>
— 內部部署 API 部署的狀態。<API_VERSION>
— 您目前執行的內部部署 API 版本號碼。curl 'https://localhost:9090/v1/settings/backup' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer EAAJB...' \ -d ' { "password": "tacocat" }'
{ "settings": { "data": "V0FCS..." }, "meta": { "api_status": "stable", "version": "2.49.3" } }
使用雲端 API WhatsApp Business 電話號碼 > 註冊端點來註冊用於雲端 API 的號碼。
請加入上一個步驟中編碼的商家電話號碼中繼資料和密碼。雖然沒有此資料也可以註冊號碼,但是如果未加入此資料,商家電話號碼的個人檔案資料將會遺失,進而影響 WhatsApp Business 帳號做為官方商業帳號的狀態。
POST /<BUSINESS_PHONE_NUMBER_ID>/register
{ "messaging_product": "whatsapp", "pin": "<NEW_OR_EXISTING_PIN>", "backup": { "password": "<PASSWORD>", "data": "<METADATA>" } }
<NEW_OR_EXISTING_PIN
> — 現有 PIN 碼或您想要在商家電話號碼上設定的 PIN 碼。<PASSWORD
> — 您在上一個步驟中用來產生商家電話號碼中繼資料的密碼。<METADATA
> — 在上一個步驟中產生,描述商家電話號碼及其設定的編碼字串。{ "success": <SUCCESS> }
如果註冊成功,API 回應的 success
會設為 true
,如果發生錯誤,則設為 false
。
curl 'https://graph.facebook.com/v19.0
/110200345501442/register' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"messaging_product": "whatsapp",
"pin": "134568",
"backup": {
"password": "tacocat",
"data": "V0FCS..."
}
}'
{ "success": true }
要求商家電話號碼的 health_status
欄位,並驗證其可搭配雲端 API 用來傳送訊息。請參閱訊息傳送健康狀態。