# Intégrer les données d’engagement

### Aperçu

Le centre de contact Zoom génère des données d’engagement précieuses lors de chaque interaction client, y compris les enregistrements d’appel, les transcriptions, les notes de l’agent et les motifs. Continuez votre lecture pour découvrir comment stocker les données d’engagement dans des systèmes externes (par exemple, CRM et autres systèmes d’enregistrement) afin de créer une vue client unifiée, permettre un coaching efficace des agents ou répondre aux exigences de conformité lors de l’utilisation du centre de contact Zoom.

Nous allons détailler les différentes méthodes d’Intégrations pour vous aider à choisir la meilleure approche en fonction de la manière dont vos agents peuvent travailler avec une efficacité accrue.

La meilleure méthode dépend principalement d’un facteur clé : **l’application dans laquelle les agents gèrent leurs interactions**. Les deux options que nous allons aborder sont :

1. Agents utilisant le Connecteur CRM CTI ZCC prêt à l’emploi dans le CRM.
2. Agents travaillant dans l’application Zoom Workplace, ce qui nécessite une solution personnalisée avec les API ZCC et les webhooks.

***

### Intégration du Connecteur CRM CTI prêt à l’emploi

C’est la méthode la plus simple. Si vos agents utilisent un Connecteur CRM CTI ZCC, la plupart des données d’engagement peuvent être synchronisées automatiquement entre la plateforme Zoom et le CRM approprié.

#### <mark style="color:bleu;">Fonctionnement</mark>

Le Connecteur CTI intègre directement l’interface agent ZCC dans le CRM. Lorsqu’un engagement se termine, des données telles que les enregistrements, les transcriptions, les notes et les motifs sont automatiquement enregistrées dans Zoom et associées à l’enregistrement pertinent (par exemple, un ticket ou un contact) dans votre CRM.

#### <mark style="color:bleu;">Exigences de configuration</mark>

La fonctionnalité qui permet la synchronisation des données entre Zoom et le CRM est fournie "prête à l’emploi", mais nécessite une activation dans le portail administrateur ZCC.

Effectuez les étapes suivantes :

{% stepper %}
{% step %}
**Activer dans le portail administrateur ZCC**

Connectez-vous au portail administrateur Zoom en tant qu’administrateur et accédez à Gestion du centre de contact > Intégrations > Applications.

Recherchez l’Intégration CRM concernée et activez les Paramètres appropriés pour autoriser le stockage des données dans votre CRM.
{% endstep %}

{% step %}
**Autorisations CRM**

Consultez et suivez les [guides de configuration de l’Intégration CRM](https://support.zoom.com/) pour vérifier que l’utilisateur de votre Intégration CRM dispose des autorisations d’écriture nécessaires pour tous les objets concernés.
{% endstep %}
{% endstepper %}

#### <mark style="color:bleu;">Plateformes CRM prises en charge</mark>

Cette fonctionnalité est accessible via le Connecteur CRM CTI ZCC lorsque les agents utilisent les CRM suivants :

* Salesforce
* Zendesk
* ServiceNow
* Microsoft Dynamics
* HubSpot

Avec les connecteurs CRM CTI, aucune configuration spéciale n’est requise, et l’Intégration enregistrera les données d’engagement dans le CRM par défaut.

***

### Intégration personnalisée via les API

Si vos agents utilisent l’application Zoom Workplace native ou ZCC Smart Embed, vous aurez besoin d’une solution personnalisée pour transférer les données d’engagement. La principale façon de procéder consiste à utiliser les API du centre de contact Zoom.

Il existe deux approches principales pour accéder aux données d’engagement via l’API :

* **Sondage :** Interrogez périodiquement l’API Zoom pour voir si de nouvelles données d’engagement sont disponibles.
* **Webhooks :** Recevez une Notification en temps réel de Zoom dès qu’une transcription est prête.

Il existe également une troisième approche, **Intégrations Flow Events**, qui fonctionne pour certains types de données.

#### <mark style="color:bleu;">Interrogation des API du centre de contact Zoom</mark>

Pour télécharger les données d’engagement, vous devez interroger les points de terminaison API ZCC appropriés. Il est important de noter que différents types de données proviennent de différentes API, vous devrez donc probablement créer une logique d’interrogation pour chaque point de terminaison pertinent.

| Pour obtenir ces données...                                             | Interrogez cette API...                                                                                                                                                                                                                                                                                                                                                              | En utilisant ce champ... | Remarques :                                                                 |
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------ | --------------------------------------------------------------------------- |
| <p>Fichier multimédia d’enregistrement</p><p>(Canal vocal et vidéo)</p> | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/recordings/GET/contact_center/recordings">Lister les enregistrements</a> ou</p><p>Lister les enregistrements de file d’attente</p>                                                                                                                                                                               | `download_url`           | Nécessite que l'enregistrement d'appel soit activé pour la file d'attente.  |
| <p>Transcription de l'enregistrement</p><p>(Canal vocal et vidéo)</p>   | [Lister les engagements](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                         | `transcription_url`      | Nécessite l'enregistrement d'appel avec transcription activée.              |
| <p>Transcription</p><p>(canal de messagerie)</p>                        | [Lister les engagements](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                         | `transcription_url`      | La transcription est activée par défaut pour les canaux de messagerie.      |
| <p>Traitements</p><p>(Tous les canaux)</p>                              | [Lister les engagements](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                         | `dispositions`           | Un tableau d’objets de disposition.                                         |
| <p>Notes</p><p>(Tous les canaux)</p>                                    | [Lister les engagements](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                         | `notes`                  | Un tableau d’objets de note.                                                |
| <p>Fichier média de messagerie vocale</p><p><br><br></p>                | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/messages">Lister les messages de la boîte de réception d’un compte</a> <strong>ou</strong></p><p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/{inboxId}/messages">Lister les messages d’une boîte de réception</a></p> | `download_url`           | Pour les messages laissés dans une boîte de réception du centre de contact. |
| Transcription de messagerie vocale                                      | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/messages">Lister les messages de la boîte de réception d’un compte</a> <strong>ou</strong></p><p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/{inboxId}/messages">Lister les messages d’une boîte de réception</a></p> | `transcription_url`      | Nécessite que la transcription soit activée pour la boîte de réception.     |

{% hint style="danger" %}
**Avertissement**

Les URL de téléchargement (`download_url`, `transcription_url`, `playback_url`, et ainsi de suite) fournies par ces API Zoom sont **pas** des liens publics. Elles sont conçues pour un accès programmatique et nécessitent une authentification API (par exemple, un jeton d’accès dans l’en-tête Authorization) pour télécharger le fichier associé.

Cela signifie :

* Vous ne pouvez pas enregistrer ces URL directement dans un CRM pour qu’un utilisateur clique dessus. Un utilisateur qui clique sur le lien dans son navigateur ne sera pas authentifié, et le téléchargement échouera.
* La bonne méthode consiste à ce que votre service backend utilise l’URL pour récupérer le fichier. Votre service peut ensuite stocker le fichier dans votre propre système (comme Amazon S3, Azure Blob Storage, ou le stockage de fichiers de votre CRM) et fournir ensuite un lien sécurisé à vos utilisateurs.
  {% endhint %}

{% hint style="warning" %}
**Attention**

**Retards de traitement - Enregistrements audio et vidéo :**

Ces données ne sont pas disponibles dès la fin d’un appel. L’audio doit d’abord être traité et téléversé, ce qui peut prendre plusieurs minutes pour les appels longs. Pour vous assurer de ne manquer aucun enregistrement, définissez le `query_date_type` paramètre pour `heure de fin de l’enregistrement` lors de l’interrogation de l’API List recordings. Cela récupère les données en fonction du moment où le traitement s’est terminé, et non du moment où l’appel s’est terminé.
{% endhint %}

Pour plus d’informations sur les API du centre de contact Zoom, voir [API du centre de contact](https://developers.zoom.us/docs/api/contact-center/) documentation.

#### <mark style="color:bleu;">Utiliser les webhooks pour les événements en temps réel</mark>

Pour une approche plus immédiate, pilotée par événement, vous pouvez vous abonner aux webhooks ZCC. C’est la méthode la plus efficace pour des Intégrations quasi en temps réel.

**Fonctionnement**

1. Abonnez-vous aux événements appropriés dans le Zoom App Marketplace.
2. Lorsqu’un événement se produit, Zoom envoie une Notification à l’URL de votre webhook (ou à votre connexion WebSocket).
3. La charge utile de l’événement contient les données dont vous avez besoin, soit directement, soit sous forme d’URL/ID pour un appel API de suivi.

**Événements Webhook courants pour les données d’engagement**

* **Enregistrement vocal/vidéo :** contact\_center.recording\_completed (fournit une `download_url`)
* **Transcription vocale/vidéo :** contact\_center.recording\_transcription\_completed (fournit une `transcription_url`)
* **Transcription de messagerie :** contact\_center.engagement\_messagerie\_transcription\_completed (fournit une `transcription_url`)
* **Remarques :** contact\_center.engagement\_note\_added (fournit une `note` champ avec les données de la note)
* **disposition :** contact\_center.engagement\_disposition\_added (fournit un `disposition_name` champ avec les données de la disposition)

{% hint style="warning" %}
**Attention**

* **Soyez conscient des événements multiples :** Le `note_added` et `disposition_added` les événements peuvent se déclencher plusieurs fois pour un seul engagement (par exemple, si un agent enregistre plusieurs notes ou si un appel est transféré). La logique de votre application doit être capable de gérer cela.
* **Intégrer la redondance :** La livraison des événements n’est pas toujours garantie à 100 % (par exemple, votre point de terminaison ou votre connexion websocket peuvent être temporairement hors service).
* **Stratégie de secours :** Nous recommandons d’exécuter chaque nuit un script de réconciliation à l’aide d’API de sondage pour détecter les événements manqués.
  {% endhint %}

Pour plus d’informations sur les événements Webhook/Websocket de Zoom centre de contact, voir [Webhooks du centre de contact](https://developers.zoom.us/docs/api/contact-center/events/) documentation.

#### <mark style="color:bleu;">Intégrations des événements Flow</mark>

Pour certains types de données, vous pouvez envoyer directement les données vers un système externe depuis l’éditeur de Flow ZCC à l’aide d’un script d’événement JavaScript.

**Données prises en charge et limitations :**

* **disposition :** Peut être consulté sur tous les types de canal d’engagement entrant à l’aide de la `global_system.Engagement.disposition` variable.
* **Transcription :** Accessible uniquement pour les engagements de messagerie entrant (par exemple, le chat Web) utilisant le `global_system.Engagement.transcription` variable.
* **Flux multiples :** Lorsque vous travaillez avec plusieurs flux dans votre configuration, en particulier lorsqu’un flux utilise le `RouteTo` widget pour se connecter à un autre flux, il est essentiel de s’assurer que des scripts d’événement et des déclencheurs identiques sont correctement configurés dans tous les flux.

Cette méthode est particulièrement puissante dans un flux de messagerie, où vous pouvez combiner à la fois la transcription et la disposition dans un seul événement.

**Étapes de configuration**

Suivez ces étapes pour configurez votre flux :

{% stepper %}
{% step %}
**Ajout d’un script d’événement**

Dans votre flux ZCC (par exemple, un flux de chat Web), cliquez sur le widget Start.

Repérez Scripts d’événement et ajout un script d’événement pour des événements, tels que Engagement Closed et/ou Disposition Saved.

<div align="left"><figure><img src="https://4108585137-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FctBXUMeBy4rtLMmMkKRG%2Fuploads%2Fgit-blob-608a0caccf5697f0cda911a59ba832b2f5cf3fd6%2Fimage.png?alt=media" alt="Flow screen showing a welcome message and events."><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**Ajout de votre JavaScript personnalisé**

L’exemple ci-dessous récupère à la fois la disposition et la transcription, puis les envoie ensemble à une API externe.

```javascript
async function main () { 
  try {
    // Obtenez l’objet disposition à partir de sa variable
    const disposition_data = var_get()['global_system.Engagement.disposition'];
    
    // Obtenir l'objet de transcription complet
    const transcription_data = await req.get(var_get()['global_system.Engagement.transcription']);

    // Préparez une charge utile avec toutes les données que vous souhaitez envoyer
    const payload_to_send = {
      disposition: disposition_data.data.result,
      transcription : transcription_data.data.result.transcription
    };

    // Définissez la destination de vos données
    const external_api_url = '<remplacez-par-votre-point de terminaison d'API>';
    
    // Envoyer les données combinées à votre système externe
  	const response = await req.post(external_api_url, payload_to_send);
    
    // Consignez la réponse du système externe pour le dépannage
    log.debug("Réponse de l'API externe : " + JSON.stringify(response.data));
    
  } catch (error) {
    log.debug("Une erreur s'est produite dans le script de l'événement de transcription : " + error);
  }
}
```

{% endstep %}
{% endstepper %}

***

### Résumé et recommandations

choisissez la méthode d'Intégrations qui correspond le mieux à votre flux de travail d'agent et à vos ressources techniques.

| Si vos agents utilisent...                                      | Alors votre meilleure option est...                                         | Considérations clés :                                                                                                                                   |
| --------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Le Connecteur ZCC CTI dans un CRM pris en charge                | Les Intégrations intégrées                                                  | <ul><li>Le chemin le plus simple</li><li>Aucun code requis</li><li>La Synchroniser des données d'engagement est intégrée</li></ul>                      |
| L'application Zoom Workplace ou Smart Embed                     | Les webhooks API avec un travail de sondage nocturne pour la réconciliation | <ul><li>La solution personnalisée la plus robuste</li><li>Fournit des données quasi en temps réel avec un processus de secours fiable</li></ul>         |
| Un flux de messagerie entrant (et besoin d'envoyer des données) | Scripts d'événement de flux                                                 | <ul><li>Niche, mais puissant</li><li>Nécessite JavaScript</li><li>Convient mieux à l'envoi de transcriptions de messagerie et de dispositions</li></ul> |

En comprenant ces différentes options, vous pouvez créer une Intégrations robuste et fiable qui vous donne une vue complète de vos interactions clients.
