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

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

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

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

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

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

Здравствуйте, {{1}}! Благодарим вас за выбор {{2}}. {{3}} Пожалуйста, напишите свой отзыв — это займет примерно минуту.

Оставить отзыв
  • {{1}}
    имя клиента
  • {{2}}
    контекст продукта или услуги (например, визит в салон, онлайн-заказ, завершенная услуга)
  • {{3}}
    оставьте отзыв или рекомендацию (например, напишите свой отзыв, это займет 1 минуту)
  • “Оставить отзыв”
    кнопка закреплена в шаблоне Meta
WhatsApp Business API for text review request

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

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

Повышение частоты ответов на письменные отзывы
Запрос отзыва поступает в WhatsApp с именем, контекстом продукта или услуги и просьбой об отзыве в виде трех переменных, так что просьба оказывается в канале, который клиент уже использует, а не в письме, которое он никогда не открывает.
Сообщение после завершения
Операционная система отправляет утвержденный шаблон, когда взаимодействие соответствует критериям, чтобы запрос на отзыв доходил до клиента, даже если нет открытого разговора и текстовые ответы не разрешены.
Нет ручной проверки сообщений-продолжений
Триггер отзыва определяет номер телефона получателя и поля отзыва, создает шаблон с тремя переменными в теле и статической кнопкой URL, чтобы сотрудники не вводили заново контекст услуги и не забывали отправить ссылку для отзыва.
Контекст сервиса до того, как они напишут
Имя клиента и контекст продукта или услуги появляются в тексте сообщения, поэтому клиент точно знает, о каком опыте он оставляет отзыв, прежде чем нажать кнопку «Оставить отзыв» или ответить в сессии.
Доставка зафиксирована для последующего анализа
Результат доставки записывается обратно в CRM или операционную систему, а отправка на проверку отслеживается на связанном бланке или через входящие ответы по сессиям, поэтому последующие действия по отзывам остаются привязанными к той же записи взаимодействия.

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

  1. Триггер

    CRM или операционная система запускает триггер проверки, когда взаимодействие подходит.

    event · triggered

  2. Захват события

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

    phone: "+…"

  3. Создать и отправить

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

    POST /sendTemplate

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

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

    delivered

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

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

    status: "read"

WhatsApp Business API for text review request

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

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

  1. Ключ API 1MSG · Как получить API Key
  2. Бизнес-аккаунт WhatsApp · Как подключить 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_NEXTSTEP="___"         # {{3}} next step

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_NEXTSTEP=$TEST_NEXTSTEP"; 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}} next step → ${TEST_NEXTSTEP}
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_NEXTSTEP}" }
      ]
    }

  ]
}
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 зависят от этого

Delivery itself arrives later, as a separate callback. Register a webhook (POST …/webhook) and 1MSG POSTs status updates to your HTTPS endpoint in a top-level 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 в виде строки

If you would rather not receive callbacks, poll GET {base}/{channel}/hookInfo?messageId=<id> instead. In practice delivery often completes within seconds — but the API contract does not guarantee it, so never block a flow waiting on it.

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

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

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