# Identifiants utilisateur à portée métier

Un **identifiant utilisateur à portée métier** (BSUID) est l'identifiant Meta d'un utilisateur WhatsApp, limité à un portefeuille métier. Il figure sur les messages entrants que le contact utilise ou non un nom d'utilisateur WhatsApp, et il permet d'adresser un contact dont vous n'avez pas le numéro de téléphone.

Bird l'expose sous la forme `bsuid` dans `from` et `to` d'un message, l'accepte comme `to` d'un envoi, et filtre la liste de messages par cette valeur. La référence [business-scoped user IDs](https://developers.facebook.com/documentation/business-messaging/whatsapp/business-scoped-user-ids) de Meta est la source pour le déploiement lui-même et pour ce que les autres surfaces Meta font de cet identifiant.

## Pourquoi un contact arrive sans numéro de téléphone

WhatsApp déploie les noms d'utilisateur. Un utilisateur qui en adopte un affiche son nom d'utilisateur au lieu de son numéro de téléphone dans l'application, et Meta ne transmet alors plus le numéro dans les payloads reçus par l'entreprise. Le BSUID est l'identité toujours présente, c'est pourquoi un message entrant peut en porter un sans aucun `phone_number`.

Meta inclut toujours le numéro de téléphone lorsque vous avez déjà une relation avec le contact : lorsque ce numéro de téléphone professionnel précis lui a envoyé un message ou l'a appelé, ou a reçu un message ou un appel de sa part, au cours des 30 derniers jours, ou lorsque le contact figure dans votre carnet de contacts Meta. La condition de 30 jours est évaluée par numéro de téléphone professionnel, donc un contact qui a écrit à l'un de vos numéros peut tout de même arriver sans numéro de téléphone sur un autre.

Un message d'un utilisateur WhatsApp contient aussi le profil qu'il publie, dans `username` et `display_name` sur `from`. Les deux sont absents lorsque le contact n'a pas adopté de nom d'utilisateur ou que le message ne contient pas de profil, et aucun des deux ne peut servir à adresser un message.

## À quoi ressemble un BSUID

```json
{
  "from": {
    "bsuid": "US.13491208655302741918",
    "username": "alexr",
    "display_name": "Alex Rivera"
  }
}
```

Un code pays ISO 3166 alpha-2, un point, puis jusqu'à 128 caractères alphanumériques. Un **BSUID parent**, auquel une entreprise gérée peut être inscrite pour qu'un seul identifiant fonctionne sur un ensemble de portefeuilles, insère `ENT` après le pays : `US.ENT.11815799212886844830`. Bird accepte les deux formes comme destinataire.

Trois propriétés déterminent comment vous le stockez et l'utilisez :

- **Transmettez la valeur entière, telle quelle.** Meta rejette un BSUID modifié, donc aucune partie n'est facultative : le code pays, le point et chaque caractère de l'identifiant voyagent ensemble. Bird valide le format avant d'accepter un envoi, et le code pays doit être en majuscules et correspondre à un vrai code ISO 3166 alpha-2 ; un préfixe en minuscules ou inconnu est refusé plutôt que corrigé. La limite de 128 caractères s'applique à l'identifiant après le code pays, et après le segment `ENT.` sur un BSUID parent.
- **Il est limité à un portefeuille métier.** Tout numéro de téléphone professionnel du même portefeuille peut envoyer un message à ce BSUID ; un numéro d'un autre portefeuille ne le peut pas, et l'envoi échoue.
- **Il n'est pas permanent.** Meta indique que le BSUID d'un contact est régénéré lorsque celui-ci change de numéro de téléphone, il identifie donc un interlocuteur plutôt que de servir de clé client durable.

## Déroulement habituel d'une conversation

Un contact avec lequel vous n'avez encore jamais échangé vous écrit par BSUID, et l'échange qui vous permet d'obtenir son numéro se déroule en trois étapes :

1. **Le contact vous écrit.** Le message entrant contient `from.bsuid`, et `from.phone_number` peut être absent. Ce message ouvre la [fenêtre de service client](/docs/knowledge-base/whatsapp/customer-service-window), vous pouvez donc répondre librement pendant les 24 heures suivantes.
2. **Vous demandez le numéro.** Envoyez une [demande d'informations de contact](/docs/guides/whatsapp/message-types/interactive/contact-info-requests), un bouton unique qui permet au contact de partager un numéro de téléphone. La même demande peut transiter par un modèle via son bouton `request_contact_info`, qui atteint un contact dont la fenêtre a expiré.
3. **Le contact appuie sur le bouton.** Le numéro divulgué arrive sous forme de [carte de contact](/docs/guides/whatsapp/receiving-whatsapp/contact-cards) entrante avec `origin` défini sur `contact_request` et le numéro dans `phone_numbers`. Une carte de contact divulguée peut décrire une autre personne ou un autre numéro. Stockez cette divulgation séparément de l'identité WhatsApp de l'expéditeur ; utilisez les identités effectivement fournies dans les messages suivants plutôt que d'écraser l'enregistrement client à partir de la seule carte.

Un contact peut refuser. Fermer la feuille de partage ne produit ni message ni webhook, donc un flux qui nécessite un numéro doit expirer de lui-même plutôt que d'attendre un refus, et il doit continuer à fonctionner pour un contact qui ne partage jamais son numéro.

## Envoyer à un BSUID

`to` accepte un BSUID partout où il accepte un numéro de téléphone :

```json
{
  "to": "US.13491208655302741918",
  "from": "+13124495648",
  "text": { "body": "Your order shipped." }
}
```

Quatre points diffèrent d'un envoi adressé par numéro de téléphone :

- **`from` doit appartenir au portefeuille auquel le BSUID est rattaché.** C'est la même exigence de portefeuille que Meta applique, et une incohérence échoue à WhatsApp plutôt qu'à l'acceptation.
- **Les templates de code à usage unique nécessitent un numéro de téléphone.** Un template géré par Bird dans la catégorie `authentication`, ou portant un bouton de code à usage unique, est refusé à l'acceptation avec une `422` [`E15014`](/docs/api/errors/E15014) `WhatsAppRecipientNotSupportedForTemplate`. Un template créé par votre espace de travail n'est pas vérifié à l'acceptation : Meta exige un numéro de téléphone pour les templates d'authentification one-tap, zero-tap et copy-code, donc un tel envoi est accepté puis échoue.
- **Une valeur qui n'est ni un numéro de téléphone ni un BSUID bien formé est refusée à l'acceptation**, avec une `422` [`E15001`](/docs/api/errors/E15001) `WhatsAppInvalidRecipient`.
- **Le prix est déterminé par le préfixe pays du BSUID.** Un numéro de téléphone fournit le pays sur lequel un message est tarifé, et pour un envoi par BSUID le préfixe à deux lettres le fournit à la place.

Tout le reste de l'envoi est inchangé : la [fenêtre de service client](/docs/guides/whatsapp/message-types#the-customer-service-window) conditionne toujours le contenu libre, et le `202` signifie toujours accepté et non délivré.

**Adressez un contact sur l'identité avec laquelle il vous a écrit.** Bird enregistre une fenêtre ouverte sous chaque identité portée par le message entrant, et un envoi recherche la fenêtre sous l'identité à laquelle il est adressé. Un contact qui vous a écrit uniquement par BSUID ne laisse aucune fenêtre associée à un numéro de téléphone, donc un envoi libre vers un numéro que vous détenez par ailleurs peut être refusé avec une `422` [`E15044`](/docs/api/errors/E15044) `WhatsAppServiceWindowClosed` alors que Meta considère encore la conversation ouverte. Répondre au `from` de son message évite l'incohérence.

## Lecture et filtrage par BSUID

Chaque lecture contient les identités présentes sur le message :

- **Sur un message**, `from` et `to` contiennent chacun un `phone_number`, un `bsuid`, ou les deux. Un message entrant nomme le contact sur `from` ; un message sortant le nomme sur `to`.
- **Sur un webhook**, les mêmes adresses figurent dans le payload de l'événement. Consultez [Événements WhatsApp](/docs/guides/whatsapp/events#the-event-envelope) pour l'enveloppe.
- **Sur la liste de messages**, `to` et `from` acceptent chacun un BSUID aussi bien qu'un numéro de téléphone, et chacun correspond à une extrémité du message. Le filtre `bsuid` correspond au contact dans les deux sens. L'ancien filtre `phone_number` est obsolète : `to` et `from` le remplacent et correspondent aux deux types d'identité.

Stockez les deux identités dans votre propre fiche de contact, et indexez la fiche sur votre propre identifiant plutôt que sur l'un ou l'autre de ceux de Meta. Un contact peut arriver avec un BSUID uniquement ; lorsqu'il partage son numéro de téléphone, vous pouvez aussi l'ajouter à sa fiche. S'il change de numéro, il reçoit un nouveau BSUID.

## Étapes suivantes

- [Recevoir des cartes de contact](/docs/guides/whatsapp/receiving-whatsapp/contact-cards) : le canal par lequel le numéro partagé arrive
- [Demandes d'informations de contact WhatsApp](/docs/guides/whatsapp/message-types/interactive/contact-info-requests) : le bouton qui demande le numéro
- [Envoyer des messages WhatsApp](/docs/guides/whatsapp/sending-whatsapp) : l'enveloppe de requête, le modèle `202` et les réessais sûrs
- [Référence business-scoped user IDs de Meta](https://developers.facebook.com/documentation/business-messaging/whatsapp/business-scoped-user-ids) : le déploiement, les BSUID parents et les autres surfaces Meta

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
