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

WhatsApp Business API для консультаций перед покупкой

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

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

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

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

Здравствуйте, {{1}}!

Вы интересовались {{2}}. Специалист {{3}} готов провести бесплатную консультацию перед покупкой и ответить на ваши вопросы.

Записаться на консультацию
  • {{1}}
    имя клиента
  • {{2}}
    название продукта или услуги, которыми интересовался клиент
  • {{3}}
    название компании или имя специалиста, проводящего консультацию
  • “Записаться на консультацию”
    кнопка — исправлена в шаблоне Meta
WhatsApp Business API for pre-purchase consultation

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

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

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

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

  1. Триггер

    Система обнаруживает намерение совершить покупку или событие, подходящее для предложения консультации (корзина, запрос цены, форма заявки).

    event · triggered

  2. Обработка события

    Телефон клиента, контекст продукта или услуги, а также данные компании или специалиста берутся из CRM, e-commerce или формы лида.

    phone: "+…"

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

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

    POST /sendTemplate

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

    Клиент получает сообщение в WhatsApp и может перейти по ссылке, чтобы записаться или запросить консультацию.

    delivered

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

    Результат доставки фиксируется в CRM или в воронке продаж для последующих действий.

    status: "read"

WhatsApp Business API for pre-purchase consultation

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

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

  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_PRODUCTORSERVICENAME="___"         # {{2}} product or service name
TEST_COMPANYORSPECIALISTNAME="___"         # {{3}} company or specialist name

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_PRODUCTORSERVICENAME=$TEST_PRODUCTORSERVICENAME" \
            "TEST_COMPANYORSPECIALISTNAME=$TEST_COMPANYORSPECIALISTNAME"; 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}} product or service name → ${TEST_PRODUCTORSERVICENAME}
# {{3}} company or specialist name → ${TEST_COMPANYORSPECIALISTNAME}
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_PRODUCTORSERVICENAME}" },
        { "type": "text", "text": "${TEST_COMPANYORSPECIALISTNAME}" }
      ]
    }

  ]
}
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[]верхнем уровне payload

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 для каталога товаров — интерактивный список
Этот сценарий отправляет интерактивный список с помощью sendList в течение 24-часового окна сеанса.
Вовлечение и конверсия лидов
WhatsApp Business API для уведомления нового менеджера по лидам
Сценарий отправляет менеджеру по продажам персонализированный шаблон WhatsApp, когда поступает новый лид.
Вовлечение и конверсия лидов
WhatsApp Business API для квалификации лидов с ключевыми вопросами
Этот кейс отправляет новому лиду одобренный шаблон WhatsApp с персонализированным приветствием: подставляются имя лида и продукт, а также быстрый ответ «Начать»
Вовлечение и конверсия лидов
WhatsApp Business API для повторного обращения к лиду без ответа
Сценарий отправляет лиду персонализированный шаблон WhatsApp, если он не ответил на предыдущее продажное сообщение в ожидаемое время.
Вовлечение и конверсия лидов
WhatsApp Business API для передачи лида в отдел продаж
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда квалифицированный лид передаётся в отдел продаж.
Вовлечение и конверсия лидов
WhatsApp Business API для первого контакта с новым лидом
Сценарий отправляет лиду персонализированный шаблон WhatsApp как первое касание в продажах.
Вовлечение и конверсия лидов
WhatsApp Business API для отправки коммерческих предложений
Сценарий отправляет потенциальному клиенту персонализированный шаблон WhatsApp, когда готово коммерческое предложение.

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