Шаблоны аутентификации по коду | Документация для разработчиков
Шаблоны аутентификации по коду копирования
Обновлено: 4 ноября 2025 г
Шаблоны аутентификации с копированием кода позволяют отправлять пользователям одноразовый пароль или код вместе с кнопкой копирования кода. Когда пользователь WhatsApp нажимает кнопку копирования кода, клиент WhatsApp копирует пароль или код в буфер обмена устройства. Затем пользователь может перейти в ваше приложение и вставить пароль или код в ваше приложение.
Примечание: Кнопка «Я не запрашивал код» в настоящее время находится в стадии бета-тестирования и постепенно внедряется для корпоративных клиентов.

Шаблоны аутентификации с помощью кнопки «Копировать код» состоят из:
Ограничения
URL-адреса, медиафайлы и эмодзи не поддерживаются.
Создание шаблонов аутентификации
Для создания шаблонов аутентификации используйте «Аккаунт WhatsApp Business» > «Шаблоны сообщений»
Синтаксис запроса
curl 'https://graph.facebook.com/<API_VERSION> /<WHATSAPP_BUSINESS_ACCOUNT_ID> /message_templates' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer EAAJB...' \ -d ' { "name": "<TEMPLATE_NAME> ", "язык": "<TEMPLATE_LANGUAGE> ", "category": "authentication", "message_send_ttl_seconds":<TIME_TO_LIVE> , // Необязательные "компоненты": [ { "type": "body", "add_security_recommendation":<SECURITY_RECOMMENDATION> // Необязательно }, { "type": "footer", "code_expiration_minutes":<CODE_EXPIRATION> // Необязательно }, { "type": "buttons", "buttons": [ { "type": "otp", "otp_type": "copy_code", "text": "<COPY_CODE_BUTTON_TEXT> " // Необязательный } ] } ] }'Обратите внимание, что в запросе на создание шаблона
тип указан как OTP тип кнопки будет установлен на URL . Вы можете подтвердить это, выполнив GET-запрос к только что созданному шаблону аутентификации и проанализировав его компоненты.Параметры запроса
| Заполнитель | Описание | Пример значения |
|---|---|---|
<CODE_EXPIRATION>Целое число | Необязательный. Указывает количество минут, в течение которых пароль или код действителен. Если код включен, в доставленном сообщении будет отображено предупреждение об истечении срока его действия и это значение. Если этот параметр опущен, предупреждение об истечении срока действия кода не будет отображаться в доставленном сообщении. Минимум 1, максимум 90. | 5 |
<COPY_CODE_BUTTON_TEXT>Нить | Необязательный. Скопировать текст надписи кнопки с кодом. Если этот параметр опущен, текст по умолчанию будет содержать предустановленное значение, локализованное для языка шаблона. Например, «Код для английского языка (США)».Максимум 25 символов. | Скопировать код |
<SECURITY_RECOMMENDATION>Логический | Необязательный. Установите значение true если хотите, чтобы шаблон включал эту строку . В целях безопасности не делитесь этим кодом. Установите значение false , чтобы исключить эту строку. | истинный |
<TEMPLATE_LANGUAGE>Нить | Необходимый. шаблона и код локали . | en_US |
<TEMPLATE_NAME>Нить | Необходимый. Название шаблона. Максимальное количество символов: 512. | проверочный код |
<TIME_TO_LIVE>Целое число | Необязательный. Значение времени жизни аутентификационного сообщения в секундах. См. раздел «Время жизни» ниже. | 60 |
Пример запроса
curl 'https://graph.facebook.com/v25.0/102290129340398/message_templates' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer EAAJB...' \ -d ' { "name": "authentication_code_copy_code_button", "language": "en_US", "category": "authentication", "message_send_ttl_seconds": 60, "components": [ { "type": "body", "add_security_recommendation": true }, { "type": "footer", "code_expiration_minutes": 5 }, { "type": "buttons", "buttons": [ { "type": "otp", "otp_type": "copy_code", "text": "Copy Code" } ] } ] }'
Пример ответа
{ "id": "594425479261596", "status": "ОЖИДАЕТСЯ", "category": "АВТЕНТИКАЦИЯ" }Вебхуки
Веб -перехватчик для сообщений, отправляемых с помощью кнопок, срабатывает всякий раз, когда пользователь нажимает кнопку «Я не запрашивал код» в сообщении.
Пример веб-перехватчика
{ "object": "whatsapp_business_account", "entry": [ { "id": "320580347795883", "changes": [ { "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "12345678", "phone_number_id": "1234567890" }, "contacts": [ { "profile": { "name": "John" }, "wa_id": "12345678" } ], "messages": [ { "context": { "from": "12345678", "id": "wamid.HBgLMTIxMTU1NTE0NTYVAgARGBJDMDEyMTFDNTE5NkFCOUU3QTEA" }, "from": "12345678", "id": "wamid.HBgLMTIxMTU1NTE0NTYVAgASGCBBQ0I3MjdCNUUzMTE0QjhFQkM4RkQ4MEU3QkE0MUNEMgA=", "timestamp": "1753919111", "from_logical_id": "131063108133020", "type": "button", "button": { "payload": "DID_NOT_REQUEST_CODE", "text": "Я не запрашивал код" } } ] }, "field": "messages" } ] } ] }Пример приложения
Посмотрите наш пример приложения WhatsApp для Android, загружаемого через API, на Github. В примере приложения показано, как отправлять и получать пароли и коды OTP через API, как интегрировать кнопки автозаполнения в одно касание и копирования кода, как создать шаблон и как запустить тестовый сервер.
Отправка шаблонов аутентификации
В этом документе объясняется, как отправлять утвержденные шаблоны аутентификации с кнопками для ввода одноразовых паролей .
Обратите внимание, что сначала необходимо инициировать процедуру установления соединения между вашим приложением и клиентом WhatsApp. См. раздел «Установление соединения» выше.
Синтаксис запроса
curl -X POST "https://graph.facebook.com/<API_VERSION> /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID> /messages" \ -H "Авторизация: Bearer"<ACCESS_TOKEN> " \ -H "Content-Type: application/json" \ -d ' { "messaging_product": "whatsapp", "recipient_type": "individual", "to": "<CUSTOMER_PHONE_NUMBER> ", "type": "template", "template": { "name": "<TEMPLATE_NAME> ", "язык": { "код": "<TEMPLATE_LANGUAGE_CODE> " }, "components": [ { "type": "body", "parameters": [ { "type": "text", "text": "<ONE-TIME PASSWORD> " } ] }, { "type": "button", "sub_type": "url", "index": "0", "parameters": [ { "type": "text", "text": "<ONE-TIME PASSWORD> " } ] } ] } }'Параметры запроса
| Заполнитель | Описание | Пример значения |
|---|---|---|
<CUSTOMER_PHONE_NUMBER> | Номер телефона клиента в WhatsApp. | 12015553931 |
<ONE-TIME PASSWORD> | Одноразовый пароль или проверочный код, который будет выдан клиенту. Обратите внимание, что это значение должно встречаться в полезной нагрузке дважды. Максимум 15 символов. | J$FpnYnP |
<TEMPLATE_LANGUAGE_CODE> | Языковой и локализационный код шаблона . | en_US |
<TEMPLATE_NAME> | Название шаблона. | проверочный код |
Ответ
В случае успеха API ответит следующим образом:
{ "messaging_product": "whatsapp", "contacts": [ { "input": "<INPUT> ", "wa_id": "<WA_ID> " } ], "messages": [ { "id": "<ID> " } ] }Параметры отклика
| Заполнитель | Описание | Пример значения |
|---|---|---|
<INPUT>Нить | Номер телефона клиента, на который было отправлено сообщение. Он может не совпадать с wa_id . | +16315551234 |
<WA_ID>Нить | Идентификатор WhatsApp клиента, которому было отправлено сообщение. Он может не совпадать с введенными данными . | +16315551234 |
<ID>Нить | Идентификатор сообщения WhatsApp. Вы можете использовать идентификатор, указанный после «wamid.», чтобы отслеживать статус вашего сообщения. | wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBI3N0EyQUJDMjFEQzZCQUMzODMA |
Пример запроса
curl -L 'https://graph.facebook.com/v25.0/105954558954427/messages' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer EAAJB...' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "12015553931", "type": "template", "template": { "name": "verification_code", "language": { "code": "en_US" }, "components": [ { "type": "body", "parameters": [ { "type": "text", "text": "J$FpnYnP" } ] }, { "type": "button", "sub_type": "url", "index": "0", "parameters": [ { "type": "text", "text": "J$FpnYnP" } ] } ] } }'
Пример ответа
{ "messaging_product": "whatsapp", "contacts": [ { "input": "12015553931", "wa_id": "12015553931" } ], "messages": [ { "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBI4Qzc5QkNGNTc5NTMyMDU5QzEA" } ] }