Virtual Agent -Aktionsskripts

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 9 Minuten Lesedauer
  • Sie müssen einen Satz obligatorischer Flow Designer Aktions- und Subflow-Skripts schreiben, um die Benutzerdaten an VACS zu übergeben, Transformationen anzuwenden und die Antwort an den Endpunkt Ihrer Chat-Schnittstelle zurückzusenden.

    Provider und eingehende/ausgehende Skripts

    Ein Provider wie Twilio stellt die Chat-Funktion bereit. Benutzeraktionsskripts führen Anbieteraktionen sowie die Konfiguration der benutzerdefinierten Chat-Integration für eingehende und ausgehende Umwandler für Ihren Chatbot oder benutzerdefinierte Konversationen durch. Beispiele für jedes Skript werden bereitgestellt. Sie enthalten eine Beschreibung der Aufgaben jedes Skripts sowie die Aktionseingabe und Aktionsausgabe. Sie sehen auch Beispiele für das Skript JSON.

    Sie verwenden Flow Designer, um diese Skripts zum Transformieren von Server- und Client-Nachrichten zu erstellen. Die Skripts für Anbieter, Absender und eingehende/ausgehende Umwandler sind erforderlich. Sie können die zusätzlichen Skripts verwenden, um Ihrem Chat weitere Funktionen hinzuzufügen.

    Tabelle : 1. Skripts
    Skriptname Zweck Erforderlich (J/N)
    Anbieterattribut Enthält ein Provider-Authentifizierungstoken, einen Benutzerbezeichner, eine Benutzereingabe und Kontextvariablen. Y
    Absenderaktion

    Bündelt die Anforderung und sendet eine Antwort asynchron über Flow Designer oder Integration Hub.

    Y
    Antwortprozessor Führt Plattformaktionen aus, z. B. eine Aktualisierung des Nachrichtenstatus, die auf einer für eine ausgehende Nachricht empfangenen Antwort basiert​ N
    Kontextbezogene Aktion Unterstützt kontextbezogene Aktionen. N
    Accountaktion verknüpfen Gibt einen Rückruf an, ob die Account-Verknüpfung erfolgreich war oder nicht. N
    Ausgehender Umwandler Transformiert das unterstützte Steuerelement eines Chat-Servers in ein für die Chat-Schnittstelle spezifisches Rendering. Y
    Eingehender Umwandler Optional. Sie können die Standard-Rich Controls verwenden, wenn sie für Ihren Chat-Anbieter gelten. Sie müssen nicht für jedes Eingabesteuerelement eine separate eingehende Transformation angeben. Wenn ein Standardverhalten nicht funktioniert, können Sie das Standardverhalten mit Ihrer eigenen eingehenden Transformation für ein bestimmtes Virtual Agent-Serversteuerelement überschreiben. Y

    Aktionsskript für Anbieterattribute

    Das Aktionsskript für Anbieterattribute extrahiert Daten aus der eingehenden Nachricht. Das Skript kennt das benutzerdefinierte Konversationschat-Integrationsprotokoll und gibt den Inhalt der eingehenden Nachricht, die Benutzer-ID des Absenders und ein optionales Authentifizierungstoken aus.
    Hinweis:
    Wenn Ihr Aktionsskript für Anbieterattribute eine kontextbezogene Aktion enthält, muss Ihr Skript sowohl request_context.contextual_action als auch request_context.typed_value enthalten, damit die Benutzereingabe (die mit einer kontextbezogenen Aktion abgeglichen wird) in das Transkript aufgenommen wird. Wenn Sie request_context.typed_value nicht festlegen, wird dieser Nachrichteninhalt nicht im Transkript angezeigt.
    Tabelle : 2. Eingabe/Ausgabe des Aktionsskripts für Anbieterattribute
    Eingabe Ausgabe
    • Header (JSON): Anforderungsheader
    • Nutzlast (JSON): Anforderungstext
    • Token (Zeichenfolge) – Authentifizierungstoken.
    • provider_user_id (Zeichenfolge) – Name des Absenders, z. B. ein Benutzername in einer Slack-Nachricht.
    • request_context (JSON): Tatsächlich empfangener Inhalt.
      • typed_value: Typisierter Inhalt, z. B. eine Antwort auf eine Frage.
      • attachment_value.url: URL des Anhangs.
      • attachment_value.content_type: Inhaltstyp des Anhangs.
      • attachment_value.name: Dateiname des Anhangs.
      • Kontextbezogene Aktion: Auszuführende Aktion, z. B. END_CONVERSATION, START_CONVERSATION, AGENT. Dieses Skript untersucht die eingehende Nachricht. Wenn ein erkanntes Stichwort vorhanden ist, kann eine der Aktionen festgelegt werden, z. B. „outputs.request_context.contextual_action“ = „END_CONVERSATION“;. Das Framework erkennt dieses Stichwort und ruft das kontextbezogene Aktionsskript auf.
      • context_vars – Kontextbezogene Variablen, die an eine Konversation übergeben werden sollen, z. B. „outputs.request_context.context_vars = {language: "en"};".
    Abbildung : 1. Beispiel: Flow Designer Provider-Attribute-Aktionsskript-Eingabe, einschließlich Kopfzeilen und Nutzlast
    Eine Aktionseingabe in Flow Designer mit Headern und Nutzlast, die auf die Verwendung von JSON festgelegt sind.
    Abbildung : 2. Beispiel: Flow Designer Provider-Attribute-Aktionsskriptausgabe, einschließlich token, request_context und provider_user_id
    Eine Aktionsausgabe in Flow Designer gibt die Werte token, request_context und provider_user_id an.

    Beispiel: Aktionsskript für Anbieterattribute.

    (function execute(inputs, outputs) {
        var headers = (inputs.headers);
        var payload = (inputs.payload);
    
        // check if an authentication token was included. this is optional.
        var smsUtil = new VASMSTwilioUtil();
        outputs.token = JSON.stringify(smsUtil.getToken(headers, payload));
    
        var data = payload.data;
        var request_context = {}; 
        // inspect the actual message. it could be an MMS (attachment) or raw text
        if (data['MediaUrl0']) {
            var attachment_value = {};
            attachment_value.url = data['MediaUrl0'];
            attachment_value.content_type = data['MediaContentType0'];
            attachment_value.name = smsUtil.getFileName(attachment_value.url , attachment_value.content_type);
            request_context.attachment_value = attachment_value;
        } else {
           request_context.typed_value = data['Body'];
        }
    
        // set the mandatory outputs
        outputs.request_context = request_context;
        outputs.provider_user_id = data.From;
    })(inputs, outputs);

    Absenderaktionsskript (In Quebec außer Betrieb genommen, siehe Absender-Subflow)

    Das Absenderaktionsskript weiß, wie eine Nachricht an den Anbieter gesendet wird. Das Skript sollte einen Flow Designer - oder IntegrationHub -Subflow asynchron aufrufen. Virtual Agent kann die Verarbeitung von Nachrichten fortsetzen, anstatt zu versuchen, externe Anforderungen zu senden.

    Tabelle : 3. Eingabe des Absenderaktionsskripts
    Eingabe Ausgabe
    • Ergebnisse (JSON): Array der zu sendenden Nachrichten.
    • Nutzlast (JSON): Letzte Nutzlast, die von einer anfordernden Person empfangen wurde.
    • app_inbound_id (Zeichenfolge) – Bezeichner des Absenders, z. B. die Telefonnummer „Von“ in einem SMS-Fall.
    • channel_user_id (Zeichenfolge) – Bezeichner des Empfängers, z. B. die Telefonnummer „An“ in einem SMS-Fall.
    Keine

    Beispiel: Absenderaktionsskript.

    (function execute(inputs, outputs) {
        var results = inputs.results;
        // transform the inputs to something this custom subflow knows about
        var sendInputs = {
            app_inbound_id : inputs["app_inbound_id"],
            channel_user_id: inputs["channel_user_id"],
            messages: JSON.stringify(results)
        };
    
        // invoke an asynchronous subflow which will send the external request. so this sender script will immediately return,
        // freeing up the chat server thread to do further message processing while putting the external request work on the
        // Flow Designer/Integration Hub
        sn_fd.FlowAPI.startSubflowQuick('sn_va_sms_twilio.va_sms_twilio_adapter_send_sms', sendInputs);
    })(inputs, outputs);

    Subflow-Skript des Absenders

    Das Absender-Subflow-Skript weiß, wie eine Nachricht an den Anbieter gesendet wird. Das Skript sollte einen Flow Designer - oder IntegrationHub -Subflow asynchron aufrufen. Virtual Agent kann die Verarbeitung von Nachrichten fortsetzen, anstatt zu versuchen, externe Anforderungen zu senden. Führen Sie beim Erstellen eines Subflows keine Aktion aus, die eine Aktion innerhalb des Subflows aufruft.

    }else{
      outputs.sendmessage = true;
      messages = inputs.results.results;
      outputs.from = from;
      outputs.to = to;
      outputs.messages = getMessages(messages);
    }

    Kontextbezogenes Aktionsskript

    Das kontextbezogene Aktionsskript führt spezielle Stichwortaktionen aus, z. B. die Eingabe eines Agenten innerhalb eines Virtual Agent -Themas, um sofort an einen Servicemitarbeiter übergeben zu werden.

    Tabelle : 4. Kontextbezogenes Aktionsskript Eingabe
    Eingabe Ausgabe
    • Konversation_id (Zeichenfolge) – Die Konversations-ID.
    • request_context (JSON): Anforderung, die vom Provider-Attributskript übergeben wird, das die auszuführende Aktion enthält, z. B. (END_CONVERSATION, START_CONVERSATION, AGENT).
    Keine

    Beispiel: Kontextbezogenes Aktionsskript.

    (function execute(inputs, outputs) {
      var contextual_action = inputs.request_context.contextual_action;
      if (contextual_action === "END_CONVERSATION") {
        sn_cs.VASystemObject.endConversation(inputs.conversation_id);
      } else if (contextual_action === "AGENT") {
        sn_cs.VASystemObject.switchToLiveAgent(inputs.conversation_id);
      } else if (contextual_action === "START_CONVERSATION") {
        sn_cs.VASystemObject.startConversation(inputs.conversation_id);
      }
    })(inputs, outputs);

    Skript für Aktion „Account verknüpfen“.

    Das Aktionsskript „Account verknüpfen“ enthält Bezeichner für den Benutzer, der eine Verknüpfung herstellt. Das Skript enthält auch den Account, mit dem es verknüpft ist.

    Tabelle : 5. Eingabe für Aktionsskript „Account verknüpfen“.
    Eingabe Ausgabe
    • provider_user_id (Zeichenfolge) – Bezeichner des Anwenders, der eine Verknüpfung herstellt, z. B. eine Telefonnummer in einem SMS-Fall.
    • status (Zeichenfolge) – Erfolg/Fehler.
    • user_id (Zeichenfolge) – ServiceNow user_sys_id für den Account, der mit verknüpft wurde.
    Keine

    Beispiel: Aktionsskript „Account verknüpfen“.

    (function execute(inputs, outputs) {
      
      var richControl = (inputs.rich_control);
      var value = richControl.value;
      outputs.result = richControl.header + ': ' + value.action;
      
    })(inputs, outputs);

    Aktionsskript des Antwortprozessors

    Das Aktionsskript des Antwortprozessors führt Spezialaktionen aus, die auf der Antwort auf eine Anforderung zum Senden einer Nachricht basieren. Das Framework führt bereits eine grundlegende Nachverfolgung des Nachrichtenstatus durch.

    Tabelle : 6. Skripteingabe für Antwortprozessor-Account-Aktion
    Eingabe Ausgabe
    • message_id (Zeichenfolge) – Bezeichner des sys_cs_message-Datensatzes, der dieser Antwort zugeordnet ist.
    • headers (JSON): Empfangene Header.
    • body (Zeichenfolge) – Empfangener Text.
    • Statuscode (Ganzzahl): Der empfangene HTTP-Statuscode.
    Keine

    Beispiel: Aktionsskript des Antwortprozessors.

    (function execute(inputs, outputs) {
        gs.debug("Response from provider: message_id = " + inputs.message_id + ", status_code = " +
          inputs.status_code + ", headers = " + JSON.stringify(inputs.headers) + ", body = " + inputs.body);
    })(inputs, outputs);

    Ausgehende Umwandlerskripts

    Die ausgehenden Umwandlerskripts konvertieren ausgehende Virtual Agent Nachrichten in ein Protokoll, das sich auf die benutzerdefinierte Chat-Integration für Konversationen bezieht.

    Eingabe.

    • Rich_control (JSON): Virtual Agent Server-Rich-Steuerungskomponente, die transformiert werden muss.
    • Nutzlast (JSON): Letzte Antwort, die von einer anfordernden Person empfangen wurde.

    Ausgabe

    result (Zeichenfolge) – Zu sendende Provider-angemessene Komponentennachricht.

    Tabelle : 7. Beispiele: Ausgehende Umwandlerskripts
    Name des ausgehenden Umwandlers Skriptbeispiel
    Adapter „ Virtual Agent – SMS Twilio“ – Ausgehender Umwandler für Standardtext [].
    (function execute(inputs, outputs) {
      var rich_control = inputs.rich_control;
      outputs.result = rich_control['label'];
    })(inputs, outputs);
    Adapter „ Virtual Agent – SMS Twilio“ – Ausgehender Umwandler für Standardlink [].
    (function execute(inputs, outputs) {
      var richControl = (inputs.rich_control);
      var value = richControl.value;
      outputs.result = richControl.header + ': ' + value.action;
    })(inputs, outputs);
    Adapter „Virtual Agent – SMS Twilio “ Standardauswahl Ausgehender Umwandler
    (function execute(inputs, outputs) {
      var rich_control = inputs.rich_control;
      var options = rich_control['options'];
      if (options && options.length > 0) {
          var optionsLength = options.length;
          var picker = rich_control['label'] || "";
          for (var x = 0; x < optionsLength; x++) {
              picker += "\n" + (x+1) +  ": " + options[x].label;
          }
      }
      outputs.text_message = picker;
    })(inputs, outputs);
    Adapter „Virtual Agent – SMS Twilio “ [], Standard Ausgehender Multi-Link-Umwandler
    (function execute(inputs, outputs) {
      var rich_control = inputs.rich_control;
      var linkResult = rich_control['header'];
      var totalValues = rich_control['values'].length;
      for (var i = 0; i < totalValues; i++) {
        linkResult = linkResult + '\n';
        var linkValue = rich_control['values'][i];
        linkResult = linkResult + '\n' + linkValue['description'] + ': ' + linkValue['action'];
      }
      outputs.result  = linkResult;
    })(inputs, outputs);
    Adapter „Virtual Agent – SMS Twilio “ Standardkarte Ausgehender Umwandler
    (function execute(inputs, outputs) {
      var richControl = (inputs.rich_control);
      var data = JSON.parse(richControl.data);    
      var tableTitle = data.title;
      var fields = data.fields;
      var subtitle = data.subtitle;
      var url = data.url;    
      var message = subtitle ? getCardLine(tableTitle, subtitle) : tableTitle + "\n";
      for (var i= 0; i<fields.length; i++) {
         message += getCardLine(fields[i].fieldLabel, fields[i].fieldValue);
      }
      message += url;
      outputs.result = message;
    
      function getCardLine(key, value) {
          if (value == '' || value == null || key == '' || key == null)
              return;
          return key + ": " + value + "\n";
      }
    })(inputs, outputs);

    Eingehende Umwandlerskripts

    Die eingehenden Umwandlerskripts konvertieren eingehende benutzerdefinierte Chat-Integrationsnachrichten in ein Protokoll, das Virtual Agent erkennt. Er bestimmt den erforderlichen Wert, der in das Rich Control eingefügt werden soll, das dem Benutzer angezeigt wird.

    Eingabe.

    • request_context (JSON): Die Anforderung, die vom Provider-Attributskript übergeben wird.
    • Rich_control (JSON): Die letzte an die anfordernde Person gesendete Rich-Steuerung, die die ursprüngliche „Frage“ enthält.

    Ausgabe

    result (JSON): Das vom Virtual Agent -Server erwartete Ergebnis. Wenn die anfordernde Person auf eine Themenauswahl antwortet, ist dies die sys_id des Themas. Wenn die anfordernde Person auf einen Eingabetext antwortet, ist dies die Textantwort.
    • Wert: sys_id oder Textwert.
    • search_text – Text, der verwendet wird, wenn die anfordernde Person etwas Unerwartetes ausgewählt hat. Zum Beispiel hat ein Benutzer als Antwort auf eine Themenauswahlkomponente etwas eingegeben, bei dem der NLU helfen könnte, z. B. „Keine dieser Optionen stimmt mit dem überein, was ich möchte“.
    Tabelle : 8. Beispiele: Eingehende Umwandlerskripts
    Name des eingehenden Umwandlers Skriptbeispiel
    Adapter „Virtual Agent – SMS Twilio “ [], Standard – Eingehender Umwandler für Text

    Zweck: Finden Sie die Textantwort auf die gestellte InputText-Frage

    (function execute(inputs, outputs) {
      var requestContext = inputs.request_context;
      var richControl = inputs.rich_control;
      var typedValue = requestContext['typed_value'];
      var attachmentValue = requestContext['attachment_value'];
      var smsUtil = new VASMSTwilioUtil();
      var result = {};
      if(richControl['itemType'] == 'image' || richControl['itemType'] == 'file')	{
        if (attachmentValue && attachmentValue.content_type.includes('image')) {
          result.url = attachmentValue.url;
          result.content_type = attachmentValue.content_type;
          result.name = attachmentValue.name;
          result.headers = attachmentValue.headers;
        } else if (typedValue) {
          result.url = typedValue;
          var contentType = smsUtil.getContentType(typedValue);
          if (typeof contentType === 'undefined')
            gs.error('Please enter a valid image link. Inbound image link: {0}', typedValue);
          else
            result.content_type = contentType;
        } else {
          gs.error('Please upload an image or enter a valid image link.');
        }
      }
      result['value'] = typedValue;
      result['search_text'] = '';
      outputs.result = result;
    })(inputs, outputs);
    Adapter „Virtual Agent – SMS Twilio “ – Standard – Eingehender Umwandler für Auswahl

    Zweck: Suchen Sie die sys_id der Option, die der Benutzer für diese Auswahlfrage ausgewählt hat. Dieses Skript verwendet denselben Algorithmus wie der ausgehende Umwandler. Wenn keine Optionen ausgewählt sind und der Benutzer stattdessen etwas eingegeben hat, wird „search_text“ festgelegt und in NLU eingespeist, sofern es in dieser Instanz aktiviert ist.

    (function execute(inputs, outputs) {
      var request_context = inputs.request_context;
      var rich_control = inputs.rich_control;
      var selectedValue = request_context["typed_value"];
      var result = {};
      result["value"] = "";
      result["search_text"] = "";
      if (rich_control['options']) {
        var options = rich_control['options'];
        var optionsLength = options.length;
        selectedValue === Number(selectedValue)
        if (selectedValue > 0 && selectedValue <= optionsLength) {
            var selectedOption = options[selectedValue - 1];
            result["value"] = selectedOption.value;
        } else {
            result["search_text"] = request_context["typed_value"];
        }
      }
      outputs.result = result;
    })(inputs, outputs);