💬 Командный WhatsApp-Инбокс на новой ПлатформеЕщё
1msg official logo

WhatsApp Business API для подтверждения успешного завершения проверки

Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда его идентификацию или верификацию eKYC одобрили.

Обзор сценария

Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда проверка его личности или eKYC одобрена. Сообщение включает имя клиента, процесс верификации и метку об успешном статусе. Кнопка со статическим URL открывает аккаунт или портал клиента.

Пример шаблона

Здравствуйте, {{1}}! Ваше {{2}} успешно завершено: {{3}}. Теперь вы можете воспользоваться всеми функциями аккаунта. Если у вас есть вопросы, мы готовы помочь.

Открыть аккаунт
  • {{1}}
    имя клиента
  • {{2}}
    процесс проверки (например, верификация eKYC, проверка личности, проверка документов)
  • {{3}}
    ярлык статуса (например, Успешно проверено, Одобрено, Проверка завершена)
  • “Открыть аккаунт”
    кнопка — исправлена в шаблоне Meta
WhatsApp Business API for verification success confirmation

Когда это использовать

Используйте этот сценарий, когда клиент завершает проверку личности или eKYC, и дело одобрено — и вам нужно подтвердить успех заранее, прежде чем они узнают об этом по email или через поддержку. Это подходит для финтех-команд, закрывающих очереди KYC, торговых площадок, активирующих продавцов после проверки личности, и агентств, подключающих вебхуки одобрения от провайдера eKYC к исходящим сообщениям в WhatsApp.

Меньше звонков с вопросом «моя верификация завершена?»
Три переменные в теле содержат имя клиента, метку процесса верификации и статус успешного выполнения, чтобы клиент узнал, что верификация пройдена, не открывая почту и не обращаясь в поддержку.
Доступ к аккаунту в один клик
Кнопка со статическим URL с меткой «Открыть аккаунт» открывает портал или раздел аккаунта — ссылка фиксируется в утверждённом шаблоне Meta, в то время как только текст тела отправляется через API.
Обновления без открытого чата
Поскольку нет активной переписки, отправка производится с использованием утверждённого шаблона WhatsApp через API 1MSG — это единственный канал, позволяющий связаться с клиентом вне 24-часового окна сессии.
Без личных поздравлений при каждом одобрении
Когда eKYC-провайдер или бэк-офис отмечает случай как одобренный, интеграция определяет номер телефона и запускает шаблон при этом событии, вместо того чтобы кто-то вручную копировал текст об успешном завершении.
Доставка зарегистрирована для проверки соответствия
Результат доставки фиксируется после отправки, чтобы команды CRM или соответствия могли видеть, кого уведомили, и обрабатывать ошибки в соответствии с правилами платформы.

Как это работает

  1. Действия клиентов

    Клиент завершает проверку личности или eKYC.

    user action

  2. Офис

    Бэк-офис, провайдер eKYC или интеграция отмечают случай как одобренный или подтверждённый.

    POST /sendTemplate

  3. Событие захвата

    Система определяет номер телефона получателя и статус успешной верификации.

    phone: "+…"

  4. Собрать и отправить

    Персонализированное сообщение по шаблону создаётся с тремя переменными в теле и статической кнопкой URL.

    POST /sendTemplate

  5. Доставлено

    Клиент получает уведомление WhatsApp об успешной проверке.

    delivered

  6. Отслеживание статуса

    Результат доставки сохраняется в журнале; ошибки обрабатываются по правилам платформы.

    status: "read"

WhatsApp Business API for verification success confirmation

Техническая реализация

Предварительные условия

  1. Ключ API 1MSG · Как получить ключ API
  2. Аккаунт WhatsApp Business · Как подключить WABA
  3. Шаблон WhatsApp · Как одобрить шаблон WABA
  4. Подключение клиента · Как управлять согласием клиентов

Примеры кода

#!/usr/bin/env bash
set -euo pipefail

# === Configuration (replace "___" placeholders) ===

API_BASE_URL="https://api.1msg.io"        # production 1MSG API base URL
CHANNEL_ID="___"                           # channel ID from 1MSG dashboard
API_TOKEN="___"                            # channel JWT token (Bearer)

TEMPLATE_NAME="___"                        # approved template name
TEMPLATE_NAMESPACE="___"                   # template namespace (required — send fails without it)
TEMPLATE_LANGUAGE="___"                    # template language code, e.g. "en"



# === Test data ===
TEST_PHONE="___"                 # client phone in international format
TEST_CUSTOMERNAME="___"         # {{1}} customer name
TEST_PROCESS="___"         # {{2}} process name
TEST_STATUS="___"         # {{3}} status label

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"

for pair in "CHANNEL_ID=$CHANNEL_ID" "API_TOKEN=$API_TOKEN" \
            "TEMPLATE_NAME=$TEMPLATE_NAME" "TEMPLATE_NAMESPACE=$TEMPLATE_NAMESPACE" \
            "TEMPLATE_LANGUAGE=$TEMPLATE_LANGUAGE" "TEST_PHONE=$TEST_PHONE" \
            "TEST_CUSTOMERNAME=$TEST_CUSTOMERNAME" \
            "TEST_PROCESS=$TEST_PROCESS" \
            "TEST_STATUS=$TEST_STATUS"; do
    val="${pair#*=}"
    if [ -z "$val" ] || [ "$val" = "___" ]; then
        echo "Missing configuration value: ${pair%%=*}" >&2
        exit 1
    fi
done

if [ -z "$PHONE_NORM" ]; then
    echo "Error: phone number has no digits after normalization" >&2
    exit 1
fi

URL="${API_BASE_URL%/}/${CHANNEL_ID}/sendTemplate"

# params carries body ONLY. Button text is fixed in the Meta template — no button param.

# {{1}} customer name → ${TEST_CUSTOMERNAME}
# {{2}} process name → ${TEST_PROCESS}
# {{3}} status label → ${TEST_STATUS}
read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "template": "${TEMPLATE_NAME}",
  "namespace": "${TEMPLATE_NAMESPACE}",
  "language": { "policy": "deterministic", "code": "${TEMPLATE_LANGUAGE}" },
  "params": [
    {
      "type": "body",
      "parameters": [
        { "type": "text", "text": "${TEST_CUSTOMERNAME}" },
        { "type": "text", "text": "${TEST_PROCESS}" },
        { "type": "text", "text": "${TEST_STATUS}" }
      ]
    }

  ]
}
JSON

RESPONSE="$(curl -s -w '\n%{http_code}' -X POST "$URL" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${API_TOKEN}" \
    -d "$PAYLOAD")"

HTTP_CODE="$(printf '%s' "$RESPONSE" | tail -n1)"
BODY="$(printf '%s' "$RESPONSE" | sed '$d')"

case "$BODY" in
    *'"sent":true'*) ok=1 ;;
    *) ok=0 ;;
esac

if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ] && [ "$ok" -eq 1 ]; then
    echo "Message sent to client."
    echo "API response: $BODY"
else
    echo "Send failed. HTTP status: $HTTP_CODE" >&2
    echo "$BODY" >&2
    exit 1
fi

Статус ответа и доставки

HTTP 2xx и JSON "sent": true означают, что 1MSG принял сообщение для отправки — это не значит, что оно уже доставлено на телефон клиента. Сохраните id поле (выглядит как wamid.…), чтобы сопоставить обратные вызовы о доставке.

200 OKОтвет
{
  "sent": true,
  "id": "wamid.HBgLMzgwNjM5...",
  "message": "Message accepted for delivery"
}
  • sent

    Принято для отправки — ещё не на телефоне клиента

  • id

    Храните это; обратные вызовы доставки и hookInfo привязываются к этому ключу

Сама доставка приходит позже, в виде отдельного обратного вызова. Зарегистрируйте вебхук (POST …/webhook), и 1MSG отправит обновления статуса на ваш HTTPS-эндпоинт в корневом hooks[] сообщении.

200 OKВебхук о статусе доставки — данные, которые вы получаете
{
  "hooks": [
    {
      "id": "gBGGeSaGViBfAgnlzOSHEwK9O6F",
      "type": "message",
      "status": "sent",
      "timestamp": "1654864094",
      "recipient_id": "556123122026"
    }
  ]
}
  • status

    sent, delivered, read — или статус отказа, если это применимо

  • id

    Соотносит callback с id, возвращённым вызовом send

  • timestamp

    Unix-время в виде строки

Если вы предпочитаете не получать обратные вызовы, используйте вместо этого поллинг. GET {base}/{channel}/hookInfo?messageId=<id>На практике доставка часто завершается за считанные секунды — но контракт API этого не гарантирует, поэтому никогда не блокируйте поток в ожидании этого.

Распространённые ошибки

СтатусОтветПричина
200Message was not sent: template is not definednamespace, template or language missing from the request body.
200template name (…) does not exist in <language>The template is approved in a different language than the one requested.
200Message was not sent: provide chatId, phone, bsuid, or usernameNo recipient the channel could resolve.
403access deniedThe token is wrong, or belongs to a different channel than the URL.
429too many requests. please try laterThe channel is over its send rate.

ЧАВО

Да, для холодных сообщений в WhatsApp требуется одобренный Meta шаблон.

Связанные

Обслуживание клиентов
WhatsApp Business API для уточнения данных для верификации
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда подтверждение личности или KYC не удаётся завершить без уточнения конкретных данных.
Обслуживание клиентов
WhatsApp Business API для уведомления о повторной активации аккаунта
Сценарий отправляет владельцу аккаунта персонализированный шаблон WhatsApp, когда завершён анализ или перепроверка аккаунта и доступ восстановлен.
Обслуживание клиентов
WhatsApp Business API для запроса подписи или подтверждения данных
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда надо подписать документ или подтвердить переданные данные для продолжения.
Обслуживание клиентов
WhatsApp Business API для уведомления об отказе в верификации
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда его eKYC или проверка личности отклонены.
Обслуживание клиентов
WhatsApp Business API для уведомления о статусе проверки
Сценарий отправляет клиенту персонализированный шаблон WhatsApp при изменении статуса проверки или eKYC.
Обслуживание клиентов
WhatsApp Business API для запроса загрузки документа
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда отсутствует необходимый документ, который нужно загрузить для продолжения.
Обслуживание клиентов
WhatsApp Business API для запроса дополнительных сведений по тикету
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда для решения тикета нужна дополнительная информация, а сеансовое окно не открыто.
Обслуживание клиентов
WhatsApp Business API для уведомления о принятии тикета
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда его запрос в поддержку принят на обработку.

Интегрируйте WhatsApp за часы
без проблем с инфраструктурой