驗證範本將於 2024 年 7 月 1 日在印度提供使用。
如果您的行動應用程式為用戶提供了經由 WhatsApp 接收一次性密碼或驗證碼的選項,您必須使用驗證範本。
驗證範本包含下列內容:
一鍵式自動填入按鈕可提供最佳的使用體驗,為首選的解決方案。但是,一鍵式自動填入按鈕目前僅在 Android 上受支援,且需要額外變更應用程式碼。
請參閱其他守則,瞭解何時適合使用驗證範本。
驗證範本包含一鍵式自動填入按鈕。
當 WhatsApp 用戶點按自動填入按鈕時,WhatsApp 用戶端會觸發一項活動,開啟您的應用程式並傳遞密碼或驗證碼。
請參閱一鍵式自動填入驗證範本,以瞭解其用法。
複製驗證碼驗證範本可讓您傳送一次性密碼或驗證碼以及複製驗證碼按鈕給用戶。
當 WhatsApp 用戶點擊複製驗證碼按鈕時,WhatsApp 用戶端會將密碼或驗證碼複製到裝置的剪貼簿。接著用戶可切換到應用程式,並將密碼或驗證碼貼到應用程式中。
請參閱複製驗證碼驗證範本,以瞭解其用法。
免點按驗證範本允許您的用戶經由 WhatsApp 接收一次性密碼或驗證碼,且無需離開您的應用程式。
當應用程式中的用戶要求密碼或驗證碼,而您使用免點按驗證範本傳遞時,WhatsApp 用戶端會廣播包含的密碼或驗證碼,然後應用程式便可以使用廣播接收器擷取這些密碼或驗證碼。
請參閱免點按驗證範本,以瞭解其用法。
如果我們無法向 WhatsApp 用戶傳遞訊息,將繼續嘗試在一段時間內傳遞訊息,稱為存留時間。
預設情況下,訊息的存留時間為 30 天,但新建驗證範本的預設存留時間為 10 分鐘。
如果我們無法在超過驗證範本存留時間的時間內將其傳遞,將停止重試並丟棄訊息。如果驗證範本訊息傳送要求之間的時間超過存留時間,且您沒有收到任何 Webhook,則假設其已遭丟棄。
若要在建立驗證範本時覆寫預設存留時間,請包含 message_send_ttl_seconds
屬性,並將值設定為 60
至 600
秒之間。
此功能提供前所建立之現有範本的存留時間為 30 天。若有需要,您可以編輯現有範本,並設定其 message_send_ttl_seconds
屬性來覆寫存留時間。
您還可以將驗證範本的 message_send_ttl_seconds
屬性設定為 -1
。如此可將其存留時間設定為 30 天。
我們鼓勵您為所有驗證範本設定存留時間,最好等於或小於驗證碼過期時間,以確保顧客只在驗證碼仍可用時才收到訊息。
請注意,傳遞失敗的訊息 Webhook 時可能會有輕微的延遲,因此您可能希望在推斷其為丟棄時建置一個小緩衝區。
您可以使用 WhatsApp Business 帳號 > 訊息範本預覽端點產生各種語言的驗證範本文字預覽,其包含或排除安全建議字串和驗證碼過期字串。
GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_template_previews ?category=AUTHENTICATION, &language=<LANGUAGE>, // Optional &add_security_recommendation=<ADD_SECURITY_RECOMMENDATION>, // Optional &code_expiration_minutes=<CODE_EXPIRATION_MINUTES>, // Optional &button_types=<BUTTON_TYPES> // Optional
預留位置 | 說明 | 範例值 |
---|---|---|
逗號分隔的清單 | 選用項目。 要傳回之語言版本的語言和區域驗證碼的逗號分隔清單。 如果省略,將傳回所有支援語言的版本。 |
|
布林值 | 選用項目。 若要將安全建議內容字符串包含在回應中,請設定為 如果省略,將不包含安全建議字串。 |
|
Int64 | 選用項目。 若要在回應中包含驗證碼過期頁尾字串,請設定為整數。 如果省略,將不包含驗證碼過期頁尾字串。 該值指示驗證碼過期前的分鐘數。 最小值為 |
|
逗號分隔的字串清單 | 必要項目。 指示按鈕類型的逗號分隔字串清單。 如果包含,回應將在回應中包含每個按鈕的按鈕文字。 若是驗證範本,此值必須為 |
|
curl 'https://graph.facebook.com/v17.0/102290129340398/message_template_previews?category=AUTHENTICATION&languages=en_US,es_ES&add_security_recommendation=true&code_expiration_minutes=10&button_types=OTP' \ -H 'Authorization: Bearer EAAJB...'
{ "data": [ { "body": "*{{1}}* is your verification code. For your security, do not share this code.", "buttons": [ { "autofill_text": "Autofill", "text": "Copy code" } ], "footer": "This code expires in 10 minutes.", "language": "en_US" }, { "body": "Tu código de verificación es *{{1}}*. Por tu seguridad, no lo compartas.", "buttons": [ { "autofill_text": "Autocompletar", "text": "Copiar código" } ], "footer": "Este código caduca en 10 minutos.", "language": "es_ES" } ] }
使用 WhatsApp Business 帳號 > Upsert 訊息範本端點批量更新或建立多種語言的驗證範本,這些範本包含或排除選用的安全和過期警告。
如果具有相符名稱和語言的範本已存在,系統將使用要求的內容更新範本,否則將建立一個新範本。
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/upsert_message_templates
{ "name": "<NAME>", "languages": [<LANGUAGES>], "category": "AUTHENTICATION", "components": [ { "type": "BODY", "add_security_recommendation": <ADD_SECURITY_RECOMMENDATION> // Optional }, { "type": "FOOTER", "code_expiration_minutes": <CODE_EXPIRATION_MINUTES> // Optional }, { "type": "BUTTONS", "buttons": [ { "type": "OTP", "otp_type": "<OTP_TYPE>", "package_name": "<PACKAGE_NAME>", // One-tap buttons only "signature_hash": "SIGNATURE_HASH>", // One-tap buttons only } ] } ] }
支援所有範本建立屬性,但以下為例外情況:
text
屬性。autofill_text
屬性。此範例使用複製驗證碼按鈕建立三個分別為英文、西班牙文和法文的驗證範本。每個範本皆命名為「authentication_code_copy_code_button」,並包含安全建議和過期時間。
curl 'https://graph.facebook.com/v17.0/102290129340398/upsert_message_templates' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer EAAJB...' \ -d ' { "name": "authentication_code_copy_code_button", "languages": ["en_US","es_ES","fr"], "category": "AUTHENTICATION", "components": [ { "type": "BODY", "add_security_recommendation": true }, { "type": "FOOTER", "code_expiration_minutes": 10 }, { "type": "BUTTONS", "buttons": [ { "type": "OTP", "otp_type": "COPY_CODE" } ] } ] }'
此範例(1)使用名稱「authentication_code_autofill_button」和語言「en_US」更新現有範本,以及(2)使用一鍵式自動填入按鈕建立兩個分別為西班牙文和法文的新驗證範本。兩個新建範本皆命名為「authentication_code_autofill_button」,並包含安全建議和過期時間。
curl 'https://graph.facebook.com/v17.0/102290129340398/upsert_message_templates' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer EAAJB...' \ -d ' { "name": "authentication_code_autofill_button", "languages": ["en_US","es_ES","fr"], "category": "AUTHENTICATION", "components": [ { "type": "BODY", "add_security_recommendation": true }, { "type": "FOOTER", "code_expiration_minutes": 15 }, { "type": "BUTTONS", "buttons": [ { "type": "OTP", "otp_type": "ONE_TAP", "package_name": "com.example.luckyshrub", "signature_hash": "K8a%2FAINcGX7" } ] } ] }'
{ "data": [ { "id": "954638012257287", "status": "APPROVED", "language": "en_US" }, { "id": "969725527415202", "status": "APPROVED", "language": "es_ES" }, { "id": "969725530748535", "status": "APPROVED", "language": "fr" } ] }
請參閱 Github 上適用於 Android 的 WhatsApp 一次性密碼(OTP)應用程式範例。此應用程式範例示範如何透過 API 傳送和接收 OTP 密碼和驗證碼、如何整合一鍵式自動填入和複製驗證碼按鈕、如何建立範本,以及如何建立範例伺服器。