Benutzerdefinierte Nutzlasten für virtuelle Kundenservicemitarbeiter

Mit benutzerdefinierten Nutzlasten für Dialogflow CX können Sie die Erfahrung mit Ihrem virtuellen Kundenservicepersonal über reine textbasierte Chats und Interaktionen hinaus verbessern. Mit benutzerdefinierten Nutzlasten in Dialogflow CX können Sie Ihren virtuellen Kundenservicemitarbeiter so konfigurieren, dass benutzerdefinierte Antworten und Quellenangaben gerendert werden.

Typen benutzerdefinierter Antwortnachrichten

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

  • Text

  • Inline-Schaltflächen

  • Festsitzende Tasten

  • Bilder

  • Videos

  • Dokumente

  • Komplexe Ansichten (Kombination aus einem oder mehreren Nachrichtentypen)

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

  • Eskalierungen an Kundenservicemitarbeiter

  • Geplante Übergaben an Kundenservicemitarbeiter

  • Supportsitzung beenden

CCAI Platform-Nutzlast

Zur Verwendung in Dialogflow CX als benutzerdefinierte Nutzlast. Das folgende Beispiel zeigt das Format für Antworten im WebSDK 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"
          }
        ]
      }
    ]
  }
}

Format von Chatnachrichten für benutzerdefinierte Nutzlast

Wird mit dem CCAI Platform SDK verwendet, um eine geeignete Benutzeroberfläche zu präsentieren. Das benutzerdefinierte Nutzlastformat von Dialogflow CX ist dasselbe, aber es gibt kein Feld „ujet“ im Stammverzeichnis.

Weitere Informationen finden Sie in den folgenden Beispielen.

Beispiele

Die folgenden Abschnitte enthalten Beispiel-Nutzlasten, die in Dialogflow CX verwendet werden können.

Text

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

Eskalierung an dieselbe Warteschlange

Über einen virtuellen Kundenservicemitarbeiter:

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

Nach Endnutzer:

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

Der Wert escalation_reason wird in den Dashboards angezeigt.

Eskalierung an die Zielwarteschlange

Über einen virtuellen Kundenservicemitarbeiter:

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

Nach Endnutzer:

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

Der Wert escalation_reason wird in den Dashboards angezeigt.

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-Schaltfläche

Fixierter Button

{
  "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 Nutzlastantworten (Dialogflow ES) oder Benutzerdefinierte Nutzlast (Dialogflow CX).

Weitere Informationen finden Sie unter Benutzerdefinierte Sitzungsvariablen für die benutzerdefinierte Nutzlastverarbeitung.

Weiterleitung des virtuellen Kundenservicemitarbeiters an eine Telefonnummer oder einen SIP-Endpunkt

Mit benutzerdefinierten Nutzlasten in Dialogflow CX können Sie Anrufe von einem virtuellen Sprachagenten an die von Ihnen angegebene Telefonnummer oder den SIP-Endpunkt weiterleiten. Wenn die Verbindung hergestellt wurde, wird der virtuelle Kundenservicemitarbeiter aus dem Anruf entfernt und der Anruf wird fortgesetzt. Wenn die Verbindung fehlschlägt, wird eine Fehlermeldung zur Übertragung abgespielt und das Gespräch wird mit dem virtuellen Kundenservicemitarbeiter fortgesetzt.

Die Übergabe an einen virtuellen Kundenservicemitarbeiter funktioniert sowohl für interne als auch für externe Anrufe. Übergaben durch virtuelle Kundenservicemitarbeiter werden in Berichten als Planned Transfers erfasst.

Anruf an eine Telefonnummer weiterleiten

Wenn Sie einen Anruf von einem virtuellen Agenten 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

Wenn Sie einen Anruf auf standardmäßige Weise von einem virtuellen Agent an einen SIP-Endpunkt weiterleiten möchten, verwenden Sie eine Dialogflow CX-Nutzlast, die dem folgenden Codebeispiel ähnelt:

{
  "ujet": {
    "type": "action",
    "action": "deflection",
    "deflection_type" : "sip",
    "sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
  }
}

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

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

{
    "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. Erfassen Sie dann alle Werte und laden Sie sie als Kommentar in das CRM hoch. Weitere Informationen finden Sie unter Dialogflow-Nutzlast für benutzerdefinierte Sitzungsvariablen.

Aus der Antwort des Endnutzers erfassen

Flow

  1. Die CCAI-Plattform fordert die Antwort von Dialogflow CX an.

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

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

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

  3. Ein Endnutzer sendet eine Nachricht.

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

  5. CCAI Platform sendet alle Sitzungsvariablen, die in der Chatsitzung erfasst wurden, als Kommentar an das 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 nach dem Senden einer benutzerdefinierten Nutzlast durch einen virtuellen Agenten wird als Sitzungsvariable mit dem Schlüssel „key“ erfasst.

Erfassung aus Intent-Antwort

Flow

  1. Die CCAI-Plattform fordert die Antwort von Dialogflow CX an.

    1. Dialogflow CX kann den Kunden über die Erfüllung an den Server des Kunden zurückleiten.

    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 des Felds session_variable mit capture_target = "payload".

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

Die CCAI Platform sendet alle Sitzungsvariablen, die in der Chatsitzung erfasst wurden, als Kommentar an das 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 mit 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 Variablen für die Sitzung mit dem virtuellen Agenten anzeigen.

  • DISPLAY_ORDER_IN_ADAPTER: Ein Array mit Eigenschaften, mit denen die Reihenfolge angegeben wird, in der Sitzungsvariablen im Agent-Adapter und in CRM-Datensätzen angezeigt werden sollen. Weitere Informationen finden Sie unter Variablen für die Sitzung mit dem virtuellen Agenten anzeigen.

Benutzerdefinierte Sitzungsvariable in CRM hochladen

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

Beispiel für 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 ein Beispiel für eine Unterhaltung, in der die verschiedenen Schritte und die zwischen dem virtuellen Kundenservicemitarbeiter und dem Endnutzer ausgetauschten Nachrichten dargestellt werden.

Schritt 1

Chatnachricht von einem 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 von einem 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 von einem 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 von einem virtuellen Kundenservicemitarbeiter

Virtual Agent is left from the conversation.

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

Benutzerdefinierte Sitzungsvariable in CRM hochladen

Im vorherigen Szenario werden die folgenden Kommentare 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 enthalten prägnante und visuell ansprechende Inhalte in einem kartenähnlichen Format. So können Endnutzer die präsentierten Informationen einfacher aufnehmen. Sie können Inhaltskarten mit Dialogflow CX erstellen und sie mit Titeln, Untertiteln und Textkörper anpassen.

Im folgenden Beispiel werden Inhaltskarten verwendet, um dem Endnutzer Restaurantoptionen zu präsentieren:

Beispiel für eine Inhaltskarte

Eigenschaften der Inhaltskarte

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 Einen Weblink oder einen Deeplink. Das SDK verwendet die Funktionen des Betriebssystems, um die Datei zu öffnen. Nein String
event_params Ein Dictionary mit zusätzlichen Informationen zum Klickereignis. Das SDK verwendet diesen Wert. Nein Wörterbuch

Dialogflow CX-Nutzlast: Validierung hinzufügen und den Inhaltstyp der Karte 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 Kartentitel werden protokolliert, um nachzuverfolgen, auf welche Karten der Endnutzer geklickt hat. Diese Informationen werden im CRM-Chatverlauf aufgezeichnet.

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 Inhaltskarten mit der End User Event API erstellen

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

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

Verwendung:Ereignis für Klicks auf Inhaltskarten erstellen.

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

Methode:POST

Parameter:

Feld Typ Beschreibung
event Objekt
event.name String Verwenden Sie content_card_clicked für Klickereignisse auf Contentkarten.
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 das 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