Solicitar compartir el contacto

Envíe un mensaje con el botón nativo para compartir el contacto. La persona decide si desea compartir su teléfono con la empresa.

Rutas y autenticación

Utilice el token de API de la empresa, creado en Configuración → Integraciones → Tokens de API. Los tokens restringidos necesitan el alcance waba, incluso en la ruta unificada. Los tokens anteriores sin alcances siguen permitidos. CHANNEL_UUID debe pertenecer a la empresa del token.

POSTAutenticación
/api/v1/channels/CHANNEL_UUID/request-contactWABA o ZuckZapGo; token de API de la empresa
/api/v1/waba/CHANNEL_UUID/request-contactSolo WABA; token de API de la empresa
/api/messages/request-contactCanal asociado al token de conexión; Authorization: Bearer TOKEN_DEL_CANAL

Ejemplo WABA: solicitar por teléfono

Reemplace CHANNEL_UUID, SU_API_TOKEN y el teléfono con los datos de su integración. Incluya el código de país y utilice solo dígitos. El texto debe tener entre 1 y 1024 caracteres.

curl --request POST 'https://backend.sendeasy.app/api/v1/channels/CHANNEL_UUID/request-contact' \
  --header 'Authorization: Bearer SU_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{"to":"5511999999999","body":"Comparta su contacto para continuar con la atención."}'

WABA: contacto sin teléfono

Si recibe solo un BSUID, pase ese identificador opaco en to sin modificarlo. El username es un nombre visible y no sustituye al destinatario. SendEasy envía un mensaje nativo request_contact_info a Meta. La disponibilidad y las reglas de envío dependen de la cuenta y del proveedor.

{
  "to": "BR.Example123",
  "body": "Comparta su contacto para continuar con la atención."
}

ZuckZapGo: teléfono o LID

Para un canal WhatsApp con proveedor ZuckZapGo/WuzAPI, utilice la misma ruta unificada e incluya id, obligatorio con 1 a 128 caracteres alfanuméricos. El destinatario puede ser un teléfono, JID de teléfono o LID completo. Esta integración no acepta BSUID, username, grupos ni JID con sufijo de dispositivo.

{
  "to": "123456789012345@lid",
  "body": "Comparta su contacto para continuar con la atención.",
  "id": "ContactRequest202610060001"
}

Respuesta y confirmación de entrega

HTTP 200 devuelve la respuesta del proveedor. En WABA, messages[0].id identifica el mensaje aceptado. La aceptación no confirma la entrega: siga los eventos statuses de Meta o consulte la ruta de estado a continuación. Este endpoint no crea por sí solo un mensaje de salida ni un ticket en el inbox WABA.

{
  "messaging_product": "whatsapp",
  "contacts": [{ "input": "5511999999999", "wa_id": "5511999999999" }],
  "messages": [{ "id": "wamid.EXAMPLE" }]
}
curl 'https://backend.sendeasy.app/api/v1/waba/CHANNEL_UUID/messages/MESSAGE_ID/status' \
  --header 'Authorization: Bearer SU_API_TOKEN'

Cuando la persona comparte el contacto

El contacto compartido sigue el flujo normal de mensajes entrantes y se conserva el payload original al reenviar webhooks. En la API oficial, la tarjeta tiene origin: "contact_request"; el teléfono está en contacts[].phones[].wa_id. En ZuckZapGo, el evento Message tiene contactMessage.isSelfContact: true; el vCard contiene la identidad compartida. La correlación se hace por conversación, dentro de la empresa y canal. Una tarjeta común de terceros no debe sustituir la identidad del remitente.

Errores y reintentos

El ID estable y la idempotencia descritos aquí se aplican a ZuckZapGo. Reutilice el mismo id y payload cuando se permita un reintento. SendEasy no reintenta automáticamente. Incluir id en WABA no añade idempotencia al envío.

ErrorSignificado
CONTACT_REQUEST_BODY_INVALIDTexto vacío o superior a 1024 caracteres.
CONTACT_REQUEST_RECIPIENT_INVALIDDestinatario inválido para el proveedor.
CONTACT_REQUEST_ID_REQUIREDZuckZapGo exige un ID alfanumérico de 1 a 128 caracteres.
CHANNEL_NOT_FOUNDCanal inexistente o fuera de la empresa del token.
CONTACT_REQUEST_DISPATCH_UNKNOWNResultado incierto después de un timeout/fallo de transporte. No reenviar automáticamente.
contact_request_dispatch_unknownEl proveedor no puede determinar si despachó. No reenviar ni generar otro ID.
contact_request_id_conflictEl ID se reutilizó con datos diferentes.

Otros errores conservan el estado HTTP del proveedor y sus detalles en provider. Confirme que la cuenta permite este tipo de mensaje. Un fallo documentado por el proveedor como anterior al despacho puede permitir un reintento con el mismo ID y payload.

Vea también API Pública y WABA API.

Essa informação foi útil?