Shared Inbox de WhatsApp para nueva PlataformaMás
1msg official logo

Compartir contacto del repartidor con WhatsApp API

Este escenario envía una tarjeta de contacto de WhatsApp con sendContact durante la ventana de servicio al cliente de 24 horas después de asignar un conductor o mensajero al pedido.

Descripción del caso de uso

Este escenario envía una tarjeta de contacto de WhatsApp con sendContact durante la ventana de servicio al cliente de 24 horas después de asignar un conductor o mensajero al pedido.

Ejemplo de plantilla

El contacto de tu mensajero para esta entrega está en la tarjeta de abajo.

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

Cuándo usarlo

Usa este escenario cuando logística asigna un conductor o mensajero a una entrega activa y el comprador necesita el teléfono de esa persona sin copiar dígitos de un mensaje de texto plano. Encaja en equipos de entrega última milla que comparten contactos para guardar con un toque dentro de una sesión abierta del pedido, y en operadores de flota que traspasan al mensajero asignado para que el cliente llame directo desde WhatsApp.

Menos marcaciones erróneas
sendContact entrega una vCard con el nombre para mostrar del mensajero y el teléfono en formato E.164, así el cliente toca para guardar o llamar en lugar de retipear dígitos que suelen confundirse en el chat.
Menos consultas repetidas por el número del conductor
La línea introductoria y la tarjeta de contacto llegan en la misma sesión abierta de WhatsApp del pedido, así el comprador obtiene acceso telefónico directo sin abrir correo ni volver a llamar a soporte.
Cero compartir dígitos a mano
Cuando logística asigna al mensajero, tu backend carga el nombre para mostrar y el teléfono desde el contrato de integración y sendContact se dispara automáticamente en la sesión activa.
Contacto en el hilo del pedido
El cuerpo breve del mensaje señala la tarjeta de abajo, así los datos del mensajero quedan en el chat de entrega que el cliente ya usa en lugar de un SMS o correo aparte.

Flujo de trabajo

  1. Disparador

    Logística asigna un conductor o mensajero a la entrega.

    evento · disparado

  2. Capturar evento

    Tu backend carga el nombre para mostrar y teléfono del mensajero.

    phone: "+…"

  3. Construir y enviar

    sendContact entrega la tarjeta de contacto en la sesión activa.

    POST /send_contact

  4. Entregado

    El cliente guarda o llama al mensajero desde WhatsApp.

    entregado

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

Implementación técnica

Requisitos previos

  1. Clave API de 1MSG · Cómo obtener la clave API
  2. Cuenta de WhatsApp Business · Cómo conectar WABA
  3. Ventana de sesión de 24 horas abierta · Cómo funciona la ventana de 24 horas
  4. Opt-in del cliente · Cómo gestionar el consentimiento
  5. Endpoint de webhook · Cómo configurar webhooks

Ejemplos de código

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

Respuesta y estado de entrega

HTTP 2xx y JSON "sent": true significan que 1MSG aceptó el mensaje para envío — no que ya llegó al teléfono del cliente. Guarda el campo id (tipo wamid.…) para correlacionar los callbacks de entrega.

200 OKRespuesta
{
  "sent": true,
  "message": "Sent to [email protected]",
  "description": "Message has been sent to the provider",
  "id": "wamid.HBgLMzgwNjM5..."
}
  • sent

    Aceptado para envío — aún no en el teléfono del cliente

  • id

    Guárdalo; los callbacks de entrega y hookInfo se basan en él

Estados de entrega y webhooks →

Errores frecuentes

EstadoRespuesta de la APICausaSolución
200Message was not sent: provide chatId, phone, bsuid, or usernameNingún destinatario que el canal pudiera resolver.Envía un solo destinatario: phone (código de país y número, solo dígitos), chatId (por ejemplo [email protected]) o bsuid.
401token is requiredLa petición no incluye el token.Agrega el token del canal como parámetro token en la URL: https://api.1msg.io/{channelId}/{method}?token=…
429too many requests. please try laterEl canal superó su límite de envío.Encola los mensajes de tu lado y reintenta con backoff exponencial.

Todos los códigos de error →

Preguntas comunes

Relacionado

Desarrolla para WhatsApp en horas
sin complicaciones de infraestructura