# Intégrer les données d’engagement

### Aperçu

Zoom Contact Center génère des données d'engagement précieuses lors de chaque interaction client, y compris les enregistrements d'appels, les transcriptions, les notes des agents et les décisions (dispositions). Continuez à lire pour savoir 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 de Zoom Contact Center.

Nous décomposerons les différentes méthodes d'intégration 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 dont nous parlerons sont :

1. Des agents utilisant le connecteur CTI CRM ZCC prêt à l'emploi au sein du CRM.
2. Des 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 CTI CRM prêt à l'emploi

C'est la méthode la plus simple. Si vos agents utilisent un connecteur CTI CRM 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;">Comment cela fonctionne</mark>

Le connecteur CTI intègre l'interface agent ZCC directement dans le CRM. Lorsqu'une interaction se termine, des données telles que les enregistrements, les transcriptions, les notes et les décisions sont automatiquement enregistrées dans Zoom et liées à l'enregistrement pertinent (par exemple, un ticket ou un contact) dans votre CRM.

#### <mark style="color:bleu;">Exigences d’installation</mark>

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

Effectuez les étapes suivantes :

{% stepper %}
{% step %}
**Activer dans le portail d'administration ZCC**

Connectez-vous au portail d'administration Zoom en tant qu'administrateur et accédez à Contact Center Management > Integrations > Applications.

Trouvez l'intégration CRM pertinente et activez les paramètres appropriés pour autoriser le stockage des données dans votre CRM.
{% endstep %}

{% step %}
**Autorisations CRM**

Examinez et suivez le [guides d'installation de l'intégration CRM](https://support.zoom.com/) pour vérifier que l'utilisateur d'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 CTI CRM ZCC lorsque les agents utilisent les CRM suivants :

* Salesforce
* Zendesk
* ServiceNow
* Microsoft Dynamics
* HubSpot

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

***

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

Si vos agents utilisent l'application native Zoom Workplace 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 le faire est d'utiliser les API de Zoom Contact Center.

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

* **Interrogation périodique (polling) :** Interroger périodiquement l'API Zoom pour vérifier si de nouvelles données d'engagement sont disponibles.
* **Webhooks :** Recevoir une notification en temps réel de Zoom dès qu'une transcription est prête.

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

#### <mark style="color:bleu;">Interroger les API de Zoom Contact Center</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 média d'enregistrement</p><p>(Canal voix 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 des appels soit activé pour la file d'attente.   |
| <p>Transcription d'enregistrement</p><p>(Canal voix et vidéo)</p> | [Lister les engagements](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                         | `transcript_url`         | Nécessite que l'enregistrement des appels avec transcription soit activé.       |
| <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)                                                                                                                                                                                                                                                         | `transcript_url`         | La transcription est activée par défaut pour les canaux de messagerie.          |
| <p>Dispositions</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 note.                                                       |
| <p>Fichier média de message vocal</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 vocaux laissés dans une boîte de réception du Contact Center. |
| Transcription de message vocal                                    | <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> | `transcript_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`, `transcript_url`, `playback_url`, etc.) fournies par ces API Zoom sont **pas** des liens publics. Ils sont conçus 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 cliquant sur le lien dans son navigateur ne sera pas authentifié, et le téléchargement échouera.
* La méthode correcte 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 un lien sécurisé à vos utilisateurs depuis cet emplacement.
  {% endhint %}

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

**Délais de traitement - enregistrements voix et vidéo :**

Ces données ne sont pas disponibles instantanément à la fin d'un appel. L'audio doit d'abord être traité et téléchargé, ce qui peut prendre plusieurs minutes pour les appels longs. Pour vous assurer de ne pas manquer d'enregistrements, définissez le `query_date_type` paramètre sur `recording_end_time` 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 de Zoom Contact Center, voir [documentation Contact Center APIs](https://developers.zoom.us/docs/api/contact-center/) .

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

Pour une approche plus immédiate et pilotée par les événements, vous pouvez vous abonner aux webhooks ZCC. C'est la méthode la plus efficace pour une intégration proche du temps réel.

**Comment cela fonctionne**

1. Abonnez-vous aux événements appropriés dans le Zoom App Marketplace.
2. Lorsqu'un événement se produit, Zoom envoie une notification à votre URL de 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 voix/vidéo :** contact\_center.recording\_completed (fournit un `download_url`)
* **Transcription voix/vidéo :** contact\_center.recording\_transcript\_completed (fournit un `transcript_url`)
* **Transcription de messagerie :** contact\_center.engagement\_messaging\_transcript\_completed (fournit un `transcript_url`)
* **Remarques :** contact\_center.engagement\_note\_added (fournit un `champ note` contenant les données de la note)
* **Disposition :** contact\_center.engagement\_disposition\_added (fournit un `disposition_name` contenant 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 même 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égrez de la redondance :** La livraison des événements n'est pas toujours garantie à 100 % (par exemple, votre point de terminaison ou votre connexion websocket peut être temporairement indisponible).
* **Stratégie de secours :** Nous recommandons d'exécuter un script de rapprochement nocturne utilisant des API d'interrogation pour récupérer les événements manqués.
  {% endhint %}

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

#### <mark style="color:bleu;">Intégration Flow Events</mark>

Pour certains types de données, vous pouvez pousser des données directement vers un système externe depuis l'éditeur Flow de ZCC en utilisant un script d'événement JavaScript.

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

* **Disposition :** Peut être accédé sur tous les types de canaux d'engagement entrants en utilisant la `variable global_system.Engagement.disposition` .
* **Transcription :** Accessible uniquement pour les engagements de messagerie entrants (par exemple, Web Chat) en utilisant la `global_system.Engagement.transcript` .
* **.** Flux multiples : `Lorsque vous travaillez avec plusieurs Flows dans votre configuration, en particulier lorsqu'un Flow utilise le` widget RouteTo

pour se connecter à un autre Flow, il est essentiel de s'assurer que les mêmes scripts d'événement et déclencheurs sont correctement configurés dans tous les Flows.

**Cette méthode est la plus puissante dans un Flow de messagerie, où vous pouvez combiner à la fois la transcription et la disposition dans un seul événement.**

Étapes de configuration

{% stepper %}
{% step %}
**Suivez ces étapes pour configurer votre flow :**

Ajouter un script d'événement

Dans votre Flow ZCC (par exemple, un flow Web Chat), cliquez sur le widget Start.

<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 %}
**Localisez les Event Scripts et ajoutez un Event Script pour des événements tels que Engagement Closed et/ou Disposition Saved.**

Ajouter votre JavaScript personnalisé

```javascript
L'exemple ci-dessous récupère à la fois la disposition et la transcription, puis les envoie ensemble à une API externe. 
  async function main () {
    try {
    // Récupérer l'objet disposition depuis sa variable
    
    const disposition_data = var_get()['global_system.Engagement.disposition'];
    // Récupérer l'objet transcription complet

    const transcript_data = await req.get(var_get()['global_system.Engagement.transcript']);
    // Préparer une charge utile avec toutes les données que vous souhaitez envoyer
      const payload_to_send = {
      disposition: disposition_data.data.result,
    };

    transcript: transcript_data.data.result.transcript
    // Définir la destination de vos données
    
    const external_api_url = '<replace-with-your-api-endpoint>';
  	// Envoyer les données combinées à votre système externe
    
    const response = await req.post(external_api_url, payload_to_send);
    // Consigner la réponse du système externe pour le dépannage
    
  log.debug("External API response: " + JSON.stringify(response.data));
    } catch (error) {
  }
}
```

{% endstep %}
{% endstepper %}

***

### log.debug("An error occurred in the transcript event script: " + error);

Résumé et recommandations

| Choisissez la méthode d'intégration qui correspond le mieux au flux de travail de vos agents et à vos ressources techniques. | Si vos agents utilisent...                                                  | Alors votre meilleure option est...                                                                                                                           |
| ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Le connecteur CTI ZCC dans un CRM pris en charge                                                                             | L'intégration intégrée                                                      | <ul><li>Le chemin le plus simple</li><li>Aucun code requis</li><li>La synchronisation des données d'engagement est intégrée</li></ul>                         |
| L'application Zoom Workplace ou Smart Embed                                                                                  | API Webhooks avec un travail d'interrogation nocturne pour le rapprochement | <ul><li>Solution personnalisée la plus robuste</li><li>Fournit des données quasi en temps réel avec un processus de sauvegarde fiable</li></ul>               |
| Un flux de messagerie entrant (et besoin de pousser des données)                                                             | Scripts d'événements Flow                                                   | <ul><li>Niche, mais puissante</li><li>Nécessite JavaScript</li><li>Fonctionne mieux pour l'envoi de transcriptions de messagerie et de dispositions</li></ul> |

En comprenant ces différentes voies, vous pouvez construire une intégration robuste et fiable qui vous donne une vue complète de vos interactions client.
