IBM Cloud Docs
Integration mit Telefon und Twilio Flex

Integration mit Telefon und Twilio Flex

IBM Cloud

Sie können die Telefonintegration verwenden, um Ihre Kunden über das Telefon zu unterstützen und sie an Live-Agenten innerhalb von Twilio Flex weiterzuleiten. Wenn ein Kunde im Rahmen eines Dialogs mit Ihrem Assistenten fragt, ob er mit einer Person sprechen möchte, können Sie das Gespräch direkt an einen Twilio Flex-Agenten weiterleiten.

Vorbereitende Schritte

Für die Verwendung dieses Integrationsmusters benötigen Sie Folgendes:

  • watsonx Assistant Plus- oder Enterprise-Plan (für Telefonintegration erforderlich)
  • Ein Twilio-Konto mit den folgenden Produkten:
    • Twilio Flex
    • Twilio Voice mit programmierbarer Sprach-API
    • Twilio Studio

watsonx Assistant-Telefonintegration hinzufügen

Sie können diesen Abschnitt überspringen, wenn Sie die Telefonintegration bereits Ihrem Assistenten hinzugefügt haben.

Wenn Sie die Telefonintegration hinzufügen müssen, führen Sie die folgenden Schritte aus.

  1. Im Abschnitt Integrationen auf der Hauptseite für Ihren Assistenten unter Wesentliche Kanäle wird eine Kachel für Phone angezeigt.

  2. Klicken Sie auf der Kachel Telefon auf Hinzufügen.

  3. Klicken Sie im Popup-Fenster erneut auf Hinzufügen.

  4. Wählen Sie "Vorhandene Telefonnummer eines externen Anbieters verwenden ".

  5. Schließen Sie den Konfigurationsprozess für die Telefonintegration ab. (Weitere Informationen finden Sie unter Integration mit Telefon.)

Mehr ist vorerst nicht nötig. Weitere Informationen zur Konfiguration der Telefonintegration finden Sie unter Integration mit Telefon.

Twilio Flex-Projekt hinzufügen

Ein neues oder ein vorhandenes Twilio Flex-Projekt ist erforderlich.

Wenn Sie ein Twilio Flex-Projekt benötigen, können Sie mithilfe dieser Schritte ein solches erstellen.

  1. Klicken Sie im Dropdown-Menü des Projekts auf Neues Projekt erstellen. Geben Sie einen Namen für das Projekt an und überprüfen Sie Ihre Kontodaten.

  2. Wählen Sie auf der Startseite Flex als Twilio-Produkt für Ihr neues Projekt aus. Füllen Sie den Fragebogen aus und klicken Sie dann auf "Get Started with Twilio ".

    Kehren Sie nach der Bereitstellung Ihres Flex-Projekts zur Twilio-Konsolezurück. Vergewissern Sie sich, dass Sie das richtige Projekt aus der Dropdown-Liste ausgewählt haben.

  3. Klicken Sie im Navigationsmenü auf das Symbol Alle Produkte & Services.

  4. Klicken Sie auf Twilio Programmable Voice > Einstellungen > Allgemein.

  5. Schalten Sie Erweiterte programmierbare SIP-Features auf Aktiviert.

Anrufablauf erstellen

Nachdem Sie die Telefonintegration und das Twilio Flex-Projekt konfiguriert haben, müssen Sie mit Twilio Studio einen Anrufablauf erstellen und die Telefonnummer bereitstellen (oder portieren), mit der Ihr Assistent arbeiten soll.

So erstellen Sie den Anrufablauf:

  1. Klicken Sie im Navigationsmenü auf das Symbol Alle Produkte & Services.

  2. Klicken Sie auf Studio.

  3. Klicken Sie auf +, um einen neuen Ablauf zu erstellen.

  4. Benennen Sie den neuen Fluss und klicken Sie dann auf "Weiter ".

  5. Wählen Sie "Von Grund auf neu starten " und klicken Sie dann auf "Weiter ". Im Erstellungsbereich für den Ablauf wird das Widget Auslöser angezeigt.

  6. Klicken Sie auf das Auslöser-Widget.

  7. Notieren Sie den Wert aus dem Feld WEBHOOK-URL. Sie benötigen diesen Wert in einem späteren Schritt.

Telefonnummer konfigurieren

  1. Klicken Sie im Navigationsmenü auf das Symbol Alle Produkte & Services.

  2. Klicken Sie auf Telefonnummern.

  3. Konfigurieren Sie unter Nummern verwalten die Telefonnummer, die Ihr Assistent verwenden soll. Wählen Sie Nummer kaufen aus, um eine neue Nummer zu kaufen, oder Port & Host, um eine vorhandene Telefonnummer zu portieren.

  4. Klicken Sie in der Liste Aktive Nummern auf die neue Telefonnummer.

  5. Konfigurieren Sie diese Einstellungen unter "Voice and Fax ".

    • Wählen Sie für das Feld KONFIGURIEREN MIT die Option Webhook, TwiML-Bins, Funktionen, Studio oder Proxy aus.

    • Wählen Sie für EINGEHENDER ANRUF die Option Studio-Ablauf aus. Wählen Sie Ihren Ablauf aus der Dropdown-Liste aus.

    • Wählen Sie für FEHLER PRIMÄRER HANDLER die Option Studio-Ablauf aus. Wählen Sie Ihren Ablauf aus der Dropdown-Liste aus.

  6. Gehen Sie zur watsonx Assistant und öffnen Sie die Einstellungen für die Telefonintegration für Ihren Assistenten.

  7. Geben Sie im Feld "Telefonnummer" die Telefonnummer ein, die Sie in Flex Studio konfiguriert haben.

  8. Klicken Sie auf Speichern und beenden.

Testen Ihrer Telefonnummer

Sie können jetzt testen, ob Ihre Telefonnummer mit Ihrem Ablauf verbunden ist, indem Sie ein Sagen/Abspielen-Widget im Twilio Flex Flow-Editor auslösen.

  1. Ziehen Sie ein Sagen/Abspielen-Widget in Ihren Erstellungsbereich für Abläufe.

  2. Konfigurieren Sie das Sagen/Abspielen-Widget mit einer einfachen Phrase wie I'm alive..

  3. Verbinden Sie den Knoten Eingehender Anruf in Ihrem Auslöser-Widget mit Ihrem Sagen/Abspielen-Widget.

  4. Rufen Sie Ihre Telefonnummer an. Sie sollten hören, wie Twilio Flow mit Ihrer Testphrase antwortet.

  5. Löschen Sie das Sagen/Abspielen-Widget und fahren Sie mit dem nächsten Schritt fort.

  6. Wenn dieser Test nicht wie erwartet funktioniert hat, überprüfen Sie die Konfiguration Ihrer Telefonnummer, um sicherzustellen, dass sie mit Ihrem Flow verknüpft ist.

Twilio-Funktion zum Verarbeiten eingehender Aufrufe erstellen

Jetzt müssen Sie den Anrufablauf so konfigurieren, dass eingehende Anrufe mithilfe einer Twilio-Funktion an den Assistenten weitergeleitet werden. Führen Sie die folgenden Schritte aus:

  1. Klicken Sie im Navigationsmenü auf das Symbol Alle Produkte & Services.

  2. Klicken Sie auf Services.

  3. Klicken Sie auf Service erstellen. Geben Sie einen Servicenamen an und klicken Sie dann auf Weiter.

  4. Klicken Sie auf Hinzufügen > Funktion hinzufügen, um Ihrem Service eine neue Funktion hinzuzufügen. Nennen Sie die neue Funktion /receive-call.

  5. Ersetzen Sie die Vorlage in Ihrer Funktion /receive-call durch den folgenden Code:

    exports.handler = function(context, event, callback) {
      const VoiceResponse = require('twilio').twiml.VoiceResponse;  
      const response = new VoiceResponse();
      const dial = response.dial({
        answerOnBridge: "true",
        referUrl: "/refer-handler"
      });
      const calledPhoneNumber = event.Called;
      dial.sip(`sip:${calledPhoneNumber}@{sip_uri_hostname};secure=true`);  
      return callback(null, response);
    }
    
    • Ersetzen Sie {sip_uri_hostname} durch den Hostnamen-Teil der SIP-URI für die Telefonintegration Ihres Assistenten (alles, was nach sips: kommt). Hinweis: Twilio unterstützt keine SIPS-URIs, unterstützt jedoch sicheres SIP-Trunking, indem ;secure=true an die SIP-URI angehängt wird.
  6. Klicken Sie auf Speichern.

  7. Klicken Sie auf Alle bereitstellen.

Umleitung zum Handler für eingehende Anrufe

Verwenden Sie ein TwiML -Umleitungs- Widget in Ihrem Studio Flow-Editor, um den /receive-call Funktion, die im vorherigen Abschnitt erstellt wurde.

  1. Fügen Sie Ihrem Studio-Ablauf-Erstellungsbereich das Widget TwiML Redirect hinzu.

  2. Verbinden Sie den Auslöser für eingehende Anrufe mit Ihrem TwiML Redirect-Widget.

  3. Konfigurieren Sie TwiML mit URL für die Funktion /receive-call, die Sie im vorherigen Abschnitt erstellt haben.

  4. Ihr Ablauf sollte jetzt an watsonx Assistant umgeleitet werden, wenn ein eingehender Anruf empfangen wird.

  5. Wenn die Umleitung fehlschlägt, stellen Sie sicher, dass Sie Ihre /receive-call-Funktion implementiert haben.

Twilio-Funktion zum Verarbeiten von Übertragungen vom Assistenten erstellen

Sie müssen auch den Anrufablauf so konfigurieren, dass Anrufe, die vom Assistenten zurück an Twilio Flex weitergeleitet werden, bearbeitet werden, falls Kunden darum bitten, mit einem Agenten zu sprechen. Verwenden Sie ein Say/Play nach TwiML, um anzuzeigen, dass der Anruf watsonx Assistant zurück an den Flow weitergeleitet wird. An diesem Punkt sind viele Optionen möglich, wie z. B. das Einreihen des Aufrufs für einen Live-Agenten, und werden in diesem Abschnitt erläutert.

  1. Fügen Sie ein Widget Say/Play zum Erstellungsbereich hinzu und konfigurieren Sie es mit einer Phrase wie Transfer from Watson complete.

  2. Verbinden Sie den Rückgabe-Knoten im Widget TwiML Redirect mit Ihrem Widget Sagen/Abspielen.

  3. Klicken Sie auf das Auslöser-Widget.

  4. Kopieren Sie den Wert aus dem Feld WEBHOOK-URL. Sie benötigen diesen Wert in einem späteren Schritt.

  5. Klicken Sie auf der Seite "Twilio-Funktionen" auf Hinzufügen > Funktion hinzufügen, um Ihrem Service eine neue Funktion hinzuzufügen. Nennen Sie diese neue Funktion /refer-handler.

  6. Ersetzen Sie die Vorlage in Ihrer /refer-handler-Funktion durch den folgenden Code:

    exports.handler = function(context, event, callback) {
      // This function handler will handle the SIP REFER back from the Phone Integration.
      // Before handing the call back to Twilio, it will extract the session history key from the
      // User-to-User header that's part of the SIP REFER Refer-To header. This session history key
      // is a string that is used to load the agent application in order to share the transcripts of the caller
      // with the agent.
      // See https://github.com/watson-developer-cloud/assistant-web-chat-service-desk-starter/blob/main/docs/AGENT_APP.md
      const VoiceResponse = require('twilio').twiml.VoiceResponse;
    
      const STUDIO_WEBHOOK_URL = '{webhook_url}';
    
      let studioWebhookReturnUrl = `${STUDIO_WEBHOOK_URL}?FlowEvent=return`;
    
      const response = new VoiceResponse();
      console.log("ReferTransferTarget: " + event.ReferTransferTarget);
    
      const referToSipUriHeaders = event.ReferTransferTarget.split("?")[1];
      console.log(referToSipUriHeaders);
      if (referToSipUriHeaders) {
        const sanitizedReferToSipUriHeaders = referToSipUriHeaders.replace(">", "");
        console.log("Custom Headers: " + sanitizedReferToSipUriHeaders);
    
        const sipHeadersList = sanitizedReferToSipUriHeaders.split("&");
    
        const sipHeaders = {};
        for (const sipHeaderSet of sipHeadersList) {
          const [name, value] = sipHeaderSet.split('=');
          sipHeaders[name] = value;
        }
    
        const USER_TO_USER_HEADER = 'User-to-User';
    
        // Extracts the User-to-User header value
        const uuiData = sipHeaders[USER_TO_USER_HEADER];
    
        if (uuiData) {
          const decodedUUIData = decodeURIComponent(uuiData);
          const sessionHistoryKey = decodedUUIData.split(';')[0];
          // Passes the session history key back to Twilio Studio through a query parameter.
          studioWebhookReturnUrl = `${studioWebhookReturnUrl}&SessionHistoryKey=${sessionHistoryKey}`;
        }    
      }
    
      response.redirect(
        { method: 'POST' },
        studioWebhookReturnUrl
      );
    
      // This callback is what is returned in response to this function being invoked.
      // It's really important! E.g. you might respond with TWiML here for a voice or SMS response.
      // Or you might return JSON data to a studio flow. Don't forget it!
      return callback(null, response);
    }
    

    Ersetzen Sie {webhook_url} durch den Wert URL, den Sie aus dem Trigger-Widget in Ihrem Studio Flow kopiert haben.

  7. Klicken Sie auf Speichern.

  8. Klicken Sie auf Alle bereitstellen.

  9. Nachdem Sie diesen Referenzhandler erstellt haben, kopieren Sie die Funktions-URL zurück in das Feld referUrl des /receive-call-Handlers.

Assistenten für die Übertragung von Anrufen an Twilio Flex konfigurieren

Jetzt müssen wir den Assistenten so konfigurieren, dass er Anrufe an Twilio Flex weiterleitet, wenn ein Kunde mit einem Agenten sprechen möchte. Führen Sie die folgenden Schritte aus:

  1. Öffnen Sie in der watsonx Assistant-Benutzerschnittstelle den Dialogskill Ihres Assistenten.

  2. Fügen Sie einen Knoten mit der Bedingung hinzu, die Ihren Assistenten dazu veranlasst, Kunden an einen Agenten weiterzuleiten.

  3. Fügen Sie dem Knoten eine Textantwort hinzu und geben Sie den Text an, den Ihr Assistent sagen soll, bevor er Kunden an einen Agenten weiterleitet.

  4. Öffnen Sie den JSON-Editor für die Antwort.

  5. Fügen Sie im JSON-Editor eine connect_to_agent-Antworthinzu, indem Sie Ihre Telefonnummer als sip.uri angeben (ersetzen Sie {phone_number} durch die Telefonnummer Ihres SIP-Trunks):

{
  "generic": [
    {
        "response_type": "connect_to_agent",
        "transfer_info": {
          "target": {
            "service_desk": {
              "sip": {
                "uri": "sip:+{phone_number}@flex.twilio.com",
                "transfer_headers_send_method": "refer_to_header"
              }
            }
          }
        },
        "agent_available": {
          "message": "Ok, I'm transferring you to an agent"
        },
        "agent_unavailable": {
          "message": ""
        }
    }
  ]
}

Dieses Beispiel zeigt nicht, wie der Kontext verwendet wird, der von watsonx Assistant an Twilio Flex übergeben wird. Sie können die Informationen von Benutzer zu Benutzer aus dem Twilio Flex-Fluss heraus referenzieren:

{
  "context": {
    "widgets": {
      "redirect_1": {
        "User-to-User": "value",
      }
    }
  }
}

Dabei ist redirect_1 der Name Ihres Weiterleitungswidgets. Wenn Sie beispielsweise mehrere Warteschlangen einrichten, können Sie ein Twilio-Widget vom Typ 'Split' verwenden, um eine Warteschlange basierend auf dem zurückgegebenen Kontext auszuwählen.

Assistenten testen

Ihr Assistent sollte nun in der Lage sein, Anrufe unter Ihrer Telefonnummer anzunehmen und Anrufe an Ihren Twilio Flex-Flow weiterzuleiten. So testen Sie Ihren Assistenten:

  1. Rufen Sie Ihre Telefonnummer an. Wenn der Assistent antwortet, fragen Sie nach einem Mitarbeiter.

  2. Sie sollten den im Say/Play-Widget konfigurierten Satz hören (z. B. Transfer from Watson complete ).

  3. Wenn die Übertragung fehlschlägt, verwenden Sie das Konsolenprotokoll, um den Anruffluss zu verfolgen, während er vom Flow zum /receive-call-Handler, zu watsonx Assistant zum Refer-Handler und dann zurück zu Ihrem Twilio Flex-Flow geleitet wird.

Gesprächsverlauf mit Service-Desk-Mitarbeitern teilen

Damit die Mitarbeiter des Servicedesks einen schnellen Überblick über den Gesprächsverlauf zwischen Besucher und Assistent erhalten, richten Sie watsonx Assistant für Ihre Twilio Flex-Umgebung ein. Weitere Informationen finden Sie in der Dokumentation unter Twilio Flex watsonx Assistant Agent App.