Identificadores de usuario con alcance de negocio
Un identificador de usuario con alcance de negocio (BSUID) es el identificador de Meta para un usuario de WhatsApp, con alcance a un portafolio de negocio. Llega en los mensajes entrantes sin importar si el contacto usa un nombre de usuario de WhatsApp, y permite dirigirse a un contacto cuyo número de teléfono no tienes.
Bird lo expone como bsuid en los campos from y to de un mensaje, lo acepta como to de un envío y filtra la lista de mensajes por él. La referencia de identificadores de usuario con alcance de negocio de Meta es la fuente sobre el despliegue en sí y sobre lo que otras superficies de Meta hacen con el identificador.
Por qué un contacto llega sin número de teléfono
WhatsApp está desplegando nombres de usuario. Un usuario que adopta uno muestra su nombre de usuario en lugar de su número de teléfono en la app, y Meta omite entonces el número en los payloads que recibe un negocio. El BSUID es la identidad que siempre está presente, por eso un mensaje entrante puede traer uno y ningún phone_number en absoluto.
Meta aún incluye el número de teléfono cuando ya tienes una relación con el contacto: cuando ese número de teléfono de negocio específico les ha enviado un mensaje o llamado, o ha recibido un mensaje o llamada de ellos, en los últimos 30 días, o cuando están en tu libreta de contactos de Meta. La condición de 30 días se evalúa por número de teléfono de negocio, así que un contacto que escribió a uno de tus números puede llegar sin número de teléfono en otro.
Un mensaje de un usuario de WhatsApp también trae el perfil que publica, en username y display_name de from. Ambos están ausentes cuando el contacto no ha adoptado un nombre de usuario o el mensaje no trae perfil, y ninguno puede usarse para dirigir un mensaje.
Cómo se ve un BSUID
Ejemplo de código
{
"from": {
"bsuid": "US.13491208655302741918",
"username": "alexr",
"display_name": "Alex Rivera"
}
}Un código de país ISO 3166 alfa-2, un punto y luego hasta 128 caracteres alfanuméricos. Un BSUID padre, en el que un negocio gestionado puede inscribirse para que un solo identificador funcione en un conjunto de portafolios, inserta ENT después del país: US.ENT.11815799212886844830. Bird acepta ambas formas como destinatario.
Tres propiedades determinan cómo almacenas y usas uno:
- Pasa el valor completo, sin modificar. Meta rechaza un BSUID modificado, así que ninguna parte es opcional: el código de país, el punto y cada carácter del identificador viajan juntos. Bird valida la forma antes de aceptar un envío, y el código de país debe estar en mayúsculas y ser un código ISO 3166 alfa-2 real; un prefijo en minúsculas o desconocido se rechaza en lugar de corregirse. El límite de 128 caracteres aplica al identificador después del código de país, y después del segmento ENT. en un BSUID padre.
- Tiene alcance a un portafolio de negocio. Cualquier número de teléfono de negocio en el mismo portafolio puede enviar mensajes a ese BSUID; un número en un portafolio diferente no puede, y el envío falla.
- No es permanente. Meta documenta que el BSUID de un contacto se regenera cuando cambia su número de teléfono, así que identifica a un interlocutor en vez de servir como clave de cliente duradera propia.
Cómo transcurre una conversación típica
Un contacto con el que no has hablado antes te escribe por BSUID, y el intercambio que te consigue su número se desarrolla en tres pasos:
- El contacto te escribe. El mensaje entrante trae from.bsuid, y from.phone_number puede estar ausente. Ese mensaje abre la ventana de servicio al cliente, así que puedes responder libremente durante las siguientes 24 horas.
- Pides el número. Envía una solicitud de información de contacto, un botón único que permite al contacto compartir un número de teléfono. La misma solicitud viaja en una plantilla a través de su botón request_contact_info, que alcanza a un contacto cuya ventana ya se cerró.
- El contacto toca el botón. El número revelado llega como una tarjeta de contacto entrante con origin establecido en contact_request y el número en phone_numbers. Una tarjeta de contacto revelada puede describir a otra persona u otro número. Almacena esa revelación por separado de la identidad WhatsApp del remitente; usa las identidades que realmente llegan en los mensajes posteriores en lugar de sobrescribir el registro del cliente solo con la tarjeta.
Un contacto puede rechazar. Descartar la hoja de compartir no produce ningún mensaje ni webhook, así que un flujo que necesita un número debe expirar por su cuenta en lugar de esperar a que llegue un rechazo, y debe seguir funcionando para un contacto que nunca comparte uno.
Envío a un BSUID
to acepta un BSUID en cualquier lugar donde acepta un número de teléfono:
Ejemplo de código
{
"to": "US.13491208655302741918",
"from": "+13124495648",
"text": { "body": "Your order shipped." }
}Cuatro cosas difieren de un envío dirigido por número de teléfono:
- from debe estar en el portafolio al que está vinculado el BSUID. Es el mismo requisito de portafolio que aplica Meta, y una discrepancia falla en WhatsApp en lugar de en la aceptación.
- Las plantillas de código de verificación de un solo uso necesitan un número de teléfono. Una plantilla gestionada por Bird en la categoría authentication, o una que lleve un botón de código de verificación de un solo uso, se rechaza en la aceptación con un 422 E15014 WhatsAppRecipientNotSupportedForTemplate. Una plantilla creada por tu espacio de trabajo no se verifica en la aceptación: Meta requiere un número de teléfono para las plantillas de autenticación de un toque, cero toques y copia de código, así que ese envío se acepta y luego falla.
- Un valor que no es ni un número de teléfono ni un BSUID bien formado se rechaza en la aceptación, con un 422 E15001 WhatsAppInvalidRecipient.
- El precio se determina por el prefijo de país del BSUID. Un número de teléfono proporciona el país contra el que se tarifica un mensaje, y en un envío por BSUID el prefijo de dos letras lo proporciona en su lugar.
Todo lo demás del envío permanece igual: la ventana de servicio al cliente sigue controlando el contenido libre, y el 202 sigue significando aceptado, no entregado.
Dirige el mensaje al contacto con la identidad con la que te escribió. Bird registra una ventana abierta bajo cada identidad que traía el mensaje entrante, y un envío busca la ventana bajo la identidad a la que se dirige. Un contacto que te escribió solo por BSUID no deja ninguna ventana asociada a un número de teléfono, así que un envío libre a un número de teléfono que tengas de otra fuente puede rechazarse con un 422 E15044 WhatsAppServiceWindowClosed aunque Meta aún considere la conversación abierta. Responder al from de su mensaje evita la discrepancia.
Lectura y filtrado por BSUID
Cada lectura trae las identidades que el mensaje contenga:
- En un mensaje, from y to llevan cada uno un phone_number, un bsuid, o ambos. Un mensaje entrante nombra al contacto en from; uno saliente lo nombra en to.
- En un webhook, las mismas direcciones van en el payload del evento. Consulta eventos de WhatsApp para ver la estructura.
- En la lista de mensajes, to y from aceptan cada uno un BSUID además de un número de teléfono, y cada uno coincide con un extremo del mensaje. El filtro bsuid coincide con el contacto en cualquier dirección. El filtro anterior phone_number está deprecado: to y from lo reemplazan y coinciden con ambos tipos de identidad.
Almacena ambas identidades junto a tu propio registro de contacto y usa tu propio identificador como clave en lugar de cualquiera de los de Meta. Un contacto puede llegar solo con un BSUID; cuando comparta su número de teléfono, también podrás asociarlo a su registro. Si cambia de número, recibirá un nuevo BSUID.
Próximos pasos
- Recepción de tarjetas de contacto: el canal por el que llega el número compartido
- Solicitudes de información de contacto de WhatsApp: el botón que la pide
- Envío de mensajes de WhatsApp: la estructura de la solicitud, el modelo 202 y reintentos seguros
- Referencia de identificadores de usuario con alcance de negocio de Meta: el despliegue, los BSUID padre y el resto de las superficies de Meta
Recursos relacionados
Continúa con la documentación, guías y ejemplos sobre este tema. Los recursos están en inglés.
Ver la guíaConnecting WhatsApp to Bird: from buying a number to a live channelComprender el conceptoWhat is the 24-hour customer service window on WhatsApp?Usar la herramientaWhatsApp message builderExplorar la funcionalidadWhatsApp
Prueba el ejercicio y obtén un resumen de implementación