Скилл 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 quality survey

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

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

Более высокая частота откликов на опросы по качеству обслуживания
Опрос о качестве поступает в 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 quality survey

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

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

  1. Ключ API 1MSG · Как получить API-ключ
  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_COMPANYORSPECIALISTNAME="___"         # {{2}} company or specialist name
TEST_ADDITIONALINFO="___"         # {{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_COMPANYORSPECIALISTNAME=$TEST_COMPANYORSPECIALISTNAME" \
            "TEST_ADDITIONALINFO=$TEST_ADDITIONALINFO"; 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}} company or specialist name → ${TEST_COMPANYORSPECIALISTNAME}
# {{3}} additional info → ${TEST_ADDITIONALINFO}
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_COMPANYORSPECIALISTNAME}" },
        { "type": "text", "text": "${TEST_ADDITIONALINFO}" }
      ]
    }

  ]
}
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 mean 1MSG accepted the message for sending — not that it already reached the customer's phone. Save the id field (looks like wamid.…) to correlate delivery callbacks.

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

    Связывает обратный вызов с id возвращаемым значением функции отправки

  • 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 для опроса NPS после взаимодействия
Сценарий отправляет клиенту персонализированный шаблон WhatsApp после завершения взаимодействия, предлагая оценить, насколько они вероятно порекомендуют бизнес.

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