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

WhatsApp Business API для отзывов о стадии обслуживания

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

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

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

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

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

Оценить этап
  • {{1}}
    имя клиента
  • {{2}}
    название завершенного этапа обслуживания (например, онбординг, диагностика, установка)
  • {{3}}
    оцените этот этап по шкале от 1 до 5, это займет 1 минуту
  • “Оценить этап”
    кнопка — зафиксирована в шаблоне Meta
WhatsApp Business API for service stage feedback

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

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

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

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

  1. Триггер

    Система CRM или управления операциями создает событие о завершении этапа, когда веха отмечена как выполненная.

    event · triggered

  2. Фиксация события

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

    phone: "+…"

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

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

    POST /sendTemplate

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

    Клиент получает запрос на обратную связь по этапу WhatsApp с контекстом этапа.

    delivered

  5. Статус отслежен

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

    status: "read"

WhatsApp Business API for service stage feedback

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

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

  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_STAGE="___"         # {{2}} stage name
TEST_INFO="___"         # {{3}} additional info

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_STAGE=$TEST_STAGE" \
            "TEST_INFO=$TEST_INFO"; 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}} stage name → ${TEST_STAGE}
# {{3}} additional info → ${TEST_INFO}
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_STAGE}" },
        { "type": "text", "text": "${TEST_INFO}" }
      ]
    }

  ]
}
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

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

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