Скилл WhatsApp API для ИИ агентаЕщё
1msg official logo

WhatsApp Business API для уведомления о статусе проверки

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

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

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

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

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

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

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

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

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

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

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

    Клиент отправляет документы для проверки или проходит процесс подтверждения личности.

    user action

  2. Статус отслеживается

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

    status: "read"

  3. Определяет номер получателя

    Система определяет номер телефона и статус получателя.

    status: "read"

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

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

    POST /sendTemplate

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

    Клиент получает уведомление WhatsApp с обновлённым статусом верификации.

    delivered

  6. Результат доставки записывается в журнал

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

    status: "read"

WhatsApp Business API for verification status notification

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

Требования

  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, когда завершён анализ или перепроверка аккаунта и доступ восстановлен.
Обслуживание клиентов
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 Business API для командной рассылки — создать группу WhatsApp
В этом сценарии используется API групп с операцией создания, чтобы создать именованную группу WhatsApp для рассылок команды.

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