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

WhatsApp Business API для связи с водителем — отправить контакт

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

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

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

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

Контакт курьера для этой доставки указан в карточке ниже.

WhatsApp Business API for courier or driver contact — share contact card

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

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

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

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

  1. Триггер

    Логистика назначает водителя или курьера для доставки.

    event · triggered

  2. Событие захвата

    Ваш сервер загружает имя и номер телефона курьера.

    phone: "+…"

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

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

    POST /send_contact

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

    Клиент сохраняет курьера или вызывает его через WhatsApp.

    delivered

WhatsApp Business API for courier or driver contact — 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": "Иван Курьер", "first_name": "Иван Курьер" },
      "phones": [{ "phone": "+998901234567", "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 привязаны к этому ключу

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возвращаемым значением вызова 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.

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

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

Связанные

Заказы и доставка
WhatsApp Business API для подтверждения доставки заказа
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда его заказ отмечен как доставленный.
Заказы и доставка
WhatsApp Business API для уведомления об отмене заказа
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда заказ отменён.
Заказы и доставка
WhatsApp Business API для уведомлений о новом маршруте или поездке
Сценарий отправляет менеджеру или диспетчеру персонализированный шаблон WhatsApp, когда создаётся новый маршрут доставки или рейс.
Заказы и доставка
WhatsApp Business API для подтверждения нового заказа
Сценарий отправляет клиенту персонализированный шаблон WhatsApp сразу после оформления нового заказа.
Заказы и доставка
WhatsApp Business API для уведомления о неудачной попытке доставки
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, если не удалось доставить.
Заказы и доставка
WhatsApp Business API для обновления — указать место получения
Этот сценарий отправляет местоположение с помощью sendLocation в течение 24-часового окна обслуживания клиентов.
Заказы и доставка
WhatsApp Business API для уведомлений о задержке доставки
Сценарий отправляет клиенту персонализированный шаблон WhatsApp при задержке доставки заказа.
Заказы и доставка
WhatsApp Business API для уведомлений о смене статуса
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда изменяется статус его заказа, заявки или запроса.

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