Guides

Recevoir des messages

Recevez les messages de vos clients par webhook, répondez dans la fenêtre de 24 heures et retrouvez-les dans l'historique.

Mis à jour le 12 novembre 2026Voir en Markdown

Quand un client écrit à l'un de vos numéros, Bref Point Inbox enregistre le message et envoie un événement message.received à vos destinations de webhooks. Déclarez-en une avant tout (voir Webhooks).

L'événement#

message.received
{
  "id": "8dc9eca4-2eff-46de-80aa-0ac9674dd1ae",
  "type": "message.received",
  "createdAt": "2026-11-12T06:09:17.388Z",
  "data": {
    "messageId": "4f21edc3-047e-4f75-819a-1e69953f40a3",
    "waMessageId": "wamid.HBgM…",
    "phoneNumberId": "fb10613a-8a2c-4340-87ff-192082ffaf1f",
    "from": "237611111111",
    "type": "text",
    "content": { "text": { "body": "Bonjour, je voudrais déplacer mon rendez-vous" } },
    "contactName": "Awa",
    "occurredAt": "2026-11-12T06:09:17.402Z"
  }
}
Champ de dataDescription
messageIdIdentifiant du message chez Bref Point Inbox.
waMessageIdIdentifiant du message chez WhatsApp.
phoneNumberIdLe numéro qui a reçu le message (id du numéro, comme pour l'envoi).
fromLe numéro de l'expéditeur, sans « + ».
typetext, image, document, audio, video, location, sticker, button… tel que Meta le déclare.
contentLe contenu, sous une clé du nom du type : { "text": { "body": … } }, { "image": { "id": …, "caption": … } }… La forme exacte est celle de Meta.
contactNameLe nom de profil WhatsApp de l'expéditeur, s'il est connu.

Répondre#

Un message reçu ouvre la fenêtre de 24 heures pour ce numéro et cet expéditeur : vous pouvez lui répondre par un message libre.

bash
curl -X POST "$INBOX_API/messages" \
  -H "Authorization: Bearer $INBOX_KEY" -H "Content-Type: application/json" \
  -d '{ "phoneNumberId": "<data.phoneNumberId>", "to": "+<data.from>", "type": "text",
        "text": { "body": "Bien sûr, quel créneau vous conviendrait ?" } }'

La fenêtre est calculée par expéditeur et par numéro : un message d'un autre client n'ouvre pas la fenêtre de celui-ci.

Ne pas traiter deux fois#

Les événements peuvent arriver plus d'une fois (nouvel essai après un délai d'attente, rejeu manuel, renvoi par Meta). Bref Point Inbox dédoublonne les messages reçus à l'enregistrement, mais votre récepteur doit aussi être tolérant : l'id de l'événement (et data.messageId) est stable, ignorez ce que vous avez déjà traité.

Retrouver les messages reçus#

bash
curl "$INBOX_API/messages" \
  -H "Authorization: Bearer $INBOX_KEY"
Réponse · 200 OK
{
  "data": [
    {
      "id": "a9691d7a-ee51-4da9-87b2-24cce79a9313",
      "direction": "outbound",
      "status": "sent",
      "type": "location",
      "phoneNumberId": "4d8e654e-d744-4bf3-8211-9ceffcccfe87",
      "to": "237611111111",
      "waMessageId": "wamid.HBgMXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "content": {
        "type": "location",
        "location": {
          "name": "Cabinet Dentaire Zokem",
          "address": "Akwa, Douala",
          "latitude": 4.0511,
          "longitude": 9.7679
        }
      },
      "error": null,
      "createdAt": "2026-11-12T08:33:46.131Z",
      "sentAt": "2026-11-12T08:33:46.251Z",
      "deliveredAt": null,
      "readAt": null
    },
    {
      "id": "9e09a76b-537b-4d5f-8454-4305ba8748a6",
      "direction": "outbound",
      "status": "sent",
      "type": "document",
      "phoneNumberId": "4d8e654e-d744-4bf3-8211-9ceffcccfe87",
      "to": "237611111111",
      "waMessageId": "wamid.HBgMXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "content": {
        "type": "document",
        "media": {
          "link": "https://exemple.com/ordonnance.pdf",
          "caption": "Votre ordonnance",
          "filename": "ordonnance.pdf"
        }
      },
      "error": null,
      "createdAt": "2026-11-12T08:33:46.098Z",
      "sentAt": "2026-11-12T08:33:46.221Z",
      "deliveredAt": null,
      "readAt": null
    }
  ],
  "nextCursor": "MjAyNi0xMS0xMlQwODozMzo0Ni4wOThafGMwYmU4NDdlLWQyNDQtNGUyOS04N2M1LTAyNTE3ODk1Yzg5OQ"
}

Ajoutez ?direction=inbound pour ne voir que les messages reçus.

Tester sans téléphone#

Le bac à sable fait « arriver » un message à la demande et déclenche votre vrai webhook :

bash
curl -X POST "$INBOX_API/sandbox/simulate/inbound-message" \
  -H "Authorization: Bearer $INBOX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumberId": "4d8e654e-d744-4bf3-8211-9ceffcccfe87",
    "from": "+237611111111",
    "text": "Bonjour, je voudrais déplacer mon rendez-vous"
  }'
Réponse · 201 Created
{
  "messageId": "3f3baf5a-f93e-42e8-8263-ce62dc4aadd6",
  "from": "237611111111",
  "status": "received",
  "simulated": true
}