Benutzerdefinierte Nutzlasten für virtuelle Kundenservicemitarbeiter

Mit der benutzerdefinierten Nutzlast für Dialogflow CX können Sie die Nutzung Ihres virtuellen Kundenservicemitarbeiters über einfache textbasierte Chats und Interaktionen hinaus verbessern. Wenn Sie benutzerdefinierte Nutzlasten in Dialogflow CX verwenden, können Sie Ihren virtuellen Kundenservicemitarbeiter so konfigurieren, dass er benutzerdefinierte Antworten und Zitate rendert.

Benutzerdefinierte Antwortnachrichtentypen

Mit Benutzerdefinierte Antworten können Sie die folgenden Nachrichtentypen rendern:

  • Text

  • Inline-Schaltflächen

  • Fixierte Schaltflächen

  • Bilder

  • Videos

  • Dokumente

  • Komplexe Ansichten (Kombination aus einem oder mehreren Nachrichtentypen)

Mit Benutzerdefinierte Aktionen können virtuelle Kundenservicemitarbeiter die folgenden Aktionen ausführen:

  • Eskalationen an Kundenservicemitarbeiter

  • Geplante Weiterleitungen an Kundenservicemitarbeiter

  • Supportsitzung beenden

Nutzlast der Contact Center AI Platform (CCAI Platform)

Kann in Dialogflow CX als benutzerdefinierte Nutzlast verwendet werden. Das folgende Beispiel zeigt das Format für Antworten im Web-SDK mit Dialogflow CX.

{
  "ujet": {
    "type": "text|inline_button|sticky_button|image|video|document|complex|action",
    "action": "escalation|end",
    "title": "message displayed on the top of the message",
    "escalation_reason": "by_consumer|by_virtual_agent",
    "session_variable": {
      "capture_target": "payload|end_user_response",
      "capture_key": "key",
      "payload": {
      }
    },
    "messages": [
      "Hello",
      "How can I help you?"
    ],
    "buttons": [
      {
        "title": "Button 1",
        "action": "quick_reply"
      },
      {
        "title": "Button 2",
        "action": "quick_reply"
      }
    ],
    "images": [
      {
        "url": "https://image.url",
        "text": "an alternate text for an image for when failed to load an image"
      },
      {
        "url": "https://image.url",
        "text": "an alternate text for an image"
      }
    ],
    "videos": [
      {
        "url": "https://video.url",
        "text": "an alternate text for a video for when failed to load a video"
      },
      {
        "url": "https://video.url",
        "text": "an alternate text for a video"
      }
    ],
    "documents": [
      {
        "url": "https://document.url",
        "text": "an alternate text for a document for when failed to load a document"
      },
      {
        "url": "https://document.url",
        "text": "an alternate text for a document"
      }
    ],
    "components": [
      {
        "type": "text",
        "messages": [
          "We need the information for helping you.",
          "Could you please choose the following options?"
        ]
      },
      {
        "type": "inline_button",
        "buttons": [
          {
            "title": "Button 1",
            "action": "quick_reply"
          },
          {
            "title": "Button 2",
            "action": "quick_reply"
          }
        ]
      },
      {
        "type": "image",
        "images": [
          {
            "url": "https://image.url",
            "text": "an alternate text for an image for when failed to load an image"
          },
          {
            "url": "https://image.url",
            "text": "an alternate text for an image"
          }
        ]
      }
    ]
  }
}

Chatnachrichtenformat für benutzerdefinierte Nutzlast

Wird mit dem CCAI Platform SDK verwendet, um eine geeignete Benutzeroberfläche anzuzeigen. Es ist dasselbe wie das benutzerdefinierte Nutzlastformat von Dialogflow CX, hat aber kein „ujet“-Feld im Stammverzeichnis.

Weitere Informationen finden Sie in den folgenden Beispielen.

Beispiele

Die folgenden Abschnitte enthalten Beispielnutzlasten, die in Dialogflow CX verwendet werden können.

Text

{
  "ujet": {
    "type": "text",
    "messages": [
      "Hello",
      "How can I help you?"
    ]
  }
}

Eskalation an dieselbe Warteschlange

Durch virtuellen Kundenservicemitarbeiter:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_virtual_agent"
  }
}

Durch Endnutzer:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_consumer"
  }
}

Der Wert escalation_reason wird in den Dashboards gemeldet.

Eskalation an die Zielwarteschlange

Durch virtuellen Kundenservicemitarbeiter:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_virtual_agent",
    "menu_id": 100,
    "language": "ko"
  }
}

Durch Endnutzer:

{
  "ujet": {
      "type": "action",
      "action": "escalation",
      "escalation_reason": "by_consumer",
      "menu_id": 100,
      "language": "ko"
  }
}

Der Wert escalation_reason wird in den Dashboards gemeldet.

Unterhaltung beenden

{
  "ujet": {
    "type": "action",
    "action": "end"
  }
}

Inline-Schaltfläche

{
  "ujet": {
    "type": "inline_button",
    "title": "Select a menu",
    "buttons": [
      {
        "title": "Lorem Ipsum",
        "action": "quick_reply"
      },
      {
        "title": "Lorem Ipsum Dolor Sit Amet",
        "action": "escalation"
      }
    ]
  }
}

Beispiel

Beispiel für Inline-Button

Fixierte Schaltfläche

{
  "ujet": {
    "type": "sticky_button",
    "title": "Select a menu",
    "buttons": [
      {
        "title": "Lorem Ipsum",
        "action": "quick_reply"
      },
      {
        "title": "Lorem Ipsum Dolor Sit Amet",
        "action": "escalation"
      }
    ]
  }
}

Beispiel

Beispiel für einen fixierten Button

Bildansicht

{
  "ujet": {
    "type": "image",
    "title": "Please see the following images",
    "images": [
      {
        "url": "https://image1.url",
        "text": "an alternate text for an image for when failed to load an image"
      },
      {
        "url": "https://image2.url",
        "text": "an alternate text for an image"
      }
    ]
  }
}

Videoaufruf

{
  "ujet": {
    "type": "video",
    "title": "Please see the following videos",
    "videos": [
      {
        "url": "https://video1.url",
        "text": "an alternate text for a video for when failed to load a video"
      },
      {
        "url": "https://video2.url",
        "text": "an alternate text for a video"
      }
    ]
  }
}

Dokumentansicht

{
  "ujet": {
    "type": "document",
    "title": "Please see the following document",
    "documents": [
      {
        "url": "https://document1.url",
        "text": "an alternate text for a document for when failed to load a document"
      },
      {
        "url": "https://document2.url",
        "text": "an alternate text for a document"
      }
    ]
  }
}

Komplexe Ansicht

{
  "ujet": {
    "type": "complex",
    "type": "Welcome to CCAI Platform world!",
    "components": [
      {
        "type": "text",
        "messages": [
          "We need the information for helping you.",
          "Could you please choose the following options?"
        ]
      },
      {
        "type": "inline_button",
        "buttons": [
          {
            "title": "Button 1",
            "action": "quick_reply"
          },
          {
            "title": "Button 2",
            "action": "quick_reply"
          }
        ]
      },
      {
        "type": "image",
        "images": [
          {
            "url": "https://image1.url",
            "text": "an alternate text for an image for when failed to load an image"
          },
          {
            "url": "https://image2.url",
            "text": "an alternate text for an image"
          }
        ]
      }
    ]
  }
}

Benutzerdefinierte Nutzlast in Dialogflow konfigurieren

Weitere Informationen zum Konfigurieren Ihrer benutzerdefinierten Nutzlast mit Dialogflow finden Sie in den Ressourcen Benutzerdefinierte Nutzlast antworten (Dialogflow ES) oder Benutzerdefinierte Nutzlast (Dialogflow CX).

Weitere Informationen finden Sie unter Benutzerdefinierte Sitzungsvariablen für die Verarbeitung benutzerdefinierter Nutzlasten.

Weiterleitung durch virtuellen Kundenservicemitarbeiter an eine Telefonnummer oder einen SIP-Endpunkt

Sie können benutzerdefinierte Nutzlasten von Dialogflow CX verwenden, um Anrufe von einem virtuellen Kundenservicemitarbeiter an die von Ihnen angegebene Telefonnummer oder den SIP-Endpunkt weiterzuleiten. Wenn die Verbindung erfolgreich ist, wird der virtuelle Kundenservicemitarbeiter aus dem Anruf entfernt und der Anruf wird fortgesetzt. Wenn die Verbindung fehlschlägt, wird eine Nachricht über den Fehler bei der Weiterleitung abgespielt und der Anruf wird mit dem virtuellen Kundenservicemitarbeiter fortgesetzt.

Weiterleitungen durch virtuelle Kundenservicemitarbeiter funktionieren sowohl für interne als auch für externe Anrufe. Weiterleitungen durch virtuelle Kundenservicemitarbeiter werden in Berichten als Planned Transfers erfasst.

Anruf an eine Telefonnummer weiterleiten

Wenn Sie einen Anruf von einem virtuellen Kundenservicemitarbeiter an eine Telefonnummer weiterleiten möchten, verwenden Sie eine Dialogflow CX-Nutzlast, die dem folgenden Codebeispiel ähnelt:

{
  "ujet": {
    "type": "action",
    "action": "deflection",
    "deflection_type" : "phone",
    "phone_number": "+16509424879"
  }
}

Anruf an einen SIP-Endpunkt weiterleiten

Sie können einen Anruf von einem virtuellen Kundenservicemitarbeiter an einen SIP-Endpunkt mit einem optionalen Zeitlimit für das Klingeln weiterleiten.

Zeitlimit für das Klingeln

Wenn Sie ein Zeitlimit für das Klingeln konfigurieren möchten, fügen Sie das Feld sip_ring_timeout hinzu. So haben Anrufe an interne Nebenstellen oder Unified Communications-Ziele (UC) genügend Zeit, um beantwortet zu werden, bevor die Verbindung getrennt wird. Diese Funktion ist nur für Twilio-Nutzer verfügbar. Twilio fügt dem von Ihnen konfigurierten Zeitlimit für das Klingeln etwa fünf Sekunden hinzu.

Beispiel

Wenn Sie einen Anruf von einem virtuellen Kundenservicemitarbeiter an einen SIP-Endpunkt weiterleiten möchten, verwenden Sie eine Dialogflow-Nutzlast, die dem folgenden Codebeispiel ähnelt:

{
  "ujet": {
    "type": "action",
    "action": "deflection",
    "deflection_type" : "sip",
    "sip_uri": "SIP_ENDPOINT",
    "sip_ring_timeout": SIP_RINGING_TIMEOUT
  }
}

Ersetzen Sie Folgendes:

  • SIP_ENDPOINT: Der SIP-Endpunkt, an den der Anruf weitergeleitet werden soll. Er sollte so aussehen: sip:1-999-123-4567@voip-provider.example.net.

  • SIP_RINGING_TIMEOUT: Optional: Die Anzahl der Sekunden, die der Anruf klingelt, bevor das Zeitlimit überschritten wird. Gültige Werte: 10 bis 600 (einschließlich). Wenn Sie einen Wert außerhalb dieses Bereichs festlegen, verwendet das System das Standardzeitlimit für das Klingeln von 30 Sekunden. Standard: 30 Sekunden.

Anruf mit der SIP REFER-Methode an einen SIP-Endpunkt weiterleiten

Wenn Sie einen Anruf von einem virtuellen Kundenservicemitarbeiter mit der SIP REFER-Methode an einen SIP-Endpunkt weiterleiten möchten, verwenden Sie eine Dialogflow CX-Nutzlast, die dem folgenden Codebeispiel ähnelt. Mit der SIP REFER-Methode können Sie mithilfe der Header-Attribute nützliche Informationen weitergeben.

{
    "ujet": {
       "type": "action",
       "action": "deflection",
       "deflection_type" : "sip"
       "sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
       "sip_refer": true
       "sip_parameters": {
       "x-header": "value",
       "x-header": "value"
       }
    }
}

Benutzerdefinierte Sitzungsvariablen für die Verarbeitung benutzerdefinierter Nutzlasten

Verwenden Sie benutzerdefinierte Sitzungsvariablen, um Werte aus der Intent-Antwort und der Endnutzerantwort zu erfassen, alle zu sammeln und als Kommentar in das CRM hochzuladen. Weitere Informationen finden Sie unter Dialogflow-Nutzlast für benutzerdefinierte Sitzung variablen.

Aus der Endnutzerantwort erfassen

Flow

  1. Die CCAI Platform fordert die Antwort von Dialogflow CX an.

    Dialogflow CX kann über die Auftragsausführung einen Rückruf an den Server des Kunden auslösen.

    Der Server des Kunden muss das Feld session_variable in der Antwort ausfüllen.

  2. Dialogflow CX gibt die Antwort mit der benutzerdefinierten Nutzlast zurück, einschließlich des Felds session_variable mit capture_target = end_user_response.

  3. Ein Endnutzer sendet eine Nachricht.

  4. Die CCAI Platform behält die Endnutzernachricht bei, die im vorherigen Schritt gesendet wurde.

  5. Die CCAI Platform postet alle Sitzungsvariablen, die in der Chatsitzung erfasst wurden, als Kommentar im CRM, wenn ein virtueller Kundenservicemitarbeiter einen Chat verlassen hat.

Benutzerdefiniertes Nutzlastformat

{
  "ujet": {
    "session_variable": {
      "capture_target": "end_user_response",
      "capture_key": "key"
    }
  }
}

Die nächste Endnutzernachricht unmittelbar nachdem ein virtueller Kundenservicemitarbeiter eine benutzerdefinierte Nutzlast gesendet hat, wird als Sitzungsvariable mit dem Schlüssel „key“ erfasst.

Aus der Intent-Antwort erfassen

Flow

  1. Die CCAI Platform fordert die Antwort von Dialogflow CX an.

    1. Dialogflow CX kann über die Auftragsausführung einen Rückruf an den Server des Kunden auslösen.

    2. Der Server des Kunden muss das Feld session_variable in der Antwort ausfüllen.

  2. Dialogflow CX gibt die Antwort mit der benutzerdefinierten Nutzlast zurück, einschließlich session_variable Feld mit capture_target = "payload".

  3. Der CCAI Platform-Server behält das payload-Objekt in Schritt 2 bei.

Die CCAI Platform postet alle Sitzungsvariablen, die in der Chatsitzung erfasst wurden, als Kommentar im CRM, wenn ein virtueller Kundenservicemitarbeiter einen Chat verlassen hat.

Benutzerdefiniertes Nutzlastformat

{
  "ujet": {
    "session_variable": {
      "capture_target": "payload",
      "capture_type": [
        "comment",
        "agent"
      ],
      "payload": {
        "status": "STATUS",
        "order_id": "ORDER_ID",
        "personal_id": "PERSONAL_ID"
      },
        "invisible_to_agent": ["INVISIBLE_TO_AGENT"],
        "display_order_in_adapter": ["DISPLAY_ORDER_IN_ADAPTER"]
    }
  }
}

Ersetzen Sie Folgendes:

  • STATUS: Der Status der Bestellung.

  • ORDER_ID: Die Bestell-ID.

  • PERSONAL_ID: Eine Kennung des Endnutzers.

  • INVISIBLE_TO_AGENT: Ein Array von Attributen, die im Agent-Adapter nicht sichtbar sein sollen. Wenn Sie hier beispielsweise den Wert "personal_id" angeben, wird das Attribut personal_id nicht im Agent-Adapter angezeigt. Weitere Informationen finden Sie unter Sitzungsvariablen des virtuellen Kundenservicemitarbeiters anzeigen.

  • DISPLAY_ORDER_IN_ADAPTER: Ein Array von Attributen, mit denen die Reihenfolge angegeben wird, in der Sitzungsvariablen im Agent-Adapter und in CRM-Einträgen angezeigt werden sollen. Weitere Informationen finden Sie unter Sitzungsvariablen des virtuellen Kundenservicemitarbeiters anzeigen.

Benutzerdefinierte Sitzungsvariable in CRM hochladen

Für jede Sitzungsvariable muss der Server alle Sitzungsvariablen intern erfassen und dann in das CRM hochladen, wenn ein virtueller Kundenservicemitarbeiter den Chat verlässt.

Beispiel für eine CRM-Nachricht

    ###########################

    Chat ID: 1
    Menu ID: 1
    Chatbot Platform: Platform Name
    Chatbot Workflow: Workflow Name
    Virtual Agent: Virtual Agent Name

    ###########################

    Intent: Intent Captured from End User Response
    Captured At: 2020-06-25 14:54:19

    Captured Variables
    request: Cancel Order

    ###########################

    Intent: Intent Captured from Payload
    Captured At: 2020-06-25 14:58:23

    Captured Variables
    status: Cancelled
    order_id: #12345

    ###########################

Beispielszenario

Im Folgenden finden Sie eine Beispielunterhaltung, in der die verschiedenen Schritte und die zwischen dem virtuellen Kundenservicemitarbeiter und dem Endnutzer ausgetauschten Nachrichten dargestellt sind.

Schritt 1

Chatnachricht vom virtuellen Kundenservicemitarbeiter

How can I help you? (Button) Show my orders (Button) Cancel an order

Intent-Antwort (benutzerdefinierte Nutzlast)

{
  "ujet": {
    "type": "inline_button",
    "title": "How can I help you?",
    "buttons": [
      {
        "title": "Show my orders",
        "action": "quick_reply"
      },
      {
        "title": "Cancel an order",
        "action": "quick_reply"
      }
    ]
  }
}

Erfasste Sitzungsvariable

Keine

Schritt 2

Chatnachricht vom Endnutzer

Click "Cancel an order" button.

Erfasste Sitzungsvariable

Keine

Schritt 3

Chatnachricht vom virtuellen Kundenservicemitarbeiter

Can you provide the order id please

Intent-Antwort (benutzerdefinierte Nutzlast)

{
  "ujet": {
    "type": "text"
    "messages": [
      "Can you provide the order id please"
    ],
    "session_variable": {
       "capture_target": "end_user_response",
       "capture_key": "order_id";
    }
  }
}

Erfasste Sitzungsvariable

Keine

Schritt 4

Chatnachricht vom Endnutzer

Order id is #12345

Erfasste Sitzungsvariable

order_id: "Order ID is #12345"

Schritt 5

Chatnachricht vom virtuellen Kundenservicemitarbeiter

Order #12345 is cancelled. Do you need anything else?

Intent-Antwort (benutzerdefinierte Nutzlast)

{
  "ujet": {
    "type": "text",
    "messages": [
      "Order #12345 is canceled.",
      "Do you need anything else?"
    ],
    "session_variable": {
      "capture_target": "payload",
      "capture_type": [
        "agent",
        "comment",
        "event"
      ],
      "payload": {
        "order_id": "#12345",
        "order_status": "cancelled"
      }
    }
  }
}

Erfasste Sitzungsvariable

order_id: "#12345", order_status: canceled

Schritt 6

Chatnachricht vom Endnutzer

I would like to speak with a human agent.

Schritt 7

Chatnachricht vom virtuellen Kundenservicemitarbeiter

Virtual Agent is left from the conversation.

{
  "ujet": {
    "type": "escalation",
    "escalation_reason": "by_consumer"
  }
}

Benutzerdefinierte Sitzungsvariable in CRM hochladen

Im vorherigen Szenario wird der folgende Kommentar im CRM Ticket gepostet:

    ---------------------------------

    Chat ID: 1
    Menu ID: 1
    Chatbot Platform: Platform Name
    Chatbot Workflow: Workflow Name
    Virtual Agent: Virtual Agent Name

    --------------------------------

    Intent: Intent Captured from End User Response
    Captured At: 2020-06-25 14:54:19

    Captured Variables
    order_id: Order id is #12345.

    --------------------------------

    Intent: Intent Captured from Payload
    Captured At: 2020-06-25 14:58:23

    Captured Variables
    order_id: #12345
    order_status: canceled

    --------------------------------

Inhaltskarten konfigurieren

Inhaltskarten zeigen prägnante und visuell ansprechende Inhalte in einem kartenähnlichen Format an. So können Endnutzer die präsentierten Informationen einfacher aufnehmen. Sie können Inhaltskarten mit Dialogflow CX erstellen und mit Titeln, Untertiteln und Textkörper anpassen.

Im folgenden Beispiel werden Inhaltskarten verwendet, um dem Endnutzer Restaurantoptionen anzuzeigen:

Beispiel für eine Inhaltskarte

Attribute von Inhaltskarten

Property-Name Beschreibung Erforderlich Typ
title Der Titel der Karte. Ja String
subtitle Der Untertitel der Karte. Nein String
body Die Beschreibung der Inhaltskarte. Ja String
link Ein Link zu einer Webseite oder ein Deeplink. Das SDK verwendet die Funktionen des Betriebssystems, um ihn zu öffnen. Nein String
event_params Ein Wörterbuch mit zusätzlichen Informationen zum Klickereignis. Das SDK verwendet diese Informationen. Nein Wörterbuch

Dialogflow CX-Nutzlast: Validierung hinzufügen und den Inhaltskartentyp akzeptieren

Ein bestimmter Dialogflow CX-Nutzlasttyp verarbeitet Inhaltskarten, wenn Nachrichten von Endnutzern über den Chatbot-Server empfangen werden. Das folgende Beispiel zeigt eine Dialogflow CX-Nutzlast:

{
  "ujet": {
    "type": "content_card",
    "cards": [
      {
        "title": "Title",
        "subtitle": "Subtitle",
        "body": "Body",
        "link": "app://page",
        "event_params": {} # for deep-link click event
      }
    ]
  }
}

Informationen zu Inhaltskarten im CRM-Chatverlauf

Informationen zum Titel der Karte werden protokolliert, um nachzuverfolgen, auf welche Karten der Endnutzer geklickt hat. Diese Informationen werden im CRM-Chatverlauf erfasst.

Im folgenden Beispiel wird die Interaktion mit der Inhaltskarte im Chatnachrichtenverlauf im CRM angezeigt.

[Chat message history]
ID: 305   |   2023-07-06     PDT
--------------------------------------------------
[01:13:32     VA]     Welcome message

[01:14:35     Mobile U.]     Content Cards:
- Title 1
- Title 2

Klickereignisse für Titel von Inhaltskarten protokollieren

Wenn Sie protokollieren möchten, wenn ein Endnutzer auf den Titel einer Inhaltskarte klickt, verwenden Sie das folgende Format, um das Ereignis zu erfassen:

{end_user_name} clicked on the '{title}' card.
Note Title: Content Card click
Note Comment: 'John Doe' clicked on the 'See our new website' card.

Klickereignis für Inhaltskarte mit der End User Event API erstellen

Wenn ein Endnutzer auf den Titel einer Inhaltskarte klickt, können Sie dieses Ereignis erfassen, indem Sie eine POST-Anfrage an die angegebene URL senden, zusammen mit dem Titel der angeklickten Karte.

API-Endpunkt:POST /api/v2/chat/:id/end_user_event

Verwendung:Klickereignis für Inhaltskarte erstellen.

URL:/api/v2/chats/:id/end_user_event

Methode:POST

Parameter :

Feld Typ Beschreibung
event Objekt
event.name String Verwenden Sie für Klickereignisse für Inhaltskarten content_card_clicked.
event.payload Objekt
event.payload.title String Geben Sie den Titel der angeklickten Karte ein.
(Optional) end_user_name String Geben Sie den Namen des Endnutzers ein. Wenn Sie dieses Feld leer lassen, wird der Name aus dem CRM abgerufen.

Beispielanfrage:

{
  "event": {
    "name": "content_card_clicked",
    "payload": {
      "title": "New our website"
    }
  },
  "end_user_name": "consumer 1"   ## optional
}

Antwort: Status: 202 Accepted