💬 Командный WhatsApp-Инбокс на новой ПлатформеЕщё
1msg official logo

WhatsApp Business API для ответа в сессии — запрос данных

Этот сценарий отправляет бесплатное текстовое сообщение через WhatsApp с использованием sendMessage в рамках 24-часового окна обслуживания клиентов.

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

Этот сценарий отправляет произвольное текстовое сообщение в WhatsApp с sendMessage в пределах 24-часового окна обслуживания клиентов. Используйте его после входящего события вебхука, когда у вас уже есть открытая сессия и нужно запросить недостающие детали тикета.

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

Чтобы продолжить решать тикет {{1}}, отправьте {{2}}.

  • {{1}}
    номер тикета поддержки
  • {{2}}
    что вам необходимо от клиента (фото, документ, разъяснение)
WhatsApp Business API for session reply — request additional information

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

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

На открытые тикеты шаблоны не тратятся
sendMessage отправляет свободный текст в течение 24-часового окна обслуживания клиентов, так что вы можете запросить недостающие детали, не оплачивая шаблон для разговора, начатого клиентом.
Более быстрое решение тикетов
Две переменные в теле содержат номер тикета и точный элемент, которого вы ожидаете, чтобы клиент знал, что отправить обратно, не открывая письмо и не повторяя проблему.
Меньше переписки с агентом
Ваш бэкенд сопоставляет входящий вебхук с тикетом и заполняет оба заполнителя перед тем, как сработает sendMessage, чтобы агенту не нужно было перепечатывать запрос в чате.
Ответ остаётся в том же чате
Клиент получает запрос в открытой сессии WhatsApp и может прикрепить фото или документ в том же чате, где ваш вебхук обрабатывает входящий ответ для поддержки.

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

  1. Статус отслеживается

    Сообщение от клиента поступает через входящий вебхук.

    status: "read"

  2. Отслеживание события

    Ваш бэкенд связывает чат с тикетом и определяет недостающие данные.

    POST /sendMessage

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

    Текстовое сообщение сессии отправляется с упоминанием тикета и ожидаемого элемента.

    POST /sendMessage

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

    Клиент отвечает запрошенным материалом в той же сессии.

    delivered

WhatsApp Business API for session reply — request additional information

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

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

  1. Ключ API 1MSG · Как получить API ключ
  2. Аккаунт WhatsApp Business · Как подключить WABA
  3. Открыть 24-часовое сессионное окно · Как работает 24-часовое окно
  4. Согласие клиента на рассылку · Как управлять согласиями клиентов
  5. Конечная точка вебхука · Как настроить вебхуки

Примеры кода

#!/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)



# === Test data ===
TEST_PHONE="___"                 # client phone in international format · requires open 24-hour session window
TEST_TICKETNUMBER="___"         # {{1}} ticket number
TEST_AWAITEDITEM="___"         # {{2}} awaited item

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"

for pair in "CHANNEL_ID=$CHANNEL_ID" "API_TOKEN=$API_TOKEN" "TEST_PHONE=$TEST_PHONE" \
            "TEST_TICKETNUMBER=$TEST_TICKETNUMBER" \
            "TEST_AWAITEDITEM=$TEST_AWAITEDITEM"; 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}/sendMessage"

read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "body": "To continue resolving ticket TKT-1024, please send a photo of the damaged item."
}
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Вебхук статуса доставки — payload, который вы получаете
{
  "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: empty bodyNo body in the request.
200Message was not sent: provide chatId, phone, bsuid, or usernameNo recipient the channel could resolve.
200wrong fileThe media could not be fetched or uploaded — not a reachable URL, not valid base64.
403access deniedThe token is wrong, or belongs to a different channel than the URL.
200Message was not sent: filenamesendFile called without a filename, so the media has no extension to send.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Нет, в этом сценарии используется сессионное сообщение в рамках 24-часового окна поддержки клиентов.

Связанные

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

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