Начинаем перенос my.1msg.ioЕщё
1msg official logo

Уведомление о создании тикета через WhatsApp API

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

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

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

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

Здравствуйте, {{1}}! Ваш тикет №{{2}} создан. {{3}} Если появятся вопросы — напишите нам.

Узнать статус
  • {{1}}
    имя клиента
  • {{2}}
    номер тикета или обращения
  • {{3}}
    следующий шаг или подсказка (например, ответим в течение 24 часов, добавьте детали на портале)
  • “Узнать статус”
    кнопка задана в шаблоне Meta
WhatsApp Business API for ticket created notification

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

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

Номер тикета сразу в WhatsApp
Имя, номер тикета и следующий шаг приходят в чат клиента тремя переменными, поэтому номер легко найти в WhatsApp — не нужно ждать автоответа на почту.
Меньше вопросов «вы получили мой запрос?»
Подтверждение приходит сразу после того, как хелпдеск создал тикет, поэтому клиент знает, что запрос зарегистрирован, ещё до ответа оператора.
Без ручных подтверждений
Хелпдеск отправляет шаблон по событию создания тикета, поэтому никому не нужно копировать номер обращения и вручную писать следующие шаги.
Статус без лишних вопросов
Кнопка со статическим URL из шаблона Meta открывает страницу статуса тикета или портал поддержки, поэтому клиент проверяет прогресс сам и не просит ссылку.

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

  1. Триггер

    Клиент отправляет запрос в поддержку через форму, виджет или почту.

    event · triggered

  2. Создание тикета

    Хелпдеск создаёт тикет и запускает событие создания тикета.

    event · triggered

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

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

    POST /sendTemplate

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

    Клиент получает уведомление в WhatsApp с номером тикета и следующими шагами.

    delivered

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

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

    status: "read"

WhatsApp Business API for ticket created 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_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_TICKETNUMBER=$TEST_TICKETNUMBER" \
            "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}} ticket number → ${TEST_TICKETNUMBER}
# {{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_TICKETNUMBER}" },
        { "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,
  "message": "Sent to [email protected]",
  "description": "Message has been sent to the provider",
  "id": "wamid.HBgLMzgwNjM5..."
}
  • sent

    Принято к отправке — ещё не на телефоне клиента

  • id

    Сохраните его: уведомления о доставке и hookInfo привязаны к этому значению

Связанные

Обслуживание клиентов
WhatsApp Business API для запроса загрузки документа
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда отсутствует необходимый документ, который нужно загрузить для продолжения.
Обслуживание клиентов
Уведомление о передаче тикета через WhatsApp API
Сценарий отправляет клиенту персональный шаблон WhatsApp, когда тикет передан в другой отдел.
Обслуживание клиентов
Уведомление о смене статуса тикета через WhatsApp API
Сценарий отправляет клиенту персональный шаблон WhatsApp, когда меняется статус тикета в поддержке.
Обслуживание клиентов
Уведомление об эскалации тикета через WhatsApp API
Сценарий отправляет клиенту персональный шаблон WhatsApp, когда тикет эскалирован, потому что решение занимает больше времени, чем обычно.
Обслуживание клиентов
Уведомление о закрытии тикета через WhatsApp API
Сценарий отправляет клиенту персональный шаблон WhatsApp, когда тикет в поддержке закрыт.
Обслуживание клиентов
Запрос фото или файла через шаблон WhatsApp API
Сценарий отправляет клиенту персональный шаблон WhatsApp, когда поддержке для работы над тикетом нужно фото, документ или подтверждение, а 24-часовое окно не открыто.
Обслуживание клиентов
WhatsApp Business API для запроса дополнительных сведений по тикету
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда для решения тикета нужна дополнительная информация, а сеансовое окно не открыто.
Обслуживание клиентов
WhatsApp Business API для уведомления о принятии тикета
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда его запрос в поддержку принят на обработку.

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