Team Inbox APIЕщё
1msg official logo

WhatsApp Business API для уведомления о назначении агента

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

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

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

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

Здравствуйте, {{1}}! На ваш запрос №{{2}}: {{3}} назначен специалист. Мы свяжемся с вами в ближайшее время.

Запросить статус
  • {{1}}
    имя клиента
  • {{2}}
    номер тикета или дела
  • {{3}}
    имя назначенного специалиста
  • “Запросить статус”
    кнопка — исправлено в шаблоне Meta
WhatsApp Business API for agent assigned notification

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

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

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

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

  1. Триггер

    Служба поддержки назначает специалиста на тикет и создаёт событие назначения.

    event · triggered

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

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

    phone: "+…"

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

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

    POST /sendTemplate

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

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

    delivered

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

    Результат доставки фиксируется; ошибки обрабатываются по правилам платформы.

    status: "read"

WhatsApp Business API for agent assigned 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_TICKETNUMBER="___"         # {{2}} ticket number
TEST_SPECIALIST="___"         # {{3}} 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_TICKETNUMBER=$TEST_TICKETNUMBER" \
            "TEST_SPECIALIST=$TEST_SPECIALIST"; 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}} ticket number → ${TEST_TICKETNUMBER}
# {{3}} specialist name → ${TEST_SPECIALIST}
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_TICKETNUMBER}" },
        { "type": "text", "text": "${TEST_SPECIALIST}" }
      ]
    }

  ]
}
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 в виде строки

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

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