1msg official logo

WhatsApp Business API для передачи — поделитесь контактной карточкой

Этот сценарий отправляет контактную карточку WhatsApp через sendContact в течение 24-часового окна обслуживания клиентов.

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

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

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

Свяжитесь с нашим специалистом через контактную карточку ниже.

WhatsApp Business API for specialist handoff — share contact card

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

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

Меньше звонков на неправильный номер
sendContact отправляет отображаемое имя специалиста и телефон в формате E.164 в виде vCard в активной сессии, чтобы клиент мог нажать для звонка вместо того, чтобы перепечатывать цифры из текстового сообщения.
Контакт сохранён в одно касание
Карта открывает встроенный процесс сохранения в WhatsApp, поэтому имя и номер специалиста попадают в телефонную книгу клиента автоматически, без ручного ввода.
Передача продолжается в той же цепочке сообщений
Сообщение отправляется в открытой сессии после того, как агент отмечает тикет готовым к эскалации, поэтому клиенту не придётся уходить из чата поддержки, чтобы искать номер в другом месте.
Агенты не передают номера вручную
Ваш бэкенд загружает имя специалиста и телефон из договора интеграции, когда эскалация одобрена, чтобы сотрудники первой линии не копировали или диктовали цифры.

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

  1. Триггер

    Агент помечает тикет как готовый для передачи специалисту.

    event · triggered

  2. Событие «Захват»

    Ваш бэкенд загружает имя и номер телефона специалиста.

    phone: "+…"

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

    sendContact отправляет контактную карточку в активную сессию.

    POST /send_contact

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

    Клиент сохраняет специалиста или звонит ему в WhatsApp.

    delivered

WhatsApp Business API for specialist handoff — share contact card

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

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

  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

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"
URL="${API_BASE_URL%/}/${CHANNEL_ID}/sendContact"

# specialist display name (code_contract)
# specialist phone in E.164 format
read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "contacts": [
    {
      "name": { "formatted_name": "Jane Specialist", "first_name": "Jane Specialist" },
      "phones": [{ "phone": "+12025550199", "type": "CELL" }]
    }
  ]
}
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."
else
  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: 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 для квитанции о доставке — реакции и прочтения
Этот сценарий объединяет sendReaction и readMessage в рамках 24-часового окна обслуживания клиентов.
Обслуживание клиентов
WhatsApp Business API для меню поддержки — интерактивные кнопки
Этот сценарий отправляет интерактивное сообщение с кнопкой с помощью sendButton в 24-часовое окно обслуживания клиентов.
Обслуживание клиентов
WhatsApp Business API для ответа в сессии — запрос данных
Этот сценарий отправляет бесплатное текстовое сообщение через WhatsApp с использованием sendMessage в рамках 24-часового окна обслуживания клиентов.
Обслуживание клиентов
WhatsApp Business API для уведомления об устранении проблемы
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда их тикет поддержки решён.
Обслуживание клиентов
WhatsApp Business API для напоминания об ожидании ответа
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда поддержка заблокирована, ожидая ответ клиента.
Обслуживание клиентов
WhatsApp Business API для уведомления о назначении агента
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда тикет назначен специалисту.
Обслуживание клиентов
WhatsApp Business API для уведомлений об изменении процесса сервиса
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда компания меняет способ предоставления услуги или выполнения процесса.
Обслуживание клиентов
WhatsApp Business API для подтверждения получения приложения
Сценарий отправляет клиенту персонализированный шаблон WhatsApp сразу после подачи заявки или формы запроса.

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