# Engagement-Daten integrieren

### Übersicht

Zoom Contact Center generiert während jeder Kundeninteraktion wertvolle Engagement-Daten, einschließlich Anrufaufzeichnungen, Transkripten, Notizen der Agenten und Dispositionen. Lesen Sie weiter, um zu erfahren, wie Sie Engagement-Daten in externen Systemen (beispielsweise CRM und andere Systeme zur Aufzeichnung) speichern, um eine einheitliche Kundensicht zu erstellen, effektives Agent-Coaching zu ermöglichen oder Compliance-Anforderungen zu erfüllen, wenn Sie Zoom Contact Center verwenden.

Wir erläutern die verschiedenen Integrationmethoden, um Ihnen dabei zu helfen, den besten Ansatz zu Wählen, basierend darauf, wie Ihre Agenten mit erhöhter Effizienz arbeiten können.

Die beste Methode hängt in erster Linie von einem entscheidenden Faktor ab: **die Anwendung, in der die Agenten ihre Interaktionen bearbeiten**. Die beiden Optionen, die wir besprechen werden, sind:

1. Agenten, die den sofort einsatzbereiten ZCC CRM CTI Connector innerhalb des CRM verwenden.
2. Agents, die in der Zoom Workplace App arbeiten, die eine benutzerdefinierte Lösung mit ZCC-APIs und Webhooks erfordert.

***

### Out-of-the-Box CRM CTI Connector Integration

Dies ist die direkteste Methode. Wenn Ihre Agents einen ZCC CRM CTI Connector verwenden, können die meisten Interaktionsdaten automatisch zwischen der Zoom Plattform und dem entsprechenden CRM synchronisiert werden.

#### <mark style="color:blau;">Wie es funktioniert</mark>

Der CTI Connector bindet die ZCC-Agentenoberfläche direkt in das CRM ein. Wenn eine Interaktion endet, werden Daten wie Aufzeichnungen, Transkripte, Notizen und Dispositionen automatisch in Zoom gespeichert und mit dem zugehörigen aufzeichnen (zum Beispiel einem Ticket oder Kontakt) in Ihrem CRM verknüpft.

#### <mark style="color:blau;">Einrichtungsanforderungen</mark>

Funktionalität, die die Synchronisierung von Daten zwischen Zoom und dem CRM ermöglicht, ist „out of the box“ verfügbar, erfordert jedoch eine Aktivierung in der ZCC Administrator-Portal.

Führen Sie die folgenden Schritte aus:

{% stepper %}
{% step %}
**Aktivieren in Admin-Portal ZCC**

Melden Sie sich bei Zoom im Admin-Portal als Administrator an und navigieren Sie zu Contact Center Management > Integrations > Anwendungen.

Finden Sie die relevante CRM-Integration und aktivieren Sie die entsprechenden Einstellungen, um die Datenspeicherung in Ihrem CRM zuzulassen.
{% endstep %}

{% step %}
**CRM-Berechtigungen**

Überprüfen Sie und befolgen Sie die [CRM-Integrationseinrichtungsanleitungen](https://support.zoom.com/) um zu überprüfen, dass Ihr CRM-Integration-Benutzer über die erforderlichen Schreibberechtigungen für alle relevanten Objekte verfügt.
{% endstep %}
{% endstepper %}

#### <mark style="color:blau;">Unterstützte CRM-Plattformen</mark>

Diese Funktionalität ist über den ZCC CRM CTI Connector zugänglich, wenn Agenten die folgenden CRMs verwenden:

* Salesforce
* Zendesk
* ServiceNow
* Microsoft Dynamics
* HubSpot

Mit den CRM-CTI-Connectors ist keine spezielle Konfiguration erforderlich, und die Integration speichert die Engagement-Daten standardmäßig im CRM.

***

### Benutzerdefinierte Integration über APIs

Wenn Ihre Agenten die native Zoom Workplace App oder ZCC Smart Embed verwenden, benötigen Sie eine benutzerdefinierte Lösung, um Engagement-Daten zu übertragen. Der wichtigste Weg hierfür ist die Zoom Contact Center APIs.

Es gibt zwei Hauptansätze, um über die API auf Engagement-Daten zuzugreifen:

* **Abfrage:** Fragen Sie die Zoom API regelmäßig ab, um zu sehen, ob neue Engagement-Daten verfügbar sind.
* **Webhooks:** Erhalten Sie eine Benachrichtigung in Echtzeit von Zoom, sobald ein Transkript verfügbar ist.

Es gibt auch einen dritten Ansatz, **Flow Events Integration**, was für bestimmte Datentypen funktioniert.

#### <mark style="color:blau;">Abfragen der Zoom Contact Center APIs</mark>

Um Engagement-Daten herunterzuladen, müssen Sie die entsprechenden ZCC API-Endpunkte abfragen. Es ist wichtig zu beachten, dass verschiedene Arten von Daten aus verschiedenen APIs stammen. Daher müssen Sie wahrscheinlich für jeden relevanten Endpunkt eine Polling-Logik erstellen.

| Um diese Daten zu erhalten...                                 | Diese API abstimmen...                                                                                                                                                                                                                                                                                                                                                       | Dieses Feld verwenden... | Hinweise:                                                                  |
| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | -------------------------------------------------------------------------- |
| <p>Aufzeichnungsmediendatei</p><p>(Voice and Video Kanal)</p> | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/recordings/GET/contact_center/recordings">Aufzeichnungen auflisten</a> oder</p><p>Warteschlangenaufzeichnungen auflisten</p>                                                                                                                                                                             | `download_url`           | Erfordert, dass die Anrufaufzeichnung für die Warteschlange aktiviert ist. |
| <p>Aufzeichnungs-Transkript</p><p>(Voice and Video Kanal)</p> | [Engagements auflisten](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                  | `Transkript_url`         | Erfordert Anrufaufzeichnung mit aktivierter Transkription.                 |
| <p>Transkript</p><p>(Messaging Kanal)</p>                     | [Engagements auflisten](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                  | `Transkript_url`         | Transkript ist standardmäßig für Messaging-Kanäle aktiviert.               |
| <p>Dispositionen</p><p>(Alle Kanäle)</p>                      | [Engagements auflisten](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                  | `Dispositionen`          | Ein Array von Disposition-Objekten.                                        |
| <p>Notizen</p><p>(Alle Kanäle)</p>                            | [Engagements auflisten](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                                  | `Notizen`                | Ein Array von Notizobjekten.                                               |
| <p>Mailbox-Mediendatei</p><p><br><br></p>                     | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/messages">Liste die Posteingangsnachrichten eines Kontos auf</a> <strong>oder</strong></p><p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/{inboxId}/messages">Nachrichten eines Posteingangs auflisten</a></p> | `download_url`           | Für in einem Contact Center-Posteingang hinterlassene Sprachmemos.         |
| Mailbox-Transkript                                            | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/messages">Liste die Posteingangsnachrichten eines Kontos auf</a> <strong>oder</strong></p><p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/{inboxId}/messages">Nachrichten eines Posteingangs auflisten</a></p> | `Transkript_url`         | Erfordert, dass die Transkription für den Posteingang aktiviert ist.       |

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

Die Download-URLs (`download_url`, `Transkript_url`, `playback_url`), die von diesen Zoom-APIs bereitgestellt werden, sind **nicht** öffentliche Links. Sie sind für den programmatischen Zugriff konzipiert und erfordern API-Authentifizierung (zum Beispiel ein Access Token im Authorization-Header), um die zugehörige Datei herunterzuladen.

Das bedeutet:

* Sie können diese URLs nicht direkt in einem CRM speichern, damit ein Benutzer darauf klickt. Wenn ein Benutzer in seinem Browser auf den Link klickt, ist er nicht authentifiziert, und der Download wird fehlschlagen.
* Die korrekte Methode besteht darin, dass Ihr Backend-Dienst die URL verwendet, um die Datei abzurufen. Ihr Dienst kann die Datei dann in Ihrem eigenen System speichern (z. B. in Amazon S3, Azure Blob Storage oder im Dateispeicher Ihres CRM) und Ihren Benutzern von dort aus einen sicheren Link bereitstellen.
  {% endhint %}

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

**Verarbeitungsverzögerungen - Sprach- & Videoaufzeichnungen:**

Diese Daten sind nicht in dem Moment verfügbar, in dem ein Anruf endet. Das Audio muss zuerst verarbeitet und hochgeladen werden, was bei langen Anrufen mehrere Minuten dauern kann. Um sicherzustellen, dass Sie keine Aufzeichnungen verpassen, setzen Sie den `query_date_type` Parameter auf `recording_end_time` beim Abfragen der List recordings API. Dadurch werden Daten basierend darauf abgerufen, wann die Verarbeitung abgeschlossen wurde, nicht wann der Anruf beendet wurde.
{% endhint %}

Weitere Informationen zu Zoom Contact Center APIs finden Sie unter [Contact Center APIs](https://developers.zoom.us/docs/api/contact-center/) Dokumentation.

#### <mark style="color:blau;">Verwenden Sie Webhooks für Echtzeitereignisse</mark>

Für einen unmittelbareren, Event-gesteuerten Ansatz können Sie ZCC-Webhooks abonnieren. Dies ist die effizienteste Methode für eine Integration nahezu in Echtzeit.

**Wie es funktioniert**

1. Abonnieren Sie die entsprechenden Ereignisse im Zoom App Marketplace.
2. Wenn ein Event auftritt, sendet Zoom eine Benachrichtigung an Ihre Webhook-URL (oder an Ihre WebSocket-Verbindung).
3. Die Event-Nutzdaten enthalten die Daten, die Sie benötigen, entweder direkt oder als URL/ID für einen nachfolgenden API-Anruf.

**Allgemeine Webhook-Ereignisse für Engagement-Daten**

* **Sprach-/Videoaufzeichnung:** Kontakt\_center.recording\_completed (liefert ein `download_url`)
* **Sprach-/Video-Transkript:** Kontakt\_center.recording\_Transkript\_completed (liefert ein `Transkript_url`)
* **Messaging-Transkript:** Kontakt\_center.engagement\_Messaging\_Transkript\_completed (liefert ein `Transkript_url`)
* **Hinweise:** Kontakt\_center.engagement\_note\_added (liefert ein `Notiz` Feld mit den Notizdaten)
* **Disposition:** Kontakt\_center.engagement\_Disposition\_added (liefert ein `Disposition_name` Feld mit den Dispositionsdaten)

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

* **Mehrere Events beachten:** Der `note_added` und `Disposition_added` Events können für ein einzelnes Engagement mehrfach ausgelöst werden (zum Beispiel, wenn ein Agent mehrere Notizen speichert oder ein Anruf weitergeleitet wird). Ihre Anwendungslogik muss damit umgehen können.
* **Redundanz einbauen:** Die Zustellung von Events ist nicht immer zu 100 % garantiert (zum Beispiel kann Ihr Endpunkt oder Ihre Websocket-Verbindung vorübergehend ausgefallen sein).
* **Sicherungsstrategie:** Wir empfehlen, ein nächtliches Abstimmungsskript mit Polling-APIs auszuführen, um verpasste Ereignisse zu erfassen.
  {% endhint %}

Weitere Informationen zu Zoom Contact Center Webhook/Websocket-Ereignissen finden Sie unter [Contact Center Webhooks](https://developers.zoom.us/docs/api/contact-center/events/) Dokumentation.

#### <mark style="color:blau;">Flow Events Integration</mark>

Für bestimmte Datentypen können Sie Daten direkt vom ZCC Flow-Editor aus mit einem JavaScript Event-Skript an ein externes System senden.

**Unterstützte Daten & Einschränkungen:**

* **Disposition:** Kann auf alle Eingehend-Engagement-Kanaltypen mithilfe des `global_system.Engagement.Disposition` variabel.
* **Transkript:** Nur zugänglich für eingehende Messaging-Engagements (zum Beispiel Web Chat) mithilfe von `global_system.Engagement.Transkript` variabel.
* **Mehrere Flows:** Bei der Arbeit mit mehreren Flows in Ihrer Konfiguration, insbesondere wenn ein Flow das `RouteTo` Widget verwendet, um eine Verbindung zu einem anderen Flow herzustellen, ist es wichtig sicherzustellen, dass identische Event Scripts und Trigger in allen Flows korrekt konfiguriert sind.

Diese Methode ist in einem Messaging-Flow am wirkungsvollsten, da Sie sowohl das Transkript als auch die Disposition in einem einzelnen Event kombinieren können.

**Konfigurationsschritte**

Befolgen Sie diese Schritte, um Ihren Flow zu Konfigurieren:

{% stepper %}
{% step %}
**Hinzufügen eines Event Scripts**

Klicken Sie in Ihrem ZCC Flow (zum Beispiel in einem Web-Chat-Flow) auf das Start-Widget.

Suchen Sie Event Scripts und fügen Sie ein Event Script für Events hinzu, wie z. B. Engagement Closed und/oder Disposition Saved.

<div align="left"><figure><img src="/files/6e91630e506813d9c8fc35370f29b8730cab9397" alt="Flow screen showing a welcome message and events."><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**Hinzufügen Sie Ihr benutzerdefiniertes JavaScript**

Das folgende Beispiel ruft sowohl die Disposition als auch das Transkript ab und sendet sie dann zusammen an eine externe API.

```javascript
async function main () { 
  try {
    // Holen Sie das Disposition-Objekt aus seiner Variablen
    const Disposition_data = var_get()['global_system.Engagement.Disposition'];
    
    // Das vollständige Transkript-Objekt abrufen
    const Transkript_data = await req.get(var_get()['global_system.Engagement.Transkript']);

    // Bereiten Sie eine Nutzlast mit allen Daten vor, die Sie senden möchten
    const payload_to_send = {
      Disposition: Disposition_data.data.result,
      Transkript: Transkript_data.data.result.Transkript
    };

    // Definieren Sie das Ziel für Ihre Daten
    const external_api_url = '<ersetzen-mit-Ihrem-API-Endpunkt>';
    
    // Senden Sie die kombinierten Daten an Ihr externes System
  	const response = await req.post(external_api_url, payload_to_send);
    
    // Die Antwort des externen Systems zur Fehlerbehebung protokollieren
    log.debug("Externe API-Antwort: " + JSON.stringify(response.data));
    
  } catch (error) {
    log.debug("Ein Fehler ist im Transkript-Event-Skript aufgetreten: " + error);
  }
}
```

{% endstep %}
{% endstepper %}

***

### Zusammenfassung und Empfehlungen

Wählen Sie die Integrationsmethode, die am besten zu Ihrem Agent-Workflow und Ihren technischen Ressourcen passt.

| Wenn Ihre Agenten ... verwenden,                                   | Dann ist Ihre beste Option ...                                | Wichtige Überlegungen:                                                                                                                                                 |
| ------------------------------------------------------------------ | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Der ZCC CTI Connector in einem unterstützten CRM                   | Die integrierte Integration                                   | <ul><li>Einfachster Weg</li><li>Kein Code erforderlich</li><li>Die Synchronisieren von Engagement-Daten ist integriert</li></ul>                                       |
| Die Zoom Workplace App oder Smart Embed                            | API Webhooks mit einem nächtlichen Polling-Job zur Abstimmung | <ul><li>Die robusteste kundenspezifische Lösung</li><li>Bietet nahezu Echtzeitdaten mit einem zuverlässigen Backup-Prozess</li></ul>                                   |
| Ein Eingehend Messaging-Flow (und der Bedarf, Daten zu übertragen) | Flow-Event-Skripte                                            | <ul><li>Nischenhaft, aber leistungsstark</li><li>Erfordert JavaScript</li><li>Funktioniert am besten zum Senden von Messaging-Transkripten und Dispositionen</li></ul> |

Indem Sie diese verschiedenen Wege verstehen, können Sie eine robuste und zuverlässige Integration aufbauen, die Ihnen einen vollständigen Überblick über Ihre Kundeninteraktionen bietet.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://library.zoom.com/technical-library/de/business-services/zoom-contact-center/expert-insights/integrate-engagement-data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
