CTIOperationResponse: Bereichsbezogen, global

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 20 Minuten Lesedauer
  • Die CTIOperationResponse -Skripteinbindung stellt Methoden zum Festlegen und Abrufen von Daten für das aktuelle CTIOperationResponse-Objekt bereit.

    Sie verwenden CTIOperationResponse-Objekte, um Informationen zwischen einem Vorgangshandler und einem Nachrichtenumwandler im Framework ServiceNow Sprachfunktionen zu übergeben.

    Normalerweise ist ein Vorgangs-Handler für das Festlegen von Werten für das CTIOperationResponse-Objekt verantwortlich, während die zugehörige Anforderung verarbeitet wird. Ein Nachrichtenumwandler ist dann dafür verantwortlich, die Werte aus dem CTIOperationRequest-Objekt abzurufen und die CTI-spezifische Nutzlast zu erstellen, die an den Anbieter von Computer-Telefonie-Integratoren (CTI) zurückgesendet wird.

    Das ServiceNow Basissystem stellt Arbeitsvorgangs-Handler und Nachrichtenumwandler bereit, die die Verbindung mit Amazon Connect ermöglichen. Bei der Erstellung von Kontakt-Flows in Amazon Connect gibt es zwei Integrationspunkte zwischen Amazon-Services und einer ServiceNow -Instanz:
    • Amazon Web Services (AWS) Lambda Proxy (AWS Lambda-Funktion aufrufen)
    • AWS Lex-Bot (Kundeneingabe abrufen)
    Die für diese Integrationspunkte verfügbaren Vorgangshandler und Nachrichtenumwandler finden Sie in den Tabellen „Vorgangshandler“ [sn_cti_operation_handler] und „Anbieter-Nachrichtenumwandler“ [sn_cti_provider_msg_transformer].

    Das folgende Vorgangs-Handler-Skript zeigt, wie verschiedene CTIOperationResponse- Methoden verwendet werden, um Werte für das CTIOperationResponse-Objekt festzulegen.

    (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 Vorgangshandlern finden Sie unter Kontakt-Flow für automatisierte Anruferinteraktion konfigurieren.

    Das folgende Nachrichtenumwandler-Skript ruft die im Objekt CTIOperationResponse festgelegten Werte ab und speichert sie in der CTI-spezifischen Nutzlast, die dann an den CTI-Anbieter 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 im Namespace sn_cti_core ausgeführt. Bevor Sie auf die Skripteinbindung CTIOperationRequest zugreifen können, muss das Plugin ServiceNow Sprachfunktionen „ Core“ (sn_cti_core) installiert werden. Informationen zu dieser Installation finden Sie unter ServiceNow-Sprachanwendungen installieren.

    Weitere Informationen zu ServiceNow Sprachfunktionenfinden Sie unter ServiceNow-Sprachfunktionen.

    CTIOperationResponse: CTIOperationResponse (Zeichenfolgeursprung)

    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 vom Framework ServiceNow Sprachfunktionen verwendet, um den aktuellen Anwender ServiceNow Sprachfunktionen ] zu authentifizieren, bevor der angeforderte Vorgangshandler ausgeführt wird, wenn die Kennzeichnung auth_required des Handlers auf „wahr“ festgelegt ist. Die Kennzeichnung auth_required ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung gelten, wird jedoch vom CTI-Anbieter festgelegt.

    Sie können definieren, welche Authentifizierungs-/Autorisierungsbehandlung für Ihre -Implementierung erforderlich ist, indem Sie einen eigenen Handler für Authentifizierungsvorgänge 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.

    Bei Verwendung des von der Instanz bereitgestellten Handlers für den Authentifizierungsvorgang initiiert der -Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Anschließend wird das Authentifizierungstoken im Objekt „sessionAttributes“ des Objekts „CTIOperationResponse“ festgelegt. Der zugeordnete Nachrichtenumwandler übersetzt das Objekt „sessionAttributes“ in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Anbieter.

    Hinweis:
    Wenn das Authentifizierungstoken nicht übergeben wird, schlagen alle Anforderungen zum Ausführen von Vorgangshandlern mit festgelegter Kennzeichnung auth_required fehl. Wenn Sie keine Authentifizierung verwenden, müssen Sie keine Authentifizierungstoken verwalten.
    Das ServiceNow Basissystem stellt Arbeitsvorgangs-Handler und Nachrichtenumwandler bereit, die die Verbindung mit Amazon Connect ermöglichen. Bei der Erstellung von Kontakt-Flows in Amazon Connect gibt es zwei Integrationspunkte zwischen Amazon-Services und einer ServiceNow -Instanz:
    • Amazon Web Services (AWS) Lambda Proxy (AWS Lambda-Funktion aufrufen)
    • AWS Lex-Bot (Kundeneingabe abrufen)
    Die für diese Integrationspunkte verfügbaren Vorgangshandler und Nachrichtenumwandler finden Sie in den Tabellen „Vorgangshandler“ [sn_cti_operation_handler] und „Anbieter-Nachrichtenumwandler“ [sn_cti_provider_msg_transformer].
    Tabelle : 2. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 3. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Das Authentifizierungstoken, das zuvor für das CTIOperationRequest-Objekt festgelegt wurde. 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 Anbieter von Computer-Telefonie-Integrationen (CTI) 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 Methode „CTIOperationResponse - setInteractionSysId(String Id) “ muss vor dem Aufrufen dieser Methode aufgerufen worden sein.

    Tabelle : 6. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 7. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Die sys_id des Interaktionsdatensatzes, der für das CTIOperationResponse-Objekt festgelegt ist. Interaktionsdatensätze befinden sich in der Interaktionstabelle [interaction].

    Wenn die sys_id des Interaktionsdatensatzes nicht festgelegt ist, gibt die Methode NULL zurück.

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

    CTIOperationResponse – getMajorVersion()

    Gibt die Hauptversion des Softwaresatzes für Computer-Telefonie-Integratoren (CTI) für das aktuelle CTIOperationResponse-Objekt zurück.

    Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Nachrichtenumwandler zu verwenden. Sie können dann die Nutzlastunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtenumwandler zu verwenden.

    Tabelle : 8. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 9. Ergebnisse
    Typ Beschreibung
    Nummer Nummer der Hauptversion der CTI-Software.

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

    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 wurde.

    Normalerweise ist dies eine Nachricht, die an den Benutzer zurückgegeben wird, sobald ein Vorgang abgeschlossen ist. Sie können diesen Wert mit der Methode CTIOperationResponse - setMessage(String message) festlegen.

    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 des Softwaresatzes für Computer-Telefonie-Integratoren (CTI) für das aktuelle CTIOperationResponse-Objekt zurück.

    Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Nachrichtenumwandler zu verwenden. Sie können dann die Nutzlastunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtenumwandler zu verwenden.

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

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

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

    CTIOperationResponse – getParameter(Zeichenfolgeschlüssel)

    Gibt den Wert eines angegebenen Schlüssels zurück, der zuvor im aktuellen CTIOperationResponse-Objekt festgelegt wurde.

    Mit den Methoden zum Abrufen/Festlegen von Parametern können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangshandler und einem Nachrichtenumwandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die direkt mit der aktuellen Vorgangsantwort korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, wenn diese Werte erzeugt werden. Verwenden Sie die Methode CTIOperationResponse - setParameter(String key, Object value), um Parameter für das aktuelle CTIOperationResponse-Objekt festzulegen.

    Tabelle : 14. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Der Name des zurückzugebenden Schlüsselwerts.
    Tabelle : 15. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Der Wert des übergebenen Schlüssels. Wenn kein solcher Schlüssel vorhanden ist, wird NULL zurückgegeben.
    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 Methoden zum Abrufen/Festlegen von Parametern können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangshandler und einem Nachrichtenumwandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die direkt mit der aktuellen Vorgangsantwort korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, wenn diese Werte erzeugt werden. Verwenden Sie die Methode CTIOperationResponse - setParameter(String key, Object value), um Parameter für das aktuelle CTIOperationResponse-Objekt festzulegen.

    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-Paare 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(String key)

    Gibt den Wert für einen angegebenen Sitzungsattributschlüssel zurück, der für das aktuelle CTIOperationResponse-Objekt festgelegt ist.

    Mit den Methoden zum Abrufen/Festlegen von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangshandler und einem Nachrichtenumwandler übergeben werden. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Das Objekt „sessionAttribute“ kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, z. B. die Telefonnummer des Kontakts, die für die Dauer einer von einem Anbieter für Computer-Telefonie-Integrationen definierten Sitzung gültig sind. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare für Sitzungsattribute erforderlich sind, da diese Werte während der Verarbeitung verwendet werden. Normalerweise legt der Vorgangs-Handler diese Attribute für das CTIOperationResponse-Objekt fest, indem er die Methode CTIOperationResponse - setSessionAttribute(String key, Object value) aufruft, 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. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Wert des übergebenen Schlüssels. Wenn kein solcher Schlüssel vorhanden ist, wird NULL zurückgegeben.
    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 von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangshandler und einem Nachrichtenumwandler übergeben werden. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Das Objekt „sessionAttribute“ kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, z. B. die Telefonnummer des Kontakts, die für die Dauer einer von einem Anbieter für Computer-Telefonie-Integrationen definierten Sitzung gültig sind. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare für Sitzungsattribute erforderlich sind, da diese Werte während der Verarbeitung verwendet werden. Normalerweise legt der Vorgangs-Handler diese Attribute für das CTIOperationResponse-Objekt fest, indem er die Methode CTIOperationResponse - setSessionAttribute(String key, Object value) aufruft, 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-Paare 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 wurde.

    Diese Statuscodes sollten Standard-HTTP-Statuscodes entsprechen, z. B. 200 für Erfolg, 401 für Autorisierung erforderlich. Normalerweise werden die resultierenden Statuscodes vom Vorgangs-Handler bestimmt und für das CTIOperationResponse-Objekt mit der Methode CTIOperationResponse - setStatusCode(String statusCode) festgelegt. Der Nachrichtenumwandler verwendet diese Methode dann, um den Statuscode in die Nutzlast aufzunehmen, die an den Anbieter des Computer-Telefonie-Integrators zurückgegeben wird.

    Tabelle : 22. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 23. Ergebnisse
    Typ Beschreibung
    Nummer 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(String token)

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

    Dieses Token wird vom Framework ServiceNow Sprachfunktionen verwendet, um den aktuellen Anwender ServiceNow Sprachfunktionen ] zu authentifizieren, bevor der angeforderte Vorgangshandler ausgeführt wird, wenn die Kennzeichnung auth_required des Handlers auf „wahr“ festgelegt ist. Die Kennzeichnung auth_required ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung gelten, wird jedoch vom CTI-Anbieter festgelegt.

    Sie können definieren, welche Authentifizierungs-/Autorisierungsbehandlung für Ihre -Implementierung erforderlich ist, indem Sie einen eigenen Handler für Authentifizierungsvorgänge 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.

    Bei Verwendung des von der Instanz bereitgestellten Handlers für den Authentifizierungsvorgang initiiert der -Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Anschließend wird das Authentifizierungstoken im Objekt „sessionAttributes“ des Objekts „CTIOperationResponse“ festgelegt. Der zugeordnete Nachrichtenumwandler übersetzt das Objekt „sessionAttributes“ in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Anbieter.

    Hinweis:
    Wenn das Authentifizierungstoken nicht übergeben wird, schlagen alle Anforderungen zum Ausführen von Vorgangshandlern mit festgelegter Kennzeichnung auth_required fehl. Wenn Sie keine Authentifizierung verwenden, müssen Sie keine Authentifizierungstoken verwalten.
    Das ServiceNow Basissystem stellt Arbeitsvorgangs-Handler und Nachrichtenumwandler bereit, die die Verbindung mit Amazon Connect ermöglichen. Bei der Erstellung von Kontakt-Flows in Amazon Connect gibt es zwei Integrationspunkte zwischen Amazon-Services und einer ServiceNow -Instanz:
    • Amazon Web Services (AWS) Lambda Proxy (AWS Lambda-Funktion aufrufen)
    • AWS Lex-Bot (Kundeneingabe abrufen)
    Die für diese Integrationspunkte verfügbaren Vorgangshandler und Nachrichtenumwandler finden Sie in den Tabellen „Vorgangshandler“ [sn_cti_operation_handler] und „Anbieter-Nachrichtenumwandler“ [sn_cti_provider_msg_transformer].
    Tabelle : 24. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 25. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Das Authentifizierungstoken, das zum Authentifizieren von Vorgängen verwendet werden soll, für die die Kennzeichnung auth_required festgelegt ist.
    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(Object error)

    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 Anbieter von Computer-Telefonie-Integratoren (CTI) gesendet wird.

    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. Ergebnisse
    Typ Beschreibung
    void
    var response = new sn_cti_core.CTIOperationResponse();
    response.setError(new Error("You did not supply a field"));

    CTIOperationResponse – setInteractionSysId(String 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. Ergebnisse
    Typ Beschreibung
    void
    var response = new sn_cti_core.CTIOperationResponse();
    response.setInteractionSysId('98529cc55380001048e5ddeeff7b120b');
    

    CTIOperationResponse – setMajorVersion(Number majorVersion)

    Legt die Hauptversion der Anbietersoftware des Computer-Telefonie-Integrators (CTI) fest, die die Anforderung für das zugehörige CTIOperationResponse-Objekt sendet.

    Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Nachrichtenumwandler zu verwenden. Sie können dann die Nutzlastunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtenumwandler zu verwenden.

    Tabelle : 30. Parameter
    Name Typ Beschreibung
    majorVersion Nummer Hauptversion der CTI-Anbietersoftware, von der die Vorgangsanforderung stammt.

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

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

    CTIOperationResponse – setMessage(String message)

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

    Normalerweise ist dies eine Nachricht, die nach Abschluss eines Vorgangs an den Benutzer zurückgegeben wird und vom zugehörigen Vorgangs-Handler festgelegt wird. Der Nachrichtenumwandler verwendet dann die Methode CTIOperationResponse - getMessage(), um die Nachricht abzurufen und an den Anbieter der Computer-Telefonie-Integration zurückzugeben.

    Tabelle : 32. Parameter
    Name Typ Beschreibung
    Nachricht Zeichenfolge Nachrichtentext
    Tabelle : 33. Ergebnisse
    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 minderVersion)

    Legt die Nebenversion der Anbietersoftware des Computer-Telefonie-Integrators (CTI) fest, die die Anforderung für das zugehörige CTIOperationResponse-Objekt sendet.

    Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen unterschiedliche Nutzlasten erfordern können. Wenn sich die Nutzlast zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Nachrichtenumwandler zu verwenden. Sie können dann die Nutzlastunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, die die Anforderung in Ihrem Nachrichtenumwandler stellt. Wenn sich die erforderliche Nutzlast zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Nachrichtenumwandler zu verwenden.

    Tabelle : 34. Parameter
    Name Typ Beschreibung
    minorVersion Nummer Nebenversion der CTI-Anbietersoftware, von der die Vorgangsanforderung stammt.

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

    Tabelle : 35. Ergebnisse
    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 zugeordnete CTIOperationResponse-Objekt fest.

    Mit den Methoden zum Abrufen/Festlegen von Parametern können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Vorgangshandler und einem Nachrichtenumwandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, wenn diese Werte verbraucht werden. Normalerweise legt der Vorgangs-Handler diese Parameter für das CTIOperationResponse-Objekt fest, indem er diese Methode aufruft, und der Nachrichtenumwandler verbraucht sie mit der Methode CTIOperationResponse - getParameter(String key) oder CTIOperationResponse - getSParameters().

    Hinweis:
    Sie sollten nur Objekte speichern, die einen JSON.parse(JSON.stringify(object))- Vorgang überdauern können. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß in der gesamten Verarbeitungskette des Vorgangs verbreitet.
    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
    • Float
    • Nummer
    • boolean
    • Datum
    • Objekt
    Tabelle : 37. Ergebnisse
    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(Zeichenfolgeschlüssel, Objektwert)

    Legt das angegebene Sitzungsattribut als Schlüssel-Wert-Paar für das zugeordnete CTIOperationResponse-Objekt fest.

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

    Hinweis:
    Sie sollten nur Objekte speichern, die einen JSON.parse(JSON.stringify(object))- Vorgang überdauern können. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß in der gesamten Verarbeitungskette des Vorgangs verbreitet.
    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 Sitzungsattributschlüssels, unter dem der zugehörige Wert festgelegt werden soll.
    Wert Objekt Festzulegender Wert.
    Gültige Datentypen:
    • Zeichenfolge
    • int
    • Float
    • Nummer
    • boolean
    • Datum
    • Objekt
    Tabelle : 39. Ergebnisse
    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 ganzzahlige Werte 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 Nummer Ganzzahl, die den Status des angeforderten Vorgangs eindeutig identifiziert.
    Tabelle : 41. Ergebnisse
    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);