Перейти к основному содержимому

Шаблоны аутентификации по коду | Документация для разработчиков

Шаблоны аутентификации по коду копирования

Обновлено: 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" } ] }