# Engagement-Daten integrieren

### Überblick

Zoom Contact Center erzeugt bei jeder Kundeninteraktion wertvolle Engagement-Daten, einschließlich Anrufaufzeichnungen, Transkripten, Agentennotizen und Dispositionen. Lesen Sie weiter, um zu erfahren, wie Sie Engagement-Daten in externen Systemen (z. B. CRM und anderen Aufzeichnungssystemen) speichern können, um eine einheitliche Kundenansicht zu erstellen, effektives Agenten-Coaching zu ermöglichen oder Compliance-Anforderungen bei der Verwendung von Zoom Contact Center zu erfüllen.

Wir erläutern die verschiedenen Integrationsmethoden, damit Sie den besten Ansatz auswählen können, basierend darauf, wie Ihre Agenten mit erhöhter Effizienz arbeiten können.

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

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

***

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

Dies ist die unkomplizierteste Methode. Wenn Ihre Agenten einen ZCC CRM CTI Connector verwenden, können die meisten Engagement-Daten automatisch zwischen der Zoom-Plattform und dem entsprechenden CRM synchronisiert werden.

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

Der CTI Connector bettet 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 relevanten Datensatz (z. B. einem Ticket oder Kontakt) in Ihrem CRM verknüpft.

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

Die Funktionalität, die die Synchronisierung von Daten zwischen Zoom und dem CRM ermöglicht, ist „out of the box“ verfügbar, muss jedoch im ZCC-Admin-Portal aktiviert werden.

Führen Sie die folgenden Schritte aus:

{% stepper %}
{% step %}
**Im ZCC-Admin-Portal aktivieren**

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

Suchen Sie die entsprechende CRM-Integration und aktivieren Sie die passenden Einstellungen, um die Datenspeicherung in Ihrem CRM zu ermöglichen.
{% endstep %}

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

Überprüfen Sie und befolgen Sie die [CRM-Integrations-Einrichtungsanleitungen](https://support.zoom.com/) , um zu verifizieren, dass der Benutzer für Ihre CRM-Integration die erforderlichen Schreibberechtigungen für alle relevanten Objekte hat.
{% 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

Bei 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 kundenspezifische Lösung, um Engagement-Daten zu übertragen. Der primäre Weg hierfür sind die Zoom Contact Center APIs.

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

* **Polling:** Periodisch die Zoom-API abfragen, um zu prüfen, ob neue Engagement-Daten verfügbar sind.
* **Webhooks:** Erhalten Sie eine Echtzeitbenachrichtigung von Zoom, sobald ein Transkript fertiggestellt ist.

Es gibt außerdem einen dritten Ansatz, **Flow Events-Integration**, der für bestimmte Datentypen funktioniert.

#### <mark style="color:blau;">Polling 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 Datentypen aus unterschiedlichen APIs stammen, sodass Sie wahrscheinlich Polling-Logik für jeden relevanten Endpunkt erstellen müssen.

| Um diese Daten zu erhalten...                                    | Abfragen Sie diese API...                                                                                                                                                                                                                                                                                                                                                | Verwenden Sie dieses Feld... | Hinweise:                                                                    |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ---------------------------------------------------------------------------- |
| <p>Aufzeichnungs-Mediendatei</p><p>(Sprach- und 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>Warteschlangen-Aufzeichnungen auflisten</p>                                                                                                                                                                        | `download_url`               | Erfordert, dass die Anrufaufzeichnung für die Warteschlange aktiviert ist.   |
| <p>Aufzeichnungs-Transkript</p><p>(Sprach- und Video-Kanal)</p>  | [Engagements auflisten](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                              | `transcript_url`             | Erfordert, dass die Anrufaufzeichnung mit Transkription aktiviert ist.       |
| <p>Transkript</p><p>(Messaging-Kanal)</p>                        | [Engagements auflisten](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                              | `transcript_url`             | Transkripte sind 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)                                                                                                                                                                                                                                              | `dispositions`               | Ein Array von Dispositionsobjekten.                                          |
| <p>Notizen</p><p>(Alle Kanäle)</p>                               | [Engagements auflisten](https://developers.zoom.us/docs/api/contact-center/#tag/engagements/GET/contact_center/engagements)                                                                                                                                                                                                                                              | `notes`                      | Ein Array von Notizobjekten.                                                 |
| <p>Voicemail-Mediendatei</p><p><br><br></p>                      | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/messages">Posteingangsnachrichten eines Kontos auflisten</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 Voicemails, die in einem Contact Center-Posteingang hinterlassen wurden. |
| Voicemail-Transkript                                             | <p><a href="https://developers.zoom.us/docs/api/contact-center/#tag/inboxes/GET/contact_center/inboxes/messages">Posteingangsnachrichten eines Kontos auflisten</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> | `transcript_url`             | Erfordert, dass die Transkription für den Posteingang aktiviert ist.         |

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

Die Download-URLs (`download_url`, `transcript_url`, `playback_url` usw.), die von diesen Zoom-APIs bereitgestellt werden, sind **nicht** öffentliche Links. Sie sind für programmgesteuerten Zugriff konzipiert und erfordern API-Authentifizierung (z. B. Zugriffstoken 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. Ein Benutzer, der den Link in seinem Browser anklickt, wird nicht authentifiziert, und der Download schlägt fehl.
* Die richtige Methode besteht darin, dass Ihr Backend-Dienst die URL verwendet, um die Datei abzurufen. Ihr Dienst kann die Datei dann in Ihrem eigenen System (z. B. Amazon S3, Azure Blob Storage oder im Dateispeicher Ihres CRM) speichern und Ihren Benutzern von dort aus einen sicheren Link bereitstellen.
  {% endhint %}

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

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

Diese Daten sind nicht sofort verfügbar, sobald ein Anruf beendet ist. Die Audiodatei 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` , wenn Sie die List recordings-API abfragen. Dadurch werden Daten basierend auf dem Zeitpunkt abgefragt, an dem die Verarbeitung abgeschlossen wurde, nicht basierend auf dem Zeitpunkt, an dem der Anruf beendet wurde.
{% endhint %}

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

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

Für einen unmittelbareren, ereignisgesteuerten Ansatz können Sie ZCC-Webhooks abonnieren. Dies ist die effizienteste Methode für nahezu Echtzeit-Integrationen.

**Funktionsweise**

1. Abonnieren Sie die entsprechenden Ereignisse im Zoom App Marketplace.
2. Wenn ein Ereignis eintritt, sendet Zoom eine Benachrichtigung an Ihre Webhook-URL (oder an Ihre Websocket-Verbindung).
3. Die Ereignis-Payload enthält die benötigten Daten, entweder direkt oder als URL/ID für einen Folge-API-Aufruf.

**Gängige Webhook-Ereignisse für Engagement-Daten**

* **Sprach-/Videoaufzeichnung:** contact\_center.recording\_completed (liefert eine `download_url`)
* **Sprach-/Video-Transkript:** contact\_center.recording\_transcript\_completed (liefert ein `transcript_url`)
* **Messaging-Transkript:** contact\_center.engagement\_messaging\_transcript\_completed (liefert ein `transcript_url`)
* **Hinweise:** contact\_center.engagement\_note\_added (liefert ein `note` Feld mit den Notizdaten)
* **Disposition:** contact\_center.engagement\_disposition\_added (liefert ein `disposition_name` Feld mit den Dispositionsdaten)

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

* **Achten Sie auf mehrere Ereignisse:** Der `note_added` als `disposition_added` Ereignisse können für eine einzelne Interaktion mehrfach ausgelöst werden (z. B. wenn ein Agent mehrere Notizen speichert oder ein Anruf weitergeleitet wird). Ihre Anwendungslogik muss damit umgehen können.
* **Bauen Sie Redundanz ein:** Die Zustellung von Ereignissen ist nicht immer zu 100 % garantiert (z. B. könnte Ihr Endpunkt oder Ihre Websocket-Verbindung vorübergehend ausgefallen sein).
* **Backup-Strategie:** Wir empfehlen, ein nächtliches Reconciliation-Skript zu betreiben, das Polling-APIs verwendet, um verpasste Ereignisse zu erfassen.
  {% endhint %}

Weitere Informationen zu Zoom Contact Center Webhook-/Websocket-Ereignissen finden Sie in den [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 aus dem ZCC Flow-Editor mithilfe eines JavaScript-Event-Skripts an ein externes System senden.

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

* **Disposition:** Kann für alle eingehenden Engagement-Kanaltypen über die `global_system.Engagement.disposition` Variable abgerufen werden.
* **Transkript:** Nur zugänglich für eingehende Messaging-Engagements (z. B. Web-Chat) über die `global_system.Engagement.transcript` Variable abgerufen werden.
* **Mehrere Flows:** Wenn Sie mit mehreren Flows in Ihrer Konfiguration arbeiten, insbesondere wenn ein Flow das `RouteTo` Widget verwendet, um eine Verbindung zu einem anderen Flow herzustellen, ist es wichtig sicherzustellen, dass identische Event-Skripte und Trigger in allen Flows korrekt konfiguriert sind.

Diese Methode ist in einem Messaging-Flow am leistungsstärksten, wo Sie sowohl das Transkript als auch die Disposition in einem einzigen Ereignis kombinieren können.

**Konfigurationsschritte**

Befolgen Sie diese Schritte, um Ihren Flow zu konfigurieren:

{% stepper %}
{% step %}
**Fügen Sie ein Event-Skript hinzu**

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

Suchen Sie Event Scripts und fügen Sie ein Event-Skript für Ereignisse wie Engagement Closed und/oder Disposition Saved hinzu.

<div align="left"><figure><img src="https://590569539-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 %}
**Fügen Sie Ihr benutzerdefiniertes JavaScript hinzu**

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 Dispositionsobjekt aus seiner Variable
    const disposition_data = var_get()['global_system.Engagement.disposition'];
    
    // Holen Sie das vollständige Transkriptobjekt
    const transcript_data = await req.get(var_get()['global_system.Engagement.transcript']);

    // Bereiten Sie eine Nutzlast mit allen Daten vor, die Sie senden möchten
    const payload_to_send = {
      disposition: disposition_data.data.result,
      transcript: transcript_data.data.result.transcript
    };

    // Definieren Sie das Ziel für Ihre Daten
    const external_api_url = '<replace-with-your-api-endpoint>';
    
    // Senden Sie die kombinierten Daten an Ihr externes System
  	const response = await req.post(external_api_url, payload_to_send);
    
    // Protokollieren Sie die Antwort des externen Systems für die Fehlersuche
    log.debug("External API response: " + JSON.stringify(response.data));
    
  } catch (error) {
    log.debug("Beim Transkript-Ereignisskript ist ein Fehler aufgetreten: " + error);
  }
}
```

{% endstep %}
{% endstepper %}

***

### Zusammenfassung und Empfehlungen

Wählen Sie die Integrationsmethode, die am besten mit dem Arbeitsablauf Ihrer Agenten und Ihren technischen Ressourcen übereinstimmt.

| Wenn Ihre Agenten ...                                            | 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>Engagement-Datensynchronisierung ist integriert</li></ul>                                                 |
| Die Zoom Workplace-App oder Smart Embed                          | API-Webhooks mit einem nächtlichen Polling-Job zur Abstimmung | <ul><li>Robusteste kundenspezifische Lösung</li><li>Bietet nahezu Echtzeitdaten mit einem zuverlässigen Backup-Prozess</li></ul>                                         |
| Ein eingehender Messaging-Flow (und Bedarf, Daten zu übertragen) | Flow Event-Skripte                                            | <ul><li>Nischenlösung, aber leistungsstark</li><li>Erfordert JavaScript</li><li>Funktioniert am besten zum Senden von Messaging-Transkripten und Dispositionen</li></ul> |

Wenn Sie diese verschiedenen Wege verstehen, können Sie eine robuste und zuverlässige Integration aufbauen, die Ihnen eine vollständige Sicht auf Ihre Kundeninteraktionen bietet.
