# Intégration du streaming d'événements

<Aside type="caution" icon="setting" title="Aide des développeurs requise">
 Vous aurez besoin de l'aide de votre équipe de développement pour configurer l'intégration. Veuillez partager ce guide avec eux.
</Aside>

## Aperçu de l'intégration

### Type d'intégration

**Source :** les données sont envoyées de Pushwoosh à votre système via HTTP ou gRPC en fonction des déclencheurs d'événements configurés.

### Comment fonctionne l'intégration ?

Pushwoosh transmet les données d'événements de communication (par ex., activité push/e-mail) à un point de terminaison défini par le client. Les données sont envoyées en flux par lots à des intervalles programmés ou lorsqu'une taille de lot minimale est atteinte.

Les données ne sont envoyées que si elles correspondent aux événements, plateformes et filtres optionnels sélectionnés (codes de campagne/message, activité en direct). Le point de terminaison du client doit être prêt à recevoir et éventuellement à répondre avec un statut.

### Glossaire

**URL du point de terminaison** : point de terminaison côté serveur qui permet de recevoir des requêtes. Le client peut spécifier un port si nécessaire.

Exemples :

*   `https://clientdomainname.com/webhook_endpoint`
*   `https://clientdomainname.com:8081/webhook_endpoint`

### Liste des entités synchronisées

*   Événements de statistiques de communication (par ex., Push envoyé, E-mail délivré)

### Cas d'utilisation

*   **Suivi de l'engagement en temps réel**

Surveillez les interactions des utilisateurs telles que les pushs envoyés, les e-mails ouverts ou les messages délivrés au fur et à mesure qu'elles se produisent, permettant une visibilité immédiate sur les performances de la campagne.

*   **Intégration d'analyses externes**

Diffusez des événements vers des plateformes d'analyse tierces pour un reporting et une analyse centralisés.

*   **Flux de travail utilisateur automatisés**

Déclenchez des actions dans des systèmes externes (comme les CRM ou les outils d'automatisation du marketing) en fonction des comportements des utilisateurs, par ex., envoyer un message de suivi lorsqu'un utilisateur ouvre un e-mail.

## Configuration de l'intégration

Pour configurer l'intégration :

1.  Dans votre compte Pushwoosh, allez dans **Paramètres > Intégrations tierces**, trouvez **Intégration du streaming d'événements**, et cliquez sur **Configurer**.

![Configurer l'intégration du streaming d'événements](/integrations-event-streaming-integration-1.webp)

2.  Dans la fenêtre qui s'ouvre, remplissez les champs nécessaires.

![Remplir les champs nécessaires](/integrations-event-streaming-integration-2.webp)

#### Saisir l'URL du point de terminaison

Dans le champ **URL du point de terminaison**, saisissez l'URL complète où les événements seront envoyés, y compris le protocole et le port le cas échéant.

**Exemple**

*   `https://clientdomainname.com/webhook_endpoint`
*   `https://clientdomainname.com:8081/webhook\_endpoint`

#### Sélectionner les événements

Dans la liste déroulante **Événements**, sélectionnez au moins un événement. Si aucun n'est sélectionné, la validation échouera. La liste des événements est gérée par le backend et peut changer au fil du temps.

#### Fournir les informations d'autorisation

Si votre serveur l'exige, saisissez la valeur complète de l'en-tête `Authorization` dans le champ **Autorisation**.

Exemples :

*   `Bearer your_token_here`
*   `Basic base64encoded_credentials`

<Aside>La valeur est insérée **telle quelle** dans l'en-tête `Authorization` (HTTP) ou les métadonnées gRPC. Assurez-vous qu'il y a un espace entre le schéma d'authentification et le jeton.</Aside>

#### Choisir le type de transport

Dans la liste déroulante **Type de transport**, choisissez le protocole de livraison pour la transmission des événements : **HTTP** ou **gRPC**. Chacun a un comportement et une configuration spécifiques.

##### HTTP

Avec le type de transport **HTTP**, Pushwoosh envoie des données par lots en fonction de l'une des conditions suivantes :

*   Au moins 100 événements sont prêts à être envoyés, ou
*   Une heure s'est écoulée depuis la dernière transmission.

Après l'envoi des données, la connexion est fermée une fois qu'une réponse réussie est reçue.

Si le serveur répond avec une **erreur 5xx**, Pushwoosh réessayera la requête selon la politique de relance définie.

**Mécanisme de relance**

| Tentative | Délai |
| :---- | :---- |
| 1ère | 1 seconde |
| 2ème | 3 secondes après la 1ère tentative |
| 3ème | 8 secondes après la 2ème tentative |

Si toutes les tentatives échouent, la requête est abandonnée.

**Délai d'attente**

Le délai d'attente par défaut pour une requête est de **30 secondes**. Cela peut être personnalisé sur demande via le support.

<LinkCard
  title="Voir l'exemple"
  href="/webhook_request_batch.json"
  target="_blank"
  rel="noopener noreferrer"
/>

##### gRPC

Le type de transport gRPC utilise le **streaming bidirectionnel** pour la transmission de données. Apprenez-en plus dans la [documentation gRPC](https://grpc.io/docs/what-is-grpc/core-concepts/#bidirectional-streaming-rpc).

Un flux est ouvert lorsque l'une des conditions suivantes est remplie :
*   Au moins 1 000 événements sont prêts à être livrés
*   Une heure s'est écoulée depuis l'ouverture du dernier flux

Le flux est fermé après l'envoi des événements. Cela garantit qu'un nouveau flux n'est pas ouvert pour chaque événement individuel dans un court laps de temps.

<LinkCard
  title="Voir la spécification protobuf"
  href="/webhook.proto"
/>

**Mécanisme de relance**
Chaque événement inclut un `uuid` unique. Si un événement échoue :

1.  La réponse doit inclure un `status` **non égal à** `"Success"`
2.  L'`uuid` original de la requête doit être inclus

Pushwoosh réessayera la livraison en fonction de cette réponse.

**Paramètres de connexion**

Les options avancées comme **TLS**, **keep-alive**, ou les **politiques de relance** sont configurées manuellement via le support et peuvent nécessiter l'intervention de développeurs.

### Sélectionner les plateformes

Dans la section **Plateformes**, sélectionnez au moins une plateforme pour activer le streaming d'événements.

![Sélectionner au moins une plateforme](/integrations-event-streaming-integration-3.webp)

Les plateformes prises en charge incluent :

*   iOS, Android, macOS, Windows, Amazon, Safari
*   Chrome, Firefox, Internet Explorer, Baidu, Huawei
*   E-mail, SMS, Line, Xiaomi, WhatsApp

### Configurer les filtres avancés

Dans la section **Filtres avancés**, affinez les critères de livraison des événements à l'aide de filtres :

*   **Événements d'activité en direct :** activez pour recevoir les événements d'activité en direct. Ces événements ne contiennent que des métadonnées, y compris `live_activity_id`.
*   **Filtres de campagne :** filtrez par code de campagne. Seuls les événements liés à ces campagnes seront livrés.
*   **Filtres de message :** filtrez par code de message. Seuls les événements liés à ces messages seront livrés.

![Définir les filtres avancés](/integrations-event-streaming-integration-4.webp)

Après avoir rempli tous les champs requis, cliquez sur le bouton **Appliquer** pour enregistrer et activer votre intégration.
<Aside>Les modifications de configuration prendront effet **dans les 15 minutes** suivant leur soumission.</Aside>

<Aside type="tip">
Pour les paramètres avancés tels que les délais d'attente personnalisés ou les configurations gRPC, veuillez [contacter le support](https://help.pushwoosh.com/hc/en-us/requests/new).
</Aside>

## Détails de la requête et exemple

| | |
|---|---|
| **Point de terminaison** | `https://exampleclientendpoint.com/webhook_endpoint` |
| **Requête HTTP** | `POST` |
| **Authentification** | Non |
| **Type de requête** | Source |
| **Signification de la requête** | Envoyer des requêtes au point de terminaison du webhook |
| **En-têtes** | `Content-Type: application/json` |

**Exemple de corps de requête**

```
{ 
  "event_name": "Email Opened",
  "message_code": "E682-E6D92B9A-53E24868",
  "campaign_id": 961048,
  "platform": "Email",
  "payload": "Welcome to Headway! 👋",
  "application_code": "XXXXX-XXXXX",
  "hwid": "user@example.com",
  "user_id": "USER_ID",
  "timestamp": 1723799271,
  "journey_title": "",
  "journey_point_title": "5_Welcome_ID_new"
}
```

**Réponse**
Pour le moment, le code de réponse et le corps sont ignorés.

## Comment savoir si l'intégration fonctionne ?

Vous commencerez à recevoir des requêtes de Pushwoosh sur votre point de terminaison configuré.