https://d226lax1qjow5r.cloudfront.net/blog/blogposts/best-practices-for-contact-center-with-vonage-voice-api-and-client-sdk/best_practices_contact_center.png

Best Practices für Contact Center mit Voice API und Client SDK von Vonage

Zuletzt aktualisiert am May 9, 2023

Lesedauer: 5 Minuten

Einführung

Wir möchten einige wichtige Punkte beim Aufbau eines Contact Centers mit Vonage-APIs hervorheben, die die Leistung und Benutzerfreundlichkeit verbessern können.

Reaktionszeit von Webhooks für NCCO

NCCO (A Call Control Object) wird verwendet, um den Ablauf einer Voice API Anrufs. Wenn Sie NCCO verwenden, um eingehende Anrufe an Ihr Contact Center weiterzuleiten, sollten Sie die Antwortzeit der Vonage Application's Antwort-URL Endpunkts Ihrer Vonage-Anwendung, da dieser für die Bereitstellung einer optimalen Kundenerfahrung entscheidend ist. Wenn Ihr Webhook-Endpunkt lange braucht, um einen NCCO zurückzugeben, z. B. 4 Sekunden, wird Ihr anrufender Kunde während dieser 4 Sekunden nichts außer Stille hören können.

Wenn Ihr Anwendungsserver Zeit benötigt, um einige zeitaufwändige Abfragen am Antwort-URL-Endpunkt durchzuführen, können Sie in Erwägung ziehen, zunächst eine 'Gespräch oder Stream' Aktion zurückzugeben, um den Anrufer wissen zu lassen, dass der Anruf verbunden ist, und dann die Ändern eines laufenden Anrufs API verwenden, um den Anruf zu aktualisieren, nachdem Sie die notwendigen Abfragen durchgeführt haben, z. B. die Suche nach einem verfügbaren Agenten oder die Aufnahme eines Anrufs in eine Warteschlange.

Das Gleiche sollte für alle Ereignis-URLs von NCCO-Aktionen gelten, von denen erwartet wird, dass sie einen NCCO zurückgeben, wie z.B. Eingabe, verbinden (wenn der eventType auf synchron gesetzt ist), und benachrichtigen. Diese Aktionen sind synchron, d.h. die nächsten Aktionen müssen warten, bis sie abgeschlossen sind. Daher sollten Sie auf die Ereignis-URLs so schnell wie möglich mit einem NCCO (oder einer leeren Antwort) reagieren, um den Kunden nicht im Dunkeln warten zu lassen.

Beim Einrichten Ihrer Anwendung werden Sie feststellen, dass die Fallback-URLdie Fallback-URL, unter der die Vonage APIs versuchen, NCCO abzurufen, wenn Ihre Antwort- oder Ereignis-URL nicht erreichbar ist oder bestimmte HTTP-Fehlercodes zurückgibt. Es ist sinnvoll, eine Standardbehandlung einzurichten (z. B. Protokollierung und Rückgabe eines Standard-NCCO), da Anrufe abgebrochen werden, wenn kein NCCO zurückgegeben wird.

Die Standard-Timeout-Einstellung für die Antwort- und Ereignis-URL ist 5 Sekunden; Sie können sie bei Bedarf im Vonage Developer Dashboard ändern.

Wenn Sie mehr über Voice API und NCCO erfahren möchten, lesen Sie bitte Voice API und NCCO.

Warteschlange, Übertragung und Aufzeichnung

Warteschlange, Weiterleitung und Aufzeichnung sind wesentliche Funktionen eines Contact Centers, die dazu beitragen, Kundenanrufe effizient zu verwalten. Die Warteschlange ermöglicht es den Kunden, in der Warteschlange zu warten, bis ein Mitarbeiter verfügbar ist, während Weiterleiten ermöglicht es Agenten, Anrufe an andere Agenten weiterzuleiten. Aufzeichnenhingegen ermöglicht die Aufzeichnung von Anrufen.

Mit der NCCO-Aktion Gespräch, Voice APIund Conversation APIkönnen Sie problemlos Warteschlangen und Weiterleitungen implementieren, um Anrufe in der Warteschleife zu verwalten und weiterzuleiten. Wir bieten benutzerfreundliche Möglichkeiten zur Implementierung der Anrufaufzeichnung und haben auch Conversation API für den Fall, dass Sie komplexe Funktionen benötigen wie Geteilte Aufzeichnung.

Wenn Sie sie mit der Vonage-API implementieren, ist es wichtig, dass Sie die uuid und Unterhaltung_uuid in Ereignis-Webhooks und verknüpfen Sie sie in Ihrem App-Server korrekt mit Übertragungs- und Aufzeichnungsereignissen, insbesondere wenn Anrufe übertragen von Gespräch zu Gespräch übergeben werden und Sie wollen aufzeichnen alles aufzeichnen.

Wenn ein Anruf (in der Conversation API auch als Leg oder Call Leg bezeichnet, siehe mehr) wird mit Hilfe der Voice API aufgebaut, d.h. wenn ein eingehender Anruf auf der Vonage Plattform eingeht oder Vonage Ihre Anfrage für einen ausgehenden Anruf erhalten haterhalten hat, wird ihm eine eindeutige Kennung zugewiesen - uuid - zugewiesen und zu einer Konversation hinzugefügt (identifiziert mit Unterhaltung_uuid). Die uuid bleibt dieselbe, bis der Anruf beendet ist, aber conversation_uuid ändert sich, wenn der Anruf übertragen wird, während die Aufzeichnung an ein Gespräch gebunden ist.

Wenn eine Übertragung stattfindet, das heißt, wenn die Aktion "Gespräch" ausgeführt wird oder eine Übertragungsauftrag abgeschlossen istabgeschlossen ist, erhalten Sie einen Übertragungs-Webhook (siehe mehr):

{
  "conversation_uuid_from": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "type": "transfer",
  "uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "conversation_uuid_to": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "timestamp": "2023-04-12T07:26:42.775720Z"
}

Es wird vorgeschlagen, sowohl die conversation_uuid_from und conversation_uuid_to zu speichern, wenn Sie die Aufzeichnung für jedes Gespräch aktiviert haben, da Sie für jedes Gespräch ein Aufzeichnungsereignis erhalten würden.

Zum Beispiel das folgende NCCO:

[
  {
      "action": "record"
  },
  {
      "action": "talk",
      "text": "You are joining a conference that was created using Vonage's Voice API."
  },
  {
      "action": "conversation",
      "record": true,
      "name": "vonage-conference-abc",
  }
]

Es gibt eine Aufzeichnungsaktion und eine Konversationsaktion, bei der die Aufzeichnungsoption auf "true" gesetzt ist, so dass Sie einen Webhook für ein Übertragungsereignis und zwei Webhooks für ein Aufzeichnungsereignis erhalten:

  • Ein Aufzeichnungsereignis für das Gespräch, aus dem der Anruf wegvermittelt wurde (conversation_uuid_from).

  • Ein weiteres Aufzeichnungsereignis für das Gespräch, zu dem der Anruf gerade hinzugefügt wurde (conversation_uuid_to).

Daher ist es wichtig, sie mit den richtigen IDs zu verknüpfen, um jede Aufzeichnung und jede Übertragung zu verfolgen. Sie wollen sich später nicht fragen, zu welchem Anruf die Aufzeichnungen gehören, wenn Sie nicht alle conversation_uuid speichern.

So nehmen Sie jeden Teilnehmer in einem separaten Kanal auf

Geteilte Aufnahme führt dazu, dass die Aufnahme eine Stereodatei ist, wobei ein Kanal den vom Anrufer gesendeten Ton und der andere Kanal den vom Anrufer gehörten Ton enthält.

Um Split Recording in Ihrer Anwendung hinzuzufügen, können Sie je nachdem, ob es sich um eine mit NCCO action connect oder NCCO action conversation erstellte Konversation handelt, wählen:

  • Wenn Sie die Aktion "Verbinden" verwenden, setzen Sie die NCCO-Aktion Datensatz:

{
  "action": "record",
  "split": "conversation", 
  "channels": 3,//the number of channels to record (maximum 32)
  "format": "wav",
}, 
{
  "action": "connect", ... }

Wenn das Gespräch beginnt, senden Sie eine Anfrage an recordConversation mit dem Text der Anfrage:

{
   "action": "start",
   "split": "conversation",
   "format": "wav",
   "channels": 3
}

Mehr zur Aufnahme

Wenn Ihre Unterhaltungen mit der NCCO-Aktionsverbindung erstellt werden, sollten Sie unbedingt sicherstellen, dass Sie jeden Webhook für Sprachereignisse speichern, da Voice API diese nicht speichert, insbesondere für Aufzeichnungsereignisse (die eine Aufzeichnungs-URL haben), die Sie später zum Herunterfahren der Aufnahme benötigen.

Wenn Sie jedoch Konferenzen mit der Aktion Konversation erstellen, gibt es eine Möglichkeit, fehlende Aufzeichnungsereignisse mit dieser Conversation API v0.2 Ereignisse].

Na endlich,

Abgesehen davon, dass Sie das Client SDK regelmäßig auf die neueste Version aktualisieren, wäre es für Ihre Anwendung von Vorteil, wenn Sie eine Fehlererkennung und -protokollierung implementieren.

Wenn z. B. die Schaltfläche "Antworten" in Ihrem Kontaktzentrum den Anruf nicht verbinden kann, wäre es hilfreich, eine Fehlermeldung auszugeben und sie mit möglichst vielen Informationen über den Browser des Benutzers und das Betriebssystem an Ihre Fehlerprotokollierungsplattform zu senden, call_uuid, konversions_uuidusw. So erhalten Sie bei der Fehlersuche mehr Informationen über die Auswirkungen des Problems und die mögliche Ursache.

try {
  app.on("member:call", (member, call) => {
    // Answer the call.
    $( "#answer" ).click((e) => {
      call.answer().then().catch(error => {
        // Send the error to your error logging platform with additional information
        logError({
          message: 'Failed to answer the call',
          data: [
            member.id,
            member.conversation.id,
            call.id,
          ],
          extra: [
            `Browser: ${navigator.userAgent}`,
            `OS: ${navigator.platform}`
          ]
        });
      });
    });
} catch (error) {
  logError({
    message: `Error: ${error.message}`,
    extra: [
      `Browser: ${navigator.userAgent}`,
      `OS: ${navigator.platform}`
    ]
  });
}

Nachbereitung

Um ein effizientes Contact Center mit Vonage-APIs aufzubauen, wird dringend empfohlen, die Antwortzeit von Webhooks für NCCO zu überwachen (Sie sollten die Serverprotokollierung aktivieren, um die Antwortzeit von HTTP-Anfragen zu überwachen) und sicherzustellen, dass die Fallback-URL so eingerichtet ist, dass ein Fallback-NCCO zurückgegeben wird (richten Sie dies in Vonage Kunden-Dashboard). Wichtig ist auch die korrekte Zuordnung von call uuid und conversation_uuid (erfahren Sie mehr über die in der Conversation API verwendeten Concepts) in Ereignis-Webhooks um Funktionen wie Queue, Transfer und Record zu implementieren. Schließlich hilft Ihnen die Implementierung der Fehleraufzeichnung und -protokollierung bei der Fehlersuche in der Anwendung, die mit Vonage Client SDK.

Wenn Sie Fragen oder Feedback haben, besuchen Sie den Vonage Entwickler-Slack.

Teilen Sie:

https://a.storyblok.com/f/270183/400x346/e25af61dbc/yinping-ge.png
Yinping Ge

Customer Solutions Engineer at Vonage