---
sourceDocument: Xanadu-Konversations-Schnittstellen
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/de-DE/xanadu/conversational-interfaces

 Release :

    - xanadu

ft:locale :

    - de-DE

ft:publication_title :

    - Xanadu-Konversations-Schnittstellen

ft:clusterId :

    - convint

bundleId :

    - convint

workflow :

    - Platform


---

# Virtual Agent Aktionsskripts

# Virtual Agent Aktionsskripts {#ariaid-title1}

* Freigeben Version: Xanadu
* 
* Aktualisiert 1. August 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 9 Minuten Lesedauer

Sie müssen eine Reihe von obligatorischen Workflow-Studio -Aktionen und Subflow-Skripts schreiben, um die Benutzerdaten an VACS zu übergeben, Transformationen anzuwenden und die Antwort an den Endpunkt der Chatoberfläche zurückzusenden.

## Provider und eingehende/ausgehende Skripts {#va-action-scripts__section_c5w_qcb_xlb}

Ein -Anbieter wie Twilio stellt die Chat-Fähigkeit bereit. Anwenderaktionsskripts führen Anbieteraktionen sowie die Konfiguration der anwenderdefinierten Chatintegration für Konversationen für eingehende und ausgehende Umwandleraktionen für Ihren Chatbot oder anwenderdefinierte Konversationen aus. Für jedes Skript werden Beispiele bereitgestellt. Sie enthalten eine Beschreibung der Funktion jedes Skripts sowie die Aktionseingabe und -ausgabe. Außerdem sehen Sie Beispiele für das Skript JSON.

Sie verwenden Workflow-Studio, um diese Skripts zur Transformation von Server- und Client-Nachrichten zu erstellen. Die Skripts für den Anbieter, den Absender und den Umwandler für eingehenden/ausgehenden Datenverkehr sind erforderlich. Sie können die zusätzlichen Skripts verwenden, um Ihrem Chat weitere Funktionen hinzuzufügen.  
{#va-action-scripts__table_qnf_xdb_xlb__entry__3}

| Skriptname | Zweck | Erforderlich (J/N) |
|-|-|-|
| Anbieterattribut | Enthält ein Anbieterauthentifizierungstoken, einen Anwenderbezeichner, Anwendereingaben und Kontextvariablen. | Y |
| Absenderaktion | Bündelt die Anforderung und sendet asynchron eine Antwort über Workflow-Studio oder Integration Hub. | Y |
| Antwortprozessor | Führt Plattformaktionen aus, z. B. das Aktualisieren des Nachrichtenstatus, basierend auf der Antwort, die für eine ausgehende Nachricht empfangen wurde.​ | N |
| Kontextbezogene Aktion | Unterstützt kontextbezogene Aktionen. | N |
| Accountaktion verknüpfen | Stellt einen Rückruf bereit, 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 Chatschnittstelle spezifisches Rendering. | Y |
| Eingehender Umwandler | Optional. Sie können die standardmäßigen 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 den Standard mit Ihrer eigenen eingehenden Transformation für ein bestimmtes Virtual Agent-Serversteuerelement überschreiben. | Y |
[Tabelle : 1. Skripts]

{#va-action-scripts__table_qnf_xdb_xlb}

## Aktionsskript für Anbieterattribute {#va-action-scripts__section_jqc_y2b_xlb}

Das Aktionsskript für Provider-Attribute extrahiert Daten aus der eingehenden Nachricht. Das Skript kennt das Protokoll für die anwenderdefinierte Chatintegration für Konversationen und gibt den Inhalt der eingehenden Nachricht, die Anwender-ID des Absenders und ein optionales Authentifizierungstoken aus.  
Hinweis:  
Wenn das Aktionsskript für Provider-Attribute 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 der Nachrichteninhalt nicht im Transkript angezeigt.
{#va-action-scripts__table_dtk_5fb_xlb__entry__2}

| Eingabe | Ausgabe |
|-|-|
| * Header (JSON): Anforderungsheader * Nutzlast (JSON): Anforderungstextkörper {#va-action-scripts__ul_gkf_dgb_xlb} | * Token (Zeichenfolge): Authentifizierungstoken. * provider_user_id (Zeichenfolge) -- Name des Absenders, z. B. ein Anwendername 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. * Kontextaktion: 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 Kontextaktionsskript auf. * context_vars: Kontextbezogene Variablen, die an eine Konversation übergeben werden sollen, z. B. „outputs.request_context.context_vars = {language: "en"};\`. {#va-action-scripts__ul_sqy_pgb_xlb} {#va-action-scripts__ul_rgm_hgb_xlb} |
[Tabelle : 2. Eingabe/Ausgabe des Aktionsskripts für Anbieterattribute]

{#va-action-scripts__table_dtk_5fb_xlb}  
Abbildung : 1. Beispiel: Workflow-Studio Aktionsskripteingabe für Anbieterattribute, einschließlich Header und Nutzlast  
Abbildung : 2. Beispiel: Workflow-Studio -Provider-Attribute-Aktionsskriptausgabe, einschließlich token, request_context und provider_user_id

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 (Außer Betrieb genommen in Quebec, siehe Absender-Subflow) {#va-action-scripts__section_vwt_ljb_xlb}

Das Absenderaktionsskript weiß, wie eine Nachricht an den Anbieter gesendet wird. Das Skript sollte asynchron einen Workflow-Studio - oder IntegrationHub -Subflow aufrufen. Virtual Agent wird freigegeben, um die Verarbeitung von Nachrichten fortzusetzen, anstatt zu versuchen, externe Anforderungen zu senden.
{#va-action-scripts__table_tb3_qjb_xlb__entry__2}

| 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 „An"-Telefonnummer in einem SMS-Fall. {#va-action-scripts__ul_dj3_5jb_xlb} | Keine |
[Tabelle : 3. Skripteingabe der Absenderaktion]

{#va-action-scripts__table_tb3_qjb_xlb}

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
        // Workflow Studio/Integration Hub
        sn_fd.FlowAPI.startSubflowQuick('sn_va_sms_twilio.va_sms_twilio_adapter_send_sms', sendInputs);
    })(inputs, outputs);

## Subflow-Skript des Senders {#va-action-scripts__section_y2f_3m4_h4b}

Das Subflow-Skript des Absenders weiß, wie eine Nachricht an den Anbieter gesendet wird. Das Skript sollte asynchron einen Workflow-Studio - oder IntegrationHub -Subflow aufrufen. Virtual Agent wird freigegeben, um die Verarbeitung von Nachrichten fortzusetzen, anstatt zu versuchen, externe Anforderungen zu senden. Wenn Sie einen Subflow erstellen, rufen Sie keine Aktion innerhalb des Subflows auf.

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

## Kontextbezogenes Aktionsskript {#va-action-scripts__section_avl_hkb_xlb}

Das Skript für kontextbezogene Aktionen führt spezielle Stichwortaktionen aus, z. B. die Eingabe eines <kbd class="ph userinput">Agent,</kbd> während es sich in einem Thema Virtual Agent befindet, um sofort an einen Servicemitarbeiter übergeben zu werden.
{#va-action-scripts__table_bvl_hkb_xlb__entry__2}

| Eingabe | Ausgabe |
|-|-|
| * Konversation_id (Zeichenfolge) -- Die Konversations-ID. * request_context (JSON): Anforderung, die vom Anbieterattributskript übergeben wird, das die auszuführende Aktion enthält, z. B. (END_CONVERSATION, START_CONVERSATION, AGENT). {#va-action-scripts__ul_cvl_hkb_xlb} | Keine |
[Tabelle : 4. Kontextbezogene Aktion -- Eingabe für Skript]

{#va-action-scripts__table_bvl_hkb_xlb}

Beispiel: Kontextaktionsskript.

    (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". {#va-action-scripts__section_mvv_skb_xlb}

Das Skript für die Aktion „Account verknüpfen" enthält Bezeichner für den Anwender, der die Verknüpfung herstellt. Das Skript enthält auch den Account, mit dem es verknüpft ist.
{#va-action-scripts__table_nvv_skb_xlb__entry__2}

| Eingabe | Ausgabe |
|-|-|
| * provider_user_id (Zeichenfolge): Bezeichner des Anwenders, der die 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, mit dem verknüpft wurde. {#va-action-scripts__ul_ovv_skb_xlb} | Keine |
[Tabelle : 5. Eingabe für Aktionsskript „Account verknüpfen".]

{#va-action-scripts__table_nvv_skb_xlb}

Beispiel: Aktionsskript zum Verknüpfen von Accounts.

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

## Aktionsskript für Antwortprozessor {#va-action-scripts__section_lwm_dlb_xlb}

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.
{#va-action-scripts__table_mwm_dlb_xlb__entry__2}

| Eingabe | Ausgabe |
|-|-|
| * message_id (Zeichenfolge): Bezeichner des sys_cs_message-Datensatzes, der dieser Antwort zugeordnet ist. * Header (JSON): Header, die empfangen werden. * body (Zeichenfolge): Empfangener Textkörper. * Statuscode (Ganzzahl) -- Der empfangene HTTP-Statuscode. {#va-action-scripts__ul_nwm_dlb_xlb} | Keine |
[Tabelle : 6. Skripteingabe für Account-Aktion des Antwortprozessors]

{#va-action-scripts__table_mwm_dlb_xlb}

Beispiel: Aktionsskript für Antwortprozessor.

    (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 {#va-action-scripts__section_sjb_qlb_xlb}

Die ausgehenden Umwandlerskripts konvertieren ausgehende Virtual Agent Nachrichten in ein Protokoll, das sich auf die anwenderdefinierte Chatintegration für Konversationen bezieht.

Eingabe.  
* Rich_control (JSON): Virtual Agent Server-Rich-Control-Komponente, die transformiert werden muss.
* Nutzlast (JSON): Letzte Antwort, die von einer anfordernden Person empfangen wurde.
{#va-action-scripts__ul_n1m_y24_xlb}

Ausgabe

result (Zeichenfolge): Für den Anbieter geeignete zu sendende Komponentennachricht.
{#va-action-scripts__table_tjb_qlb_xlb__entry__2}

| 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 Umwandler für MultiLink | (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); |
[Tabelle : 7. Beispiele: Ausgehende Umwandlerskripts]

{#va-action-scripts__table_tjb_qlb_xlb}

## Eingehende Umwandlerskripts {#va-action-scripts__section_j2g_cmb_xlb}

Die eingehenden Umwandlerskripts konvertieren anwenderdefinierte eingehende Konversationsnachrichten für die Chatintegration in ein Protokoll, das von Virtual Agent erkannt wird. Bestimmt den erforderlichen Wert, der in das Rich Control eingefügt werden soll, das dem Benutzer angezeigt wird.

Eingabe.  
* request_context (JSON): Die vom Anbieterattributskript übergebene Anforderung.
* Rich_control (JSON): Das letzte an die anfordernde Person gesendete Rich Control, das die ursprüngliche „Frage" enthält.
{#va-action-scripts__ul_whj_yf4_xlb}

Ausgabe  
result (JSON): Das vom Server Virtual Agent 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. Angenommen, ein Benutzer hat als Antwort auf eine Themenauswahlkomponente etwas eingegeben, bei dem die NLU helfen könnte, z. B. „Keine dieser Optionen stimmt mit dem überein, was ich möchte".
{#va-action-scripts__ul_dz1_bg4_xlb}
{#va-action-scripts__table_k2g_cmb_xlb__entry__2}

| Name des eingehenden Umwandlers | Skriptbeispiel |
|-|-|
| Adapter „Virtual Agent -- SMS Twilio " \[\], Standard -- Eingehender Textumwandler Zweck: Suchen 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: Ermitteln Sie die sys_id der Option, die der Anwender für diese Auswahlfrage ausgewählt hat. Dieses Skript verwendet den gleichen Algorithmus des ausgehenden Umwandlers. Wenn keine Optionen ausgewählt sind und der Anwender stattdessen etwas eingegeben hat, wird „search_text" festgelegt und in NLU eingespeist, sofern die Option 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); |
[Tabelle : 8. Beispiele: Eingehende Umwandlerskripts]

{#va-action-scripts__table_k2g_cmb_xlb}

