CTIOperationResponse: Bereichsbezogen, Global

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 20 Minuten Lesedauer
  • Die CTIOperationResponse Die Skripteinbindung bietet Methoden zum Festlegen und Abrufen von Daten für das aktuelle CTIOperationResponse-Objekt.

    Sie verwenden CTIOperationResponse-Objekte, um Informationen zwischen einem Vorgangs-Handler und einem Nachrichtenumwandler innerhalb von zu übergeben ServiceNow Sprachfunktionen Framework.

    Normalerweise ist ein Vorgangs-Handler dafür verantwortlich, Werte für das CTIOperationResponse-Objekt festzulegen, während er die zugehörige Anforderung verarbeitet. Ein Nachrichtentransformator ist dann dafür verantwortlich, die Werte aus dem CTIOperationRequest-Objekt abzurufen und die CTI-spezifische Nutzlast zu erstellen, die an den Anbieter des Computer Telephony Integrator (CTI) zurückgesendet wird.

    Die ServiceNow Das Basissystem bietet Handler für Arbeitsvorgänge und Nachrichtentransformatoren, die eine Verbindung mit Amazon Connect ermöglichen. Beim Erstellen von Kontakt-Flows in Amazon Connect gibt es zwei Integrationspunkte zwischen Amazon-Services und einem ServiceNow Instanz:
    • Amazon Web Services (AWS) Lambda-Proxy (AWS Lambda-Funktion aufrufen)
    • AWS Lex-Bot (Kundeneingabe abrufen)
    Sie finden die verfügbaren Vorgangs-Handler und Nachrichtentransformatoren für diese Integrationspunkte in den Tabellen „Vorgangs-Handler“ [sn_cti_Operation_Handler] und „Anbieternachrichtumwandler“ [sn_cti_Provider_msg_transormer].

    Das folgende Vorgangs-Handler-Skript zeigt, wie verschiedene verwendet werden CTIOperationResponse Methoden zum Festlegen von Werten für das CTIOperationResponse-Objekt.

    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response) {
    
      try {
        var state = request.getParameter('$state');
        if(!state) {
          state = 'new';
        }
        var phone = request.getParameter('contact.phone');
        var username = request.getParameter('contact.username');
        var someDataPresent = phone || username;
        if(!someDataPresent) {
          throw 'phone or username must be supplied';
        }
        if('new' === state) {
          var userGr = null;
          if(phone || username) {
            userGr = new GlideRecordSecure('sys_user');
            var qc = null;
            if(phone) {
              qc = userGr.addQuery('phone', phone);
              qc.addOrCondition('mobile_phone', phone);
              qc.addOrCondition("home_phone", phone);
            }
            if(username) {
              if(qc) {
                qc.addOrCondition('user_name', username);
              } else {
                qc = userGr.addQuery('user_name', username);
              }
            }
            // If there was criteria then run the query
            if(qc) {
              userGr.query();
            } else {
              userGr = null;
            }
          }
    			
          var foundUser = userGr && userGr.next();
    
          var phonelogGr = new GlideRecord('sn_openframe_phone_log');
          phonelogGr.initialize();
          phonelogGr.setValue('call_id', request.getParameter('contact.id'));
          phonelogGr.setValue('phone_number', phone);
          if(foundUser) {
            phonelogGr.setValue('contact', userGr.getUniqueValue());
          }
          phonelogGr.insert();
    			
          var interactionGr = new GlideRecordSecure('interaction');
          interactionGr.initialize();
          interactionGr.setValue('type', 'phone');
          interactionGr.setValue('short_description', 'User Contact via Phone: ' + phone);
          interactionGr.setValue('channel_metadata_table', 'sn_openframe_phone_log');
          interactionGr.setValue('channel_metadata_document',phonelogGr.getUniqueValue());
    			
          if(foundUser) {
            interactionGr.setValue('opened_for', userGr.getUniqueValue());
            response.setSessionAttribute('snc_user_first_name', userGr.getValue('first_name'));
            response.setSessionAttribute('snc_user_last_name', userGr.getValue('last_name'));
            response.setSessionAttribute('snc_user_sys_id', userGr.getUniqueValue());
          } else {
            response.setSessionAttribute('snc_user_sys_id', "USER_NOT_FOUND");
          }
          interactionGr.setValue('state', 'new');
    
          var interactionId = interactionGr.insert();
    
          response.setStatusCode(200);
          response.setMessage('success');
          response.setSessionAttribute('interactionTable', 'interaction');
          response.setSessionAttribute('interactionId', interactionId);
    
        }
      } catch(e) {
        ctx.setError(e);
      }
    
    })(request, response);

    Weitere Informationen zum Erstellen von Vorgangs-Handlern finden Sie unter Konfigurieren Sie einen Kontakt-Flow für eine automatisierte Anruferinteraktion .

    Das folgende Nachrichtenumwandler-Skript ruft die im CTIOperationResponse-Objekt festgelegten Werte ab und speichert sie in der CTI-spezifischen Nutzlast, die dann an den CTI-Provider zurückgesendet wird.

    (function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
    	// AWS Connect Lambda expects name value pairs only
    	var out = {};
    	for(var k in operationResponse.getSessionAttributes()) {
    		out[k] = operationResponse.getSessionAttributes()[k];
    	}
    	out.statusCode = operationResponse.getStatusCode();
    	out.message = operationResponse.getMessage();
    	httpResponse.setBody(out);
    })(operationResponse, httpResponse);

    Diese Skripteinbindung wird in ausgeführt sn_cti_Core Namespace. Bevor Sie auf zugreifen können CTIOperationRequest Skripteinbindung, ServiceNow Sprachfunktionen Das Plugin „Core“ (sn_cti_Core) muss installiert sein. Informationen zu dieser Installation finden Sie unter Installieren Sie ServiceNow Voice-Anwendungen .

    Für zusätzliche Informationen zu ServiceNow Sprachfunktionen, Siehe ServiceNow-Sprachfunktionen .

    CTIOperationResponse: CTIOperationResponse (Zeichenfolgenursprung)

    Instanziiert ein CTIOperationResponse-Objekt.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    Keine
    var response = new sn_cti_core.CTIOperationResponse();
    response.setMinorVersion(3);

    CTIOperationResponse – getAuthToken()

    Gibt das Authentifizierungstoken zurück, das für das CTIOperationResponse-Objekt festgelegt wurde.

    Dieses Token wird von verwendet ServiceNow Sprachfunktionen Framework zur Authentifizierung des aktuellen ServiceNow Sprachfunktionen Anwender, bevor der angeforderte Vorgangs-Handler ausgeführt wird, falls der Handler auth_requiredKennzeichnung ist auf „wahr“ festgelegt. Die auth_requiredKennzeichnung ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_Operation_Handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung betragen, wird jedoch vom CTI-Anbieter festgelegt.

    Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, indem Sie einen eigenen Authentifizierungsvorgang-Handler erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.

    Wenn der von der Instanz bereitgestellte Authentifizierungsvorgang-Handler verwendet wird, initiiert der Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Dann wird das Authentifizierungstoken im Objekt sessionAttributes des CTIOperationResponse-Objekts festgelegt. Der zugehörige Nachrichtenumwandler übersetzt das sessionAttributes-Objekt in die CTI-spezifische Nutzlast und sendet es dann an den CTI-Anbieter.

    Hinweis:
    Wenn das Authentifizierungstoken nicht übergeben wird, werden alle Anforderungen zur Ausführung von Vorgangs-Handlern mit übergeben auth_requiredKennzeichnungssatz schlägt fehl. Wenn Sie keine Authentifizierung verwenden, müssen Sie keine Authentifizierungstoken verwalten.
    Die ServiceNow Das Basissystem bietet Handler für Arbeitsvorgänge und Nachrichtentransformatoren, die eine Verbindung mit Amazon Connect ermöglichen. Beim Erstellen von Kontakt-Flows in Amazon Connect gibt es zwei Integrationspunkte zwischen Amazon-Services und einem ServiceNow Instanz:
    • Amazon Web Services (AWS) Lambda-Proxy (AWS Lambda-Funktion aufrufen)
    • AWS Lex-Bot (Kundeneingabe abrufen)
    Sie finden die verfügbaren Vorgangs-Handler und Nachrichtentransformatoren für diese Integrationspunkte in den Tabellen „Vorgangs-Handler“ [sn_cti_Operation_Handler] und „Anbieternachrichtumwandler“ [sn_cti_Provider_msg_transormer].
    Tabelle : 2. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 3. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Das zuvor für das CTIOperationRequest-Objekt festgelegte Authentifizierungstoken. Wenn nicht festgelegt, wird Null zurückgegeben.
    var response = new sn_cti_core.CTIOperationResponse();
    var token = response.getAuthToken();

    CTIOperationResponse – getError()

    Gibt das Fehlerobjekt zurück, das dem aktuellen CTIOperationResponse-Objekt zugeordnet ist.

    Sie können diese Informationen verwenden, um die Nutzlast zu formulieren, die an den CTI-Anbieter (Computer Telephony Integration) zurückgegeben wird.

    Tabelle : 4. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 5. Ergebnisse
    Typ Beschreibung
    Objekt Informationen zum Vorgangsfehler. Das Format dieses Objekts wird vom CTI-Anbieter bestimmt. Wenn kein Fehler vorhanden ist, wird Null zurückgegeben.
    (function( /*CTIProviderResponseExecutionContext*/ ctx, /*CTIOperationRequest*/ operationRequest, /*CTIOperationResponse*/ operationResponse, /*HTTPResponse*/ httpResponse) {
        var sessionAttributes = {},
            intentResponse;
        var statusCode = -1;
        var message = 'Unprocessed';
        if (operationResponse) {
            statusCode = operationResponse.getStatusCode();
            sessionAttributes = operationResponse.getSessionAttributes();
            message = operationResponse.getMessage();
            var error = operationResponse.getError();
            if (error) {
                sessionAttributes.error = error;
            }
        }
        if (sn_cti_core.CTIRequestDispatcher.Constants.HTTP.Status.AUTH_REQUIRED.code === statusCode) {
            //first call for a secure action without authentication token
            sessionAttributes.statusCode = 401;
            sessionAttributes.message = message;
            intentResponse = {
                sessionAttributes: sessionAttributes,
                dialogAction: {
                    type: 'Close',
                    fulfillmentState: 'Fulfilled',
                    message: {
                        contentType: 'PlainText',
                        content: 'This operation requires authentication. Say authenticate for authentication.'
                    }
                }
            };
        } else if ('DialogCodeHook' === operationRequest.getParameter('$$invocationSource')) {
            //pass back authToken and interactionId
            sessionAttributes.authToken = operationRequest.getAuthToken();
            sessionAttributes.interactionId = operationRequest.getInteractionSysId();
    		var originalSlots = operationRequest.getParameter('$$slots');
            var responseParameters = operationResponse ? operationResponse.getParameters() : {};
            responseParameters = responseParameters ? responseParameters : {};
            // See if we processing happened and we got a dialogAction
    		var responseDialogAction = responseParameters['dialogAction'];
    		// Default dialog action
            var dialogAction = {
                type: 'Delegate',
                slots: originalSlots
            };
    		// If the response doesn't contain an override replay the inputs
            if (responseDialogAction) {
                // We bypassed dialoghook so delegate and pass through inputs
                dialogAction = responseDialogAction;
            }
            intentResponse = {
                sessionAttributes: sessionAttributes,
                dialogAction: dialogAction
            };
        } else {
            // Override required session attributes
            sessionAttributes.statusCode = statusCode;
            sessionAttributes.message = message;
            // Build response template
            intentResponse = {
                sessionAttributes: sessionAttributes,
                dialogAction: {
                    type: 'Close',
                    fulfillmentState: 'Fulfilled',
                    message: {
                        contentType: 'PlainText',
                        content: message
                    }
                }
            };
        }
        httpResponse.setBody(intentResponse);
    })(ctx, operationRequest, operationResponse, httpResponse);

    CTIOperationResponse – getInteractionSysId()

    Gibt die sys_ID des Interaktionsdatensatzes zurück, der der Anrufsitzung zugeordnet ist, die für das CTIOperationResponse-Objekt festgelegt wurde.

    Die CTIOperationResponse – setInteractionSysId(Zeichenfolgen-ID) Die Methode muss vor dem Aufrufen dieser Methode aufgerufen worden sein.

    Tabelle : 6. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 7. Ergebnisse
    Typ Beschreibung
    Zeichenfolge SYS_ID des Interaktionsdatensatzes für das CTIOperationResponse-Objekt.

    Wenn die sys_ID des Interaktionsdatensatzes nicht festgelegt ist, gibt die Methode null zurück.

    Tabelle: Interaktion [Interaktion]

    var request = new sn_cti_core.CTIOperationResponse();
    var interactionId = request.getInteractionSysId();
    

    CTIOperationResponse – getMajorVersion()

    Gibt die Hauptversion des Computertelefonie-Integrators (CTI) für das aktuelle CTIOperationResponse-Objekt zurück.

    Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNow Instanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Nachrichtenumwandler zu haben. Sie können dann die Nutzlastunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtentransformatoren zu verwenden.

    Tabelle : 8. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 9. Ergebnisse
    Typ Beschreibung
    Anzahl Hauptversionsnummer der CTI-Software.

    Wenn die Hauptversion nie festgelegt wurde, wird zurückgegeben 1 .

    var request = new sn_cti_core.CTIOperationResponse();
    var majorVersion = response.getMajorVersion();

    CTIOperationResponse – getMessage()

    Gibt die Nachrichtenzeichenfolge zurück, die für das aktuelle CTIOperationResponse-Objekt festgelegt ist.

    Normalerweise ist dies eine Nachricht, die an den Anwender zurückgesandt wird, sobald ein Vorgang abgeschlossen ist. Sie können diesen Wert mit festlegen CTIOperationResponse – setMessage(Zeichenfolgennachricht) Methode.

    Tabelle : 10. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 11. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Nachrichtentext. Wenn keine Nachricht vorhanden ist, wird Null zurückgegeben.
    (function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
      // AWS Connect Lambda expects name value pairs only
      var out = {};
      for(var k in operationResponse.getSessionAttributes()) {
        out[k] = operationResponse.getSessionAttributes()[k];
      }
      out.statusCode = operationResponse.getStatusCode();
      out.message = operationResponse.getMessage();
      httpResponse.setBody(out);
    })(operationResponse, httpResponse);

    CTIOperationResponse – getMinorVersion()

    Gibt die Nebenversion der Software „Computer Telephony Integrator“ (CTI) für das aktuelle CTIOperationResponse-Objekt zurück.

    Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNow Instanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Nachrichtenumwandler zu haben. Sie können dann die Nutzlastunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtentransformatoren zu verwenden.

    Tabelle : 12. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 13. Ergebnisse
    Typ Beschreibung
    Anzahl Nebenversionsnummer der Nutzlast, die dieser Interaktion zugeordnet ist.

    Wenn die Nebenversion nie festgelegt wurde, wird zurückgegeben 0 .

    var request = new sn_cti_core.CTIOperationResponse();
    var minorVersion = request.getMinorVersion();

    CTIOperationResponse – getParameter(Zeichenfolgenschlüssel)

    Gibt den Wert eines angegebenen Schlüssels zurück, der zuvor für das aktuelle CTIOperationResponse-Objekt festgelegt wurde.

    Mit den GET/Set-Parametermethoden können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangs-Handler und einem Nachrichtenumwandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel/Wert-Paare von Daten enthalten, die direkt mit der aktuellen Vorgangsantwort korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, da er diese Werte erzeugt. Verwenden Sie CTIOperationResponse – setParameter(Zeichenfolgenschlüssel, Objektwert) Methode zum Festlegen von Parametern für das aktuelle CTIOperationResponse-Objekt.

    Tabelle : 14. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Der Name des zurückzugebenden Schlüsselwerts.
    Tabelle : 15. Rückgaben
    Typ Beschreibung
    Zeichenfolge Der Wert des übergebenen Schlüssels. Wenn kein solcher Schlüssel vorhanden ist, gibt Null zurück.
    var request = new sn_cti_core.CTIOperationResponse();
    var parm = request.getParameter('contact.phone');

    CTIOperationResponse – getParameters()

    Gibt die Schlüssel-Wert-Paare für alle Parameter zurück, die zuvor für das aktuelle CTIOperationResponse-Objekt festgelegt wurden.

    Mit den GET/Set-Parametermethoden können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangs-Handler und einem Nachrichtenumwandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel/Wert-Paare von Daten enthalten, die direkt mit der aktuellen Vorgangsantwort korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, da er diese Werte erzeugt. Verwenden Sie CTIOperationResponse – setParameter(Zeichenfolgenschlüssel, Objektwert) Methode zum Festlegen von Parametern für das aktuelle CTIOperationResponse-Objekt.

    Tabelle : 16. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 17. Ergebnisse
    Typ Beschreibung
    Objekt Eine Zuordnung von Schlüssel-Wert-Paaren, die zuvor für das CTIOperationResponse-Objekt festgelegt wurden. Diese Schlüssel-Wert-Paare sind Freiform und werden durch die Anforderungen des Vorgangs-Handlers definiert. Die zurückgegebenen Werte sind entweder Zeichenfolgen oder Zahlen.
    (function( /*CTIProviderResponseExecutionContext*/ ctx, /*CTIOperationRequest*/ operationRequest, /*CTIOperationResponse*/ operationResponse, /*HTTPResponse*/ httpResponse) {
      var sessionAttributes = {},
          intentResponse;
      var statusCode = -1;
      var message = 'Unprocessed';
      if (operationResponse) {
        statusCode = operationResponse.getStatusCode();
        sessionAttributes = operationResponse.getSessionAttributes();
        message = operationResponse.getMessage();
        var error = operationResponse.getError();
        if (error) {
          sessionAttributes.error = error;
        }
      }
      if (sn_cti_core.CTIRequestDispatcher.Constants.HTTP.Status.AUTH_REQUIRED.code === statusCode) {
        //first call for a secure action without authentication token
        sessionAttributes.statusCode = 401;
        sessionAttributes.message = message;
        intentResponse = {
          sessionAttributes: sessionAttributes,
          dialogAction: {
            type: 'Close',
            fulfillmentState: 'Fulfilled',
            message: {
              contentType: 'PlainText',
              content: 'This operation requires authentication. Say authenticate for authentication.'
            }
          }
        };
      } else if ('DialogCodeHook' === operationRequest.getParameter('$$invocationSource')) {
          //pass back authToken and interactionId
          sessionAttributes.authToken = operationRequest.getAuthToken();
          sessionAttributes.interactionId = operationRequest.getInteractionSysId();
          var originalSlots = operationRequest.getParameter('$$slots');
          var responseParameters = operationResponse ? operationResponse.getParameters() : {};
          responseParameters = responseParameters ? responseParameters : {};
          // See if processing happened and we got a dialogAction
          var responseDialogAction = responseParameters['dialogAction'];
          // Default dialog action
          var dialogAction = {
            type: 'Delegate',
            slots: originalSlots
          };
          // If the response doesn't contain an override replay the inputs
          if (responseDialogAction) {
            // We bypassed dialoghook so delegate and pass through inputs
            dialogAction = responseDialogAction;
          }
            intentResponse = {
                sessionAttributes: sessionAttributes,
                dialogAction: dialogAction
            };
        } else {
          // Override required session attributes
          sessionAttributes.statusCode = statusCode;
          sessionAttributes.message = message;
          // Build response template
          intentResponse = {
            sessionAttributes: sessionAttributes,
            dialogAction: {
              type: 'Close',
              fulfillmentState: 'Fulfilled',
              message: {
                contentType: 'PlainText',
                content: message
              }
            }
          };
      }
      httpResponse.setBody(intentResponse);
    })(ctx, operationRequest, operationResponse, httpResponse);

    CTIOperationResponse – getSessionAttribute(Zeichenfolgenschlüssel)

    Gibt den Wert für einen angegebenen Sitzungsattribut-Schlüssel zurück, der im aktuellen CTIOperationResponse-Objekt festgelegt ist.

    Mit den Methoden zum Abrufen/Festlegen des Sitzungsattributs können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangs-Handler und einem Nachrichtenumwandler übergeben werden. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Das sessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, z. B. die Telefonnummer des Kontakts, die für die Dauer einer vom Computer-Telefonie-Integrationsanbieter definierten Sitzung gültig sind. Der Vorgangs-Handler bestimmt, welche Sitzungsattribut-Schlüssel-Wert-Paare benötigt werden, da er diese Werte während der Verarbeitung verwendet. Normalerweise legt der Vorgangs-Handler diese Attribute für das CTIOperationResponse-Objekt fest, indem er aufruft CTIOperationResponse – setSessionAttribute (Zeichenfolgenschlüssel, Objektwert) Methode und der Nachrichtenumwandler verbraucht die Attribute mit dieser Methode.

    Tabelle : 18. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Der Name des zurückzugebenden Schlüsselwerts.
    Tabelle : 19. Rückgaben
    Typ Beschreibung
    Zeichenfolge Wert des übergebenen Schlüssels. Wenn kein solcher Schlüssel vorhanden ist, gibt Null zurück.
    var response = new sn_cti_core.CTIOperationResponse();
    var phoneAttribute = response.getSessionAttribute('contact.phone');

    CTIOperationResponse – getSessionAttributes()

    Gibt die Schlüssel-Wert-Paare für alle Sitzungsattribute zurück, die zuvor für das aktuelle CTIOperationResponse-Objekt festgelegt wurden.

    Mit den Methoden zum Abrufen/Festlegen des Sitzungsattributs können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangs-Handler und einem Nachrichtenumwandler übergeben werden. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Das sessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, z. B. die Telefonnummer des Kontakts, die für die Dauer einer vom Computer-Telefonie-Integrationsanbieter definierten Sitzung gültig sind. Der Vorgangs-Handler bestimmt, welche Sitzungsattribut-Schlüssel-Wert-Paare benötigt werden, da er diese Werte während der Verarbeitung verwendet. Normalerweise legt der Vorgangs-Handler diese Attribute für das CTIOperationResponse-Objekt fest, indem er aufruft CTIOperationResponse – setSessionAttribute (Zeichenfolgenschlüssel, Objektwert) Methode und der Nachrichtenumwandler verbraucht die Attribute mit dieser Methode.

    Tabelle : 20. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 21. Ergebnisse
    Typ Beschreibung
    Objekt Eine Zuordnung von Schlüssel-Wert-Paaren, die zuvor für das CTIOperationResponse-Objekt festgelegt wurden. Diese Schlüssel-Wert-Paare sind Freiform und werden durch die Anforderungen des Vorgangs-Handlers definiert. Die zurückgegebenen Werte sind entweder Zeichenfolgen oder Zahlen.
    (function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
      // AWS Connect Lambda expects name value pairs only
      var out = {};
      for(var k in operationResponse.getSessionAttributes()) {
        out[k] = operationResponse.getSessionAttributes()[k];
      }
      out.statusCode = operationResponse.getStatusCode();
      out.message = operationResponse.getMessage();
      httpResponse.setBody(out);
    })(operationResponse, httpResponse);

    CTIOperationResponse – getStatusCode()

    Gibt den Statuscode zurück, der für das aktuelle CTIOperationResponse-Objekt festgelegt ist.

    Diese Statuscodes müssen standardmäßigen HTTP-Statuscodes entsprechen, z. B. 200 für Erfolg, 401 für erforderliche Autorisierung. Normalerweise werden die resultierenden Statuscodes vom Vorgangs-Handler bestimmt und im CTIOperationResponse-Objekt mit festgelegt CTIOperationResponse – setStatusCode(String statusCode) Methode. Der Nachrichtenumwandler verwendet diese Methode, um den Statuscode in die Nutzlast einzubeziehen, die an den Anbieter des Computertelefonie-Integrators zurückgegeben wird.

    Tabelle : 22. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 23. Ergebnisse
    Typ Beschreibung
    Anzahl Statuscode des aktuellen Vorgangs. Wenn kein Statuscode festgelegt wurde, wird -1 zurückgegeben.
    (function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
      // AWS Connect Lambda expects name value pairs only
      var out = {};
      for(var k in operationResponse.getSessionAttributes()) {
        out[k] = operationResponse.getSessionAttributes()[k];
      }
      out.statusCode = operationResponse.getStatusCode();
      out.message = operationResponse.getMessage();
      httpResponse.setBody(out);
    })(operationResponse, httpResponse);

    CTIOperationResponse – setAuthToken (Zeichenfolgentoken)

    Legt ein Authentifizierungstoken für das aktuelle CTIOperationResponse-Objekt fest.

    Dieses Token wird von verwendet ServiceNow Sprachfunktionen Framework zur Authentifizierung des aktuellen ServiceNow Sprachfunktionen Anwender, bevor der angeforderte Vorgangs-Handler ausgeführt wird, falls der Handler auth_requiredKennzeichnung ist auf „wahr“ festgelegt. Die auth_requiredKennzeichnung ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_Operation_Handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung betragen, wird jedoch vom CTI-Anbieter festgelegt.

    Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, indem Sie einen eigenen Authentifizierungsvorgang-Handler erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.

    Wenn der von der Instanz bereitgestellte Authentifizierungsvorgang-Handler verwendet wird, initiiert der Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Dann wird das Authentifizierungstoken im Objekt sessionAttributes des CTIOperationResponse-Objekts festgelegt. Der zugehörige Nachrichtenumwandler übersetzt das sessionAttributes-Objekt in die CTI-spezifische Nutzlast und sendet es dann an den CTI-Anbieter.

    Hinweis:
    Wenn das Authentifizierungstoken nicht übergeben wird, werden alle Anforderungen zur Ausführung von Vorgangs-Handlern mit übergeben auth_requiredKennzeichnungssatz schlägt fehl. Wenn Sie keine Authentifizierung verwenden, müssen Sie keine Authentifizierungstoken verwalten.
    Die ServiceNow Das Basissystem bietet Handler für Arbeitsvorgänge und Nachrichtentransformatoren, die eine Verbindung mit Amazon Connect ermöglichen. Beim Erstellen von Kontakt-Flows in Amazon Connect gibt es zwei Integrationspunkte zwischen Amazon-Services und einem ServiceNow Instanz:
    • Amazon Web Services (AWS) Lambda-Proxy (AWS Lambda-Funktion aufrufen)
    • AWS Lex-Bot (Kundeneingabe abrufen)
    Sie finden die verfügbaren Vorgangs-Handler und Nachrichtentransformatoren für diese Integrationspunkte in den Tabellen „Vorgangs-Handler“ [sn_cti_Operation_Handler] und „Anbieternachrichtumwandler“ [sn_cti_Provider_msg_transormer].
    Tabelle : 24. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 25. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Das Authentifizierungstoken, das zum Authentifizieren von Vorgängen mit verwendet werden soll auth_requiredKennzeichnungssatz.
    var response = new sn_cti_core.CTIOperationResponse();
    var authenticate = <Your authentication code here>; // Authenticate the user
    if (authenticated) {
    	var claims = {
    		"interactionId":interactionGr.sys_id.toString()
    	};
    	var jwt = new sn_cti_core.AuthHelpers().generateJWT(claims);
    	response.setAuthToken(jwt);
    }

    CTIOperationResponse – setError(Objektfehler)

    Legt das Fehlerobjekt im aktuellen CTIOperationResponse-Objekt fest.

    Sie können das Fehlerobjekt in der Komponente verwenden, um die Nutzlast zu formulieren, die an den CTI-Anbieter (Computer Telephony Integrator) gesendet werden soll.

    Tabelle : 26. Parameter
    Name Typ Beschreibung
    error Objekt Informationen zum Fehler, der bei der Verarbeitung des angeforderten Vorgangs erkannt wurde. Das Format dieses Objekts wird vom CTI-Anbieter bestimmt.
    Tabelle : 27. Rückgaben
    Typ Beschreibung
    void
    var response = new sn_cti_core.CTIOperationResponse();
    response.setError(new Error("You did not supply a field"));

    CTIOperationResponse – setInteractionSysId(Zeichenfolgen-ID)

    Legt die sys_ID des Interaktionsdatensatzes fest, der der Vorgangsanforderung für das aktuelle CTIOperationResponse-Objekt zugeordnet ist.

    Tabelle : 28. Parameter
    Name Typ Beschreibung
    sys_id Zeichenfolge Die sys_ID, die für die aktuelle Interaktion festgelegt werden soll.
    Tabelle : 29. Rückgaben
    Typ Beschreibung
    void
    var response = new sn_cti_core.CTIOperationResponse();
    response.setInteractionSysId('98529cc55380001048e5ddeeff7b120b');
    

    CTIOperationResponse – setMajorVersion(Number MAJORVERSION)

    Legt die Hauptversion der CTI-Anbietersoftware (Computer Telephony Integrator) fest, die die Anforderung für das zugehörige CTIOperationResponse-Objekt stellt.

    Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNow Instanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Nachrichtenumwandler zu haben. Sie können dann die Nutzlastunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtentransformatoren zu verwenden.

    Tabelle : 30. Parameter
    Name Typ Beschreibung
    majorVersion Anzahl Hauptversion der CTI-Anbietersoftware, die die Vorgangsanforderung stellt.

    Wenn dieser Wert zuvor nicht festgelegt wurde, wird zurückgegeben 1 .

    Tabelle : 31. Rückgaben
    Typ Beschreibung
    void
    var request = new sn_cti_core.CTIOperationResponse();
    request.setMajorVersion(2);

    CTIOperationResponse – setMessage(Zeichenfolgennachricht)

    Legt eine Textnachricht für das aktuelle CTIOperationResponse-Objekt fest.

    Normalerweise ist dies eine Nachricht, die an den Anwender zurückgesandt wird, sobald ein Vorgang abgeschlossen ist, und die vom zugehörigen Vorgangs-Handler festgelegt wird. Der Nachrichtenumwandler verwendet dann CTIOperationResponse – getMessage() Methode, um die Nachricht abzurufen und an den Integrationsanbieter für die Computertelefonie zurückzugeben.

    Tabelle : 32. Parameter
    Name Typ Beschreibung
    Nachricht Zeichenfolge Nachrichtentext
    Tabelle : 33. Rückgaben
    Typ Beschreibung
    void
    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {	
      var notes = '', lang = request.getLanguage();
      try { 
    		
        var interactionGr = request.getInteractionRecord();
    
        var now_GR = new GlideRecord('sys_user');
        if(interactionGr && now_GR.get(interactionGr.opened_for.toString())) {	
        if(now_GR.locked_out == true) {
            notes += gs.getMessageLang("User record found locked. Unlocking the account.\n", lang);
            now_GR.locked_out=false;
            now_GR.update();
            response.setStatusCode(200);
            response.setMessage(gs.getMessageLang("Your account has been unlocked.", lang));
          } else {
            notes += gs.getMessageLang("User record not locked.\n", lang);
            response.setStatusCode(200);
            response.setMessage(gs.getMessageLang("Your account doesn't seem to be locked.", lang));
          }	
        } else {
          notes += gs.getMessageLang("User record not found. Transfer to agent\n", lang);
          response.setStatusCode(302);
          response.setMessage(gs.getMessageLang("I am unable to find your record. Let me transfer to someone who can help.", lang));
        }
        if(interactionGr) {
          interactionGr.work_notes = notes;
          interactionGr.update();
        }
      } catch(e) {
        ctx.setError(e);
      }
    })(request, response, ctx);

    CTIOperationResponse – setMinorVersion(Number minorversion)

    Legt die Nebenversion der CTI-Anbietersoftware (Computer Telephony Integrator) fest, die die Anforderung für das zugehörige CTIOperationResponse-Objekt stellt.

    Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNow Instanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Nachrichtenumwandler zu haben. Sie können dann die Nutzlastunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtentransformatoren zu verwenden.

    Tabelle : 34. Parameter
    Name Typ Beschreibung
    minorVersion Anzahl Nebenversion der CTI-Anbietersoftware, die die Vorgangsanforderung stellt.

    Wenn dieser Wert zuvor nicht festgelegt wurde, wird zurückgegeben 0 .

    Tabelle : 35. Rückgaben
    Typ Beschreibung
    void
    var response = new sn_cti_core.CTIOperationResponse();
    response.setMinorVersion(3);

    CTIOperationResponse – setParameter(Zeichenfolgenschlüssel, Objektwert)

    Legt das angegebene Schlüssel-Wert-Paar für das zugehörige CTIOperationResponse-Objekt fest.

    Mit den GET/Set-Parametermethoden können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangs-Handler und einem Nachrichtenumwandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel/Wert-Paare von Daten enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, da er diese Werte verbraucht. Normalerweise legt der Vorgangs-Handler diese Parameter für das CTIOperationResponse-Objekt fest, indem diese Methode aufgerufen wird, und der Nachrichtenumwandler verbraucht sie mithilfe von CTIOperationResponse – getParmeter(Zeichenfolgenschlüssel) Oder CTIOperationResponse – getSParameters() Methode.

    Hinweis:
    Sie sollten nur Objekte speichern, die überleben können JSON.Parse(JSON.stringify(object)) Vorgang. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß über die gesamte Verarbeitungskette des Vorgangs weitergegeben.
    Zum Beispiel:
    var x = {
      "string": 'abc',
      "int": 123,
      "float": 1.234,
      "number": new Number(3),
      "boolean": true,
      "date": new Date(2006, 0, 2, 15, 4, 5),
      "object": {
        "string": 'abc',
        "int": 123,
        "float": 1.234,
        "number": new Number(3),
        "boolean": true,
        "date": new Date(2006, 0, 2, 15, 4, 5)
      },
      "function": function(abc) {
    
      }
    }
    var stringify = JSON.stringify(x);
    gs.info(stringify);
    var hydrate = JSON.parse(stringify);
    var stringify2 = JSON.stringify(hydrate);
    gs.info(stringify2);
    
    Erzeugt:
    {"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
    {"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
    
    Tabelle : 36. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Name des Schlüssels, unter dem der zugeordnete Wert gespeichert werden soll.
    Wert Objekt Wert, der für den Schlüssel gespeichert werden soll.
    Gültige Datentypen:
    • Zeichenfolge
    • int
    • Gleitkommazahl
    • Nummer
    • boolean
    • Datum
    • Objekt
    Tabelle : 37. Rückgaben
    Typ Beschreibung
    void
    var response = new sn_cti_core.CTIOperationResponse();
    response.setParameter('contact.phone', '+15552222345');
    response.setParameter('contact.okToCall', true);
    response.setParameter('contact.address', {
        street: '1234 Main St'
        city: 'API City',
        zip: 91335
    });

    CTIOperationResponse – setSessionAttribute (Zeichenfolgenschlüssel, Objektwert)

    Legt das angegebene Sitzungsattribut-Schlüssel-Wert-Paar für das zugehörige CTIOperationResponse-Objekt fest.

    Mit den Methoden zum Abrufen/Festlegen des Sitzungsattributs können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangs-Handler und einem Nachrichtenumwandler übergeben werden. Das sessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, die für die Dauer einer vom Computer-Telefonie-Integrationsanbieter definierten Sitzung gültig sind. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Der Vorgangs-Handler bestimmt, welche Sitzungsattribut-Schlüssel-Wert-Paare benötigt werden, da er diese Werte verbraucht. Normalerweise legt der Vorgangs-Handler diese Attribute für das CTIOperationResponse-Objekt fest, indem diese Methode aufgerufen wird, und der Nachrichtenumwandler ruft die Attribute mit ab CTIOperationResponse – getSessionAttribute(Zeichenfolgenschlüssel) Oder CTIOperationResponse – getSessionAttribute() Methode.

    Hinweis:
    Sie sollten nur Objekte speichern, die überleben können JSON.Parse(JSON.stringify(object)) Vorgang. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß über die gesamte Verarbeitungskette des Vorgangs weitergegeben.
    Zum Beispiel:
    var x = {
      "string": 'abc',
      "int": 123,
      "float": 1.234,
      "number": new Number(3),
      "boolean": true,
      "date": new Date(2006, 0, 2, 15, 4, 5),
      "object": {
        "string": 'abc',
        "int": 123,
        "float": 1.234,
        "number": new Number(3),
        "boolean": true,
        "date": new Date(2006, 0, 2, 15, 4, 5)
      },
      "function": function(abc) {
    
      }
    }
    var stringify = JSON.stringify(x);
    gs.info(stringify);
    var hydrate = JSON.parse(stringify);
    var stringify2 = JSON.stringify(hydrate);
    gs.info(stringify2);
    
    Erzeugt:
    {"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
    {"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
    
    Tabelle : 38. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Name des Sitzungsattribut-Schlüssels, unter dem der zugeordnete Wert festgelegt werden soll.
    Wert Objekt Festzulegender Wert.
    Gültige Datentypen:
    • Zeichenfolge
    • int
    • Gleitkommazahl
    • Nummer
    • boolean
    • Datum
    • Objekt
    Tabelle : 39. Rückgaben
    Typ Beschreibung
    void
    var response = new sn_cti_core.CTIOperationResponse();
    response.setSessionAttribute('contact.phone', '+15552222345');
    response.setSessionAttribute('contact.okToCall', true);
    response.setSessionAttribute('contact.address', {
        street: '1234 Main St'
        city: 'API City',
        zip: 91335
    });

    CTIOperationResponse – setStatusCode(Number statusCode)

    Legt den Statuscode der aktuellen Vorgangsanforderung für das CTIOperationResponse-Objekt fest.

    Sie können beliebige Ganzzahlwerte verwenden, um den Status zu definieren. Es wird jedoch empfohlen, die HTTP-Statuscodes zu emulieren, z. B. 200 = OK/Erfolg, 400 = ungültige Anforderung, 401 = nicht autorisiert.

    Tabelle : 40. Parameter
    Name Typ Beschreibung
    statusCode Anzahl Ganzzahl, die den Status des angeforderten Vorgangs eindeutig identifiziert.
    Tabelle : 41. Rückgaben
    Typ Beschreibung
    void
    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {	
      var notes = '', lang = request.getLanguage();
      try { 
    		
        var interactionGr = request.getInteractionRecord();
    
        var now_GR = new GlideRecord('sys_user');
        if(interactionGr && now_GR.get(interactionGr.opened_for.toString())) {	
        if(now_GR.locked_out == true) {
            notes += gs.getMessageLang("User record found locked. Unlocking the account.\n", lang);
            now_GR.locked_out=false;
            now_GR.update();
            response.setStatusCode(200);
            response.setMessage(gs.getMessageLang("Your account has been unlocked.", lang));
          } else {
            notes += gs.getMessageLang("User record not locked.\n", lang);
            response.setStatusCode(200);
            response.setMessage(gs.getMessageLang("Your account doesn't seem to be locked.", lang));
          }	
        } else {
          notes += gs.getMessageLang("User record not found. Transfer to agent\n", lang);
          response.setStatusCode(302);
          response.setMessage(gs.getMessageLang("I am unable to find your record. Let me transfer to someone who can help.", lang));
        }
        if(interactionGr) {
          interactionGr.work_notes = notes;
          interactionGr.update();
        }
      } catch(e) {
        ctx.setError(e);
      }
    })(request, response, ctx);