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

WhatsApp Business API для уведомления о необходимом действии kyc

Сценарий отправляет клиенту персонализированный WhatsApp шаблон, когда проверка KYC или соответствия выявляет необходимость действия с дедлайном.

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

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

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

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

Пройти KYC
  • {{1}}
    имя клиента
  • {{2}}
    требуемое действие KYC (например, загрузить подтверждение адреса, обновить информацию о компании, пройти проверку личности)
  • {{3}}
    срок действия (например, 15 марта 2026 г.)
  • “Пройти KYC”
    кнопка — исправлено в шаблоне Meta
WhatsApp Business API for kyc action required notification

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

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

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

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

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

    Проверка KYC или выполнения требований сигнализирует, что клиент должен выполнить конкретное действие до установленного срока.

    user action

  2. Зафиксировать событие

    Система определяет номер телефона получателя и поля, где нужны действия.

    phone: "+…"

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

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

    POST /sendTemplate

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

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

    delivered

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

    Результат доставки зарегистрирован; клиент может завершить шаг на портале и продолжить сессию после ответа.

    status: "read"

WhatsApp Business API for kyc action required 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_ACTION="___"         # {{2}} action name
TEST_DUEDATE="___"         # {{3}} due date

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_ACTION=$TEST_ACTION" \
            "TEST_DUEDATE=$TEST_DUEDATE"; 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}} action name → ${TEST_ACTION}
# {{3}} due date → ${TEST_DUEDATE}
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_ACTION}" },
        { "type": "text", "text": "${TEST_DUEDATE}" }
      ]
    }

  ]
}
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 шаблон.

Связанные

Подтверждение OTP
WhatsApp Business API для уведомления о рассмотрении ekyc
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда их eKYC или проверка личности на рассмотрении.
Подтверждение OTP
WhatsApp Business API для запроса проверки
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда требуется проверка личности или KYC, но она ещё не началась.
Подтверждение OTP
WhatsApp Business API для безопасного логина через одноразовый пароль
Сценарий отправляет шаблон аутентификации WhatsApp с одноразовым кодом подтверждения, когда нужно подтвердить вход в защищённый или безопасный сервис.
Подтверждение OTP
WhatsApp Business API для подтверждения регистрации приложения
Отправляет в WhatsApp шаблон аутентификации с одноразовым кодом подтверждения регистрации в теле сообщения и кнопкой «Копировать код».
Подтверждение OTP
WhatsApp Business API для миграции sms на whatsapp otp
Отправляет одноразовый код подтверждения через шаблон аутентификации WhatsApp при переключении доставки OTP с SMS на WhatsApp.
Подтверждение OTP
WhatsApp Business API для безопасного подтверждения действий OTP
Сценарий отправляет шаблон аутентификации WhatsApp с одноразовым кодом, когда требуется подтвердить безопасное действие.
Подтверждение OTP
WhatsApp Business API для подтверждения доступа к сервису
Отправляет одноразовый код подтверждения через шаблон аутентификации WhatsApp, когда нужно подтвердить личность перед использованием защищённого сервиса.
Подтверждение OTP
WhatsApp Business API для подтверждения авторизации через otp
Отправляет одноразовый код через шаблон подтверждения WhatsApp, когда пользователю нужно подтвердить вход или доступ.

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