> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pub/Sub

> Synchronisez les événements personnalisés de Google Pub/Sub vers OneSignal pour déclencher des Journeys automatisés et des campagnes de messagerie personnalisées basées sur le comportement des utilisateurs en temps réel.

export const DATA_TYPE_0 = "message fields"

export const PLATFORM_0 = "Pub/Sub"

export const COLUMN_HEADER_0 = "Pub/Sub Message Field"

export const PROPERTIES_DESCRIPTION_0 = "JSON object with event details"

## Aperçu

L'intégration OneSignal + Google Pub/Sub permet la synchronisation en temps réel des événements personnalisés de vos sujets Pub/Sub vers OneSignal pour déclencher des campagnes de messagerie automatisées et des Journeys basés sur le comportement des utilisateurs.

Pub/Sub est le service de messagerie évolutif de Google qui permet aux applications d'envoyer et de recevoir des messages entre composants indépendants. OneSignal agit en tant qu'abonné à vos sujets Pub/Sub, vous permettant de synchroniser les messages d'événements depuis Pub/Sub pour déclencher des expériences utilisateur personnalisées.

***

## Prérequis

* Accès aux [Event Streams](/docs/en/event-streams) pour les événements de message sortants (Les limitations de forfait et les dépassements s'appliquent)
* Accès aux [Événements personnalisés](/docs/en/custom-events) pour la synchronisation des événements entrants (Les limitations de forfait et les dépassements s'appliquent)
* [Forfait de compte mis à jour](https://onesignal.com/pricing) (non disponible sur les applications gratuites)

### Google Pub/Sub

* **Projet Google Cloud** avec Pub/Sub activé
* **Sujets Pub/Sub** contenant des messages d'événements
* **Autorisations IAM** pour accorder l'accès au compte de service
* **Messages au format JSON** sur vos sujets

***

## Configuration

<Steps>
  <Step title="Créer une connexion Pub/Sub">
    Dans OneSignal, allez dans **Data > Integrations** et cliquez sur **Add Integration**.

    1. Sélectionnez **Google Pub/Sub** dans la liste
    2. Entrez l'**ID de projet GCP** où se trouvent vos sujets Pub/Sub
    3. Choisissez la méthode d'authentification :
       * **Compte de service auto-généré** (recommandé) : OneSignal crée et gère le compte de service
       * **Compte de service existant** : Fournissez votre propre fichier JSON de clé de compte de service
    4. Cliquez sur **Connect**
  </Step>

  <Step title="Accorder des autorisations au compte de service">
    OneSignal créera un nouveau compte de service et vous fournira l'adresse e-mail du compte de service.

    Accordez le rôle **`roles/pubsub.editor`** à ce compte de service sur votre projet GCP :

    ```bash theme={null}
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/pubsub.editor
    ```

    OneSignal utilise ce rôle pour :

    * Créer des abonnements à vos sujets d'événements
    * Consommer les messages d'événements des sujets
    * Créer des sujets d'erreur (Dead Letter Queue) pour le traitement échoué
  </Step>

  <Step title="Tester la connexion">
    Une fois que vous avez accordé les autorisations nécessaires, cliquez sur **Save** dans OneSignal pour vérifier la connexion.

    OneSignal validera qu'il peut accéder à vos sujets Pub/Sub et est prêt à traiter les messages d'événements.
  </Step>
</Steps>

***

## Schéma de données d'événements

Avant de pouvoir utiliser un sujet Pub/Sub pour des événements personnalisés, vous devez définir le schéma des messages d'événements.

<Steps>
  <Step title="Accéder à la définition du schéma d'événements">
    Dans OneSignal, accédez à **Données > Intégrations** et sélectionnez votre connexion Pub/Sub.

    OneSignal récupère automatiquement la liste des sujets de votre projet. Cliquez sur **Actualiser les sujets** pour actualiser manuellement la liste.
  </Step>

  <Step title="Définir le schéma des messages d'événements">
    1. Cliquez sur le nom du sujet contenant vos données d'événements
    2. Sélectionnez **JSON** comme format de message (seul format pris en charge)
    3. Cliquez sur **Importer un exemple de message** et fournissez un exemple de message d'événement
    4. Examinez le schéma détecté pour garantir un mappage correct des champs
    5. Cliquez sur **Save Dataset**
  </Step>
</Steps>

### Format des messages d'événements

Vos messages Pub/Sub doivent suivre cette structure JSON pour les événements personnalisés OneSignal :

```json theme={null}
{
  "event_name": "purchase_completed",
  "user_id": "user_12345",
  "timestamp": "2023-12-01T10:30:00Z",
  "properties": {
    "product_id": "prod_abc123",
    "price": 29.99,
    "category": "electronics",
    "payment_method": "credit_card"
  },
  "session_id": "session_789"
}
```

### Mappage des données d'événement

Mappez vos {DATA_TYPE_0} {PLATFORM_0} au format des événements personnalisés de OneSignal :

| Champ OneSignal | {COLUMN_HEADER_0} | Description                     | Requis |
| --------------- | ----------------- | ------------------------------- | ------ |
| `name`          | `event_name`      | Identifiant de l'événement      | Oui    |
| `external_id`   | `user_id`         | Identifiant de l'utilisateur    | Oui    |
| `timestamp`     | `event_timestamp` | Quand l'événement s'est produit | Non    |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0}      | Non    |

<Warning>
  N'incluez pas de PII client ou de données sensibles dans les exemples de messages. OneSignal stocke les exemples de messages dans le cadre de la définition du jeu de données.
</Warning>

***

## Traitement d'événements en temps réel

Contrairement aux intégrations par lots, Pub/Sub permet un traitement d'événements en temps quasi réel :

* **Faible latence** : Les événements sont traités quelques secondes après leur publication sur les sujets
* **Abonnements automatiques** : OneSignal crée des abonnements dédiés pour chaque sujet
* **Gestion des erreurs** : Les événements échoués sont envoyés vers des sujets Dead Letter Queue pour investigation
* **Traitement évolutif** : Gère automatiquement les flux d'événements à volume élevé

***

## Configuration avancée

### Dead Letter Queue

OneSignal crée automatiquement des sujets d'erreur pour les événements qui échouent lors du traitement :

* **Création automatique** : Les sujets d'erreur sont créés par abonnement
* **Stockage des événements échoués** : Les événements qui ne peuvent pas être traités sont stockés pour le débogage
* **Revue manuelle** : Accédez aux événements échoués via la Console Google Cloud pour le dépannage

### Accusé de réception des messages

OneSignal gère automatiquement l'accusé de réception des messages Pub/Sub :

* **Traitement réussi** : Les messages sont acquittés après la création réussie de l'événement
* **Traitement échoué** : Les messages sont acquittés négativement et envoyés vers la Dead Letter Queue
* **Logique de nouvelle tentative** : Gestion intégrée des nouvelles tentatives pour les échecs transitoires

***

## Limitations

* Seul le format de message JSON est pris en charge
* Les exemples de messages sont stockés dans le cadre des définitions de jeux de données (évitez les PII)
* Nécessite les autorisations `roles/pubsub.editor` au niveau du projet
* La taille maximale des messages suit les limites de Google Pub/Sub (10 Mo)

***

## FAQ

### À quelle vitesse les événements sont-ils traités ?

Les événements sont généralement traités quelques secondes après leur publication sur votre sujet Pub/Sub, permettant un déclenchement de Journey en temps quasi réel.

### Que se passe-t-il si OneSignal ne peut pas traiter un événement ?

Les événements échoués sont automatiquement envoyés vers un sujet Dead Letter Queue créé par OneSignal. Vous pouvez consulter ces événements dans la Console Google Cloud pour le débogage.

### Puis-je utiliser plusieurs sujets pour différents types d'événements ?

Oui, vous pouvez définir des schémas pour plusieurs sujets au sein du même projet GCP. Chaque sujet peut contenir différents types d'événements avec leurs propres définitions de schéma.
