CTIOperationRequest – Scoped, Global

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 33 Minuten Lesedauer
  • Die API CTIOperationRequest stellt Methoden zum Festlegen und Abrufen von Daten zum aktuellen CTIOperationRequest-Objekt bereit.

    Sie verwenden CTIOperationRequest-Objekte, um Informationen zwischen einem Nachrichtentransformer und einem Vorgangs-Handler innerhalb des Frameworks ServiceNow Sprachfunktionen zu übergeben.

    Normalerweise ist ein Nachrichtentransformer dafür verantwortlich, eine eingehende CTI-spezifische Nutzlast zu analysieren und die Nutzlastdaten für ein zugeordnetes CTIOperationRequest-Objekt festzulegen. Ein Vorgangs-Handler ist dann dafür verantwortlich, die Informationen aus dem CTIOperationRequest-Objekt abzurufen und die Daten zur Verarbeitung des angeforderten Vorgangs zu verwenden.

    Das ServiceNow Basissystem stellt Handler für Arbeitsvorgänge und Nachrichtentransformer bereit, die die Verbindung mit Amazon Connect ermöglichen. Beim Erstellen 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)
    Sie finden die verfügbaren Vorgangs-Handler und Nachrichten-Umwandler für diese Integrationspunkte in den Tabellen „Vorgangs-Handler“ [sn_cti_operation_handler] und „Provider-Nachrichten-Umwandler“ [sn_cti_provider_msg_transformer].

    Eine Nutzlast wird aus einer externen Quelle an eine ServiceNow -Instanz übergeben, z. B. von einem CTI-Anbieter (Computer Telephony Integration), der eine Vorgangsanforderung sendet. Wenn eine Anforderung empfangen wird, analysiert ein Nachrichtentransformator die Nutzlast und verwendet die festgelegten CTIOperationRequest-Methoden, um Nutzlastwerte wie den Namen des Vorgangshandlers für ein vorgangs- und kontaktspezifisches CTIOperationRequest-Objekt festzulegen.

    Das folgende Nachrichtentransformer-Skript analysiert beispielsweise die übergebene JSON-Nutzlast und legt die Werte fest, die für den zugeordneten Vorgangs-Handler im CTIOperationRequest-Objekt erforderlich sind.

    {	
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
    	var event = jsonPayload.event;
    	if (event) {
    	  var details = event.Details;
    	  if (details) {					
    	    operationRequest.setOperationName(details.Parameters['sn_operation']);
    	    var contactData = details.ContactData;
    	    if(contactData) {
    		// Call id should be surfaced in openframe call log so it can be tied to transcription later
    		operationRequest.setParameter('contact.call_id', contactData.ContactId);
    		for(var ck in contactData.CustomerEndpoint) {
    		  operationRequest.setParameter('contact.' + ck, contactData.CustomerEndpoint[ck]);
    	       }
    	       operationRequest.setParameter('contact.id', contactData.ContactId);
    	       operationRequest.setParameter('contact.phone', contactData.CustomerEndpoint.Address);
    	    }
    	    var parameters = details.Parameters;
    	    if (parameters) {
    		for (var pk in parameters) {
    		  switch(pk) {
    		    case 'interactionId':
    			operationRequest.setInteractionSysId(parameters[pk]);
    			break;
    		    case 'authToken':
    			operationRequest.setAuthToken(parameters[pk]);
    			break;
    		    case 'language':
    			operationRequest.setLanguage(parameters[pk]);
    			break;
    								
    		    default:
    			operationRequest.setParameter(pk, parameters[pk]);
    		 }						
                }
              }					
            }
          }
        }
      } catch(e) {
    		ctx.setError(e);
      }
    })(httpRequest, operationRequest, ctx);

    Nachdem der Nachrichtentransformator die Analyse der übergebenen Nutzlast abgeschlossen hat, instanziiert das Framework ServiceNow Sprachfunktionen den angegebenen Vorgangs-Handler. Der Betriebs-Handler verwendet die get-Methoden der CTIOperationResponse- API, um die Informationen abzurufen, die er vom zugeordneten CTIOperationRequest-Objekt benötigt, um den angeforderten Vorgang zu verarbeiten.

    Das folgende Vorgangs-Handler-Skript speichert beispielsweise Werte, die für das CTIOperationRequest-Objekt im Interaktionsdatensatz festgelegt wurden, der dem Anruf zugeordnet ist.

    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, ctx) {
      // Returns the sys_id of the interaction record.
      var interactionSysId = request.getInteractionSysId();
      var number = request.getParameter('number');
      var addComment = request.getParameter('add_comment');
      addComment = addComment ? addComment.toLowerCase() : addComment;
      addComment = 'yes' === addComment || 'true' === addComment || '1' === addComment;
      var workNotes = request.getParameter('work_notes');
      var message = gs.getMessage('Thankyou');
      var interactionGr = request.getInteractionRecord();
      var openedFor = interactionGr ? interactionGr.getValue('opened_for') : null;
      if (openedFor && number && addComment && workNotes) {
        var now_GR = new GlideRecordSecure('incident');
        now_GR.addQuery('caller_id', openedFor);
        now_GR.addQuery('number', number);
        now_GR.query();
        if (now_GR.next()) {
          now_GR.work_notes += workNotes;
          now_GR.update();
          message = now_GR.getMessage('Your comment was added');
        }
      }
      response.setStatusCode(200);
      response.setMessage(message);
    })(request, response, ctx);

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

    Diese API wird im Namespace sn_cti_core ausgeführt. Bevor Sie auf die CTIOperationRequest- API zugreifen können, muss das Plugin ServiceNow Sprachfunktionen (sn_cti_core) aktiviert werden. Weitere Informationen zum Aktivieren von ServiceNow Sprachfunktionenfinden Sie unter ServiceNow Voice-Anwendungen installieren.

    Weitere Informationen zu ServiceNow Sprachfunktionenfinden Sie unter ServiceNow Voice.

    CTIOperationRequest – CTIOperationRequest(String Origin)

    Instantiiert ein CTIOperationRequest-Objekt.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    origin Zeichenfolge Optional. Ursprung der Anforderung. In der Regel der Name des Computer-Telefonie-Integrationsanbieters.

    Standard: null

    var request = new sn_cti_core.CTIOperationRequest('AWS Connect');
    request.setSessionAttribute('contact.phone', '+15552222345');
    request.setSessionAttribute('contact.okToCall', true);
    request.setSessionAttribute('contact.address', {
        street: '1234 Main St'
        city: 'API City',
        zip: 91335
    });

    CTIOperationRequest – getAuthToken()

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

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

    Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, 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-Provider dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.

    Wenn Sie den von der Instanz bereitgestellten Handler für den Authentifizieren-Vorgang verwenden, initiiert der Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen vom Benutzer eingegebenen PIN. Anschließend wird das Authentifizierungstoken im Objekt „sessionAttributes“ des Objekts „CTIOperationResponse“ festgelegt. Der zugeordnete Nachrichtentransformer übersetzt das Objekt „sessionAttributes“ in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Provider.

    Hinweis:
    Wenn das Authentifizierungstoken nicht übergeben wird, schlagen alle Anforderungen zum Ausführen von Vorgangs-Handlern mit der Kennzeichnung auth_required fehl. Wenn Sie keine Authentifizierung verwenden, müssen Sie keine Authentifizierungstoken verwalten.
    Das ServiceNow Basissystem stellt Handler für Arbeitsvorgänge und Nachrichtentransformer bereit, die die Verbindung mit Amazon Connect ermöglichen. Beim Erstellen 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)
    Sie finden die verfügbaren Vorgangs-Handler und Nachrichten-Umwandler für diese Integrationspunkte in den Tabellen „Vorgangs-Handler“ [sn_cti_operation_handler] und „Provider-Nachrichten-Umwandler“ [sn_cti_provider_msg_transformer].
    Tabelle : 2. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 3. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Das dem aktuellen ServiceNow Sprachfunktionen Benutzer zugeordnete Authentifizierungstoken.
    (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);

    CTIOperationRequest – getInteractionRecord()

    Gibt den Interaktions-GlideRecord zurück, der der Vorgangsanforderung zugeordnet ist.

    Eine Interaktion stellt eine Kundenanfrage nach Unterstützung dar, die per Chat, Telefon oder persönlich gestellt wird. Interaktionen können zum Zuweisen an Warteschlangen weitergeleitet oder Agenten direkt zugewiesen werden. Interaktionsdatensätze werden in der Interaktionstabelle [interaction] gespeichert und können alle Arten von Daten enthalten, die Service-Account-Interaktionen mit einem Kunden für eine bestimmte Sitzung beschreiben.

    Interaktionsdatensätze werden einem CTIOperationRequest-Objekt über die Methode CTIOperationRequest – setInteractionSysId(String Id) zugeordnet. Diese Methode wird normalerweise vom Nachrichtenumwandler aufgerufen und muss vor dem Aufruf der getInteractionRecord()- Methode aufgerufen werden.

    Tabelle : 4. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 5. Ergebnisse
    Typ Beschreibung
    GlideRecord Interaktions-GlideRecord-Objekt, das dem aktuellen CTIOperationRequest-Objekt zugeordnet ist. Wenn die sys_id des Interaktionsdatensatzes nicht für das CTIOperationRequest-Objekt festgelegt wurde, wird NULL zurückgegeben.
    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {	
      var notes = '', lang = request.getLanguage();
      try { 
        // Returns the interaction record (GlideRecord) set on the passed in CTIOperationRequest object		
        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);

    CTIOperationRequest – getInteractionSysId()

    Gibt die sys_id des Interaktionsdatensatzes zurück, der dem aktuellen CTIOperationRequest-Objekt zugeordnet ist.

    Die Methode CTIOperationRequest – setInteractionSysId(String Id) muss vor dem Aufruf 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 aktuelle CTIOperationRequest-Objekt festgelegt ist.

    Wenn die sys_id nicht für das zugeordnete CTIOperationRequest-Objekt festgelegt wurde, gibt die Methode NULL zurück.

    (function( /*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, ctx) {
      // Returns the sys_id of the interaction record associated with the CTIOperationRequest object.
      var interactionSysId = request.getInteractionSysId();
      var number = request.getParameter('number');
      var addComment = request.getParameter('add_comment');
      addComment = addComment ? addComment.toLowerCase() : addComment;
      addComment = 'yes' === addComment || 'true' === addComment || '1' === addComment;
      var workNotes = request.getParameter('work_notes');
      var message = gs.getMessage('Thankyou');
      var interactionGr = request.getInteractionRecord();
      var openedFor = interactionGr ? interactionGr.getValue('opened_for') : null;
      if (openedFor && number && addComment && workNotes) {
        var now_GR = new GlideRecordSecure('incident');
        now_GR.addQuery('caller_id', openedFor);
        now_GR.addQuery('number', number);
        now_GR.query();
        if (now_GR.next()) {
        now_GR.work_notes += workNotes;
        now_GR.update();
          message = gs.getMessage('Your comment was added');
        }
      }
      response.setStatusCode(200);
      response.setMessage(message);
    })(request, response, ctx);

    CTIOperationRequest – getLanguage()

    Gibt den ISO 639.1-Sprachcode zurück, der für das aktuelle CTIOperationRequest-Objekt festgelegt wurde.

    Wenn Sie die vom Kunden bevorzugte Sprache verwenden, können Sie die von der Plattform bereitgestellten Internationalisierungs- und Lokalisierungsfunktionen verwenden, um Nachrichten und andere Kommunikation mit dem zugehörigen Anrufer anzupassen.

    Normalerweise ruft ein Vorgangs-Handler die getLanguage()-Methode auf, und der Nachrichten-Umwandler legt die Sprache für das CTIOperationRequest-Objekt fest, indem er die CTIOperationRequest – setLanguage(String languageCode) -Methode aufruft.

    Tabelle : 8. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 9. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Der ISO 639.1-Sprachcode, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist. Wenn der Sprachcode nicht festgelegt ist, wird enzurückgegeben.

    Das folgende Beispiel zeigt einen Vorgangs-Handler, der getLanguage() aufruft, um die bevorzugte Sprache des Anrufers zu erhalten.

    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response) {
      // Obtain the contact's preferred language
      var notes = "", announcement, lang = request.getLanguage();
      try {
    		
        var interactionGr = request.getInteractionRecord();
    		
        announcement = gs.getMessageLang("We are currently experiencing issues with VPN. If you are calling about VPN issues, you may hang up the call.", lang);
        // Use the contact's language to customize the response messages and notes	
        if(announcement) {	
          notes = gs.getMessageLang("Listened to announcement: {0}", lang, [announcement]);
          response.setStatusCode(200);
        } else {
          announcement = gs.getMessageLang("There are currently no known outage announcements", lang);
          //use the status case as the flag to check for announcements in contact flow
          response.setStatusCode(404);
        }			
        response.setMessage(announcement);	
    			
        if(interactionGr && notes) {			
          interactionGr.work_notes = notes;		
          interactionGr.update();
        }
    		
      } catch(e) {
        ctx.setError(e);
      }
    
    })(request, response);

    CTIOperationRequest – getMajorVersion()

    Gibt die Hauptversion der CTI-Software (Computer Telephony Integrator) zurück, die für das aktuelle CTIOperationRequest-Objekt festgelegt ist.

    Verwenden Sie diese Methode, wenn die mit Ihrer ServiceNow -Instanz verbundenen CTI-Provider mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen möglicherweise ein unterschiedliches Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangs-Handler zu verwenden. Sie können dann die Verarbeitungsunterschiede beheben, indem Sie einfach die Version der Software überprüfen, die die Anforderung stellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.

    Normalerweise legt der Nachrichten-Umwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest – setMajorVersion(Number majorVersion) aufruft. Ein Vorgangs-Handler verbraucht dann den festgelegten Wert mit dieser Methode. Sie können den Nebenversionswert der Software eines Anbieters auch mit den Methoden CTIOperationRequest – getMinorVersion() und CTIOperationRequest – setMinorVersion(Number minorVersion) abrufen/festlegen.

    Tabelle : 10. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 11. Ergebnisse
    Typ Beschreibung
    Nummer Hauptversionsnummer der CTI-Software.

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

    var request = new sn_cti_core.CTIOperationRequest('origin');
    var majorVersion = request.getMajorVersion();

    CTIOperationRequest – getMinorVersion()

    Gibt die Nebenversion der CTI-Software (Computer Telephony Integrator) zurück, die einem CTIOperationRequest-Objekt zugeordnet ist.

    Verwenden Sie diese Methode, wenn die mit Ihrer ServiceNow -Instanz verbundenen CTI-Provider mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen möglicherweise ein unterschiedliches Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangs-Handler zu verwenden. Sie können dann die Verarbeitungsunterschiede beheben, indem Sie einfach die Version der Software überprüfen, die die Anforderung stellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.

    Normalerweise legt der Nachrichten-Umwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest – setMinorVersion(Number minorVersion) aufruft. CTIOperationRequest – setMinorVersion(Number minorVersion) Ein Vorgangs-Handler verbraucht dann den festgelegten Wert mit dieser Methode. Sie können den Hauptversionswert der Software eines Anbieters auch mit den Methoden CTIOperationRequest – getMajorVersion() CTIOperationRequest – getMajorVersion() und CTIOperationRequest – setMajorVersion(Number majorVersion) abrufen/festlegen CTIOperationRequest – setMajorVersion(Number majorVersion).

    Tabelle : 12. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 13. Ergebnisse
    Typ Beschreibung
    Nummer Nebenversionsnummer der CTI-Software.

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

    var request = new sn_cti_core.CTIOperationRequest('origin');
    var minorVersion = request.getMinorVersion();

    CTIOperationRequest – getOperationName()

    Gibt den Namen des Vorgangs zurück, dessen Ausführung der Anbieter der Computer-Telefonie-Integration (CTI) anfordert.

    Der Vorgangsname bestimmt den Vorgangs-Handler, der zur Verarbeitung einer Anforderung verwendet wird. Normalerweise legt der Nachrichten-Umwandler den Vorgangsnamen im CTIOperationRequest-Objekt mit der Methode CTIOperationRequest – setOperationName(String name) fest.

    Hinweis:
    Die getOperationName()- Methode instanziiert den zugeordneten Vorgangs-Handler nicht. Dies geschieht durch das Framework ServiceNow Sprachfunktionen. Diese Methode gibt einfach den zugehörigen Vorgangs-Handler-Namen zurück.
    Hinweis:
    Bei Amazon Connect Lex Bot-Implementierungen werden Absichtsnamen mit einem fünfstelligen Suffix versehen, da verschiedene Amazon-Absichten nicht denselben Absichtsnamen haben können. Im Framework ServiceNow Sprachfunktionen entspricht der Name der Absicht dem Namen des Vorgangs-Handlers. Ein Vorgangs-Handler kann entweder spezifisch für eine Absicht sein und einen Vorgangs-Handler-Namen haben, der dieses Suffix (myOperation_SUFFX) enthält, oder er kann generisch sein und von mehreren CTI-Anbietern oder verschiedenen Anwendungsfällen verwendet werden, z. B. die Verwendung desselben Handlers für die Verarbeitung einer HR -Anforderung und eine Helpdesk-Anforderung (myOperation).
    Tabelle : 14. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 15. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Der Name des Vorgangs, dessen Ausführung der CTI-Provider anfordert. Wenn der Vorgangsname nicht festgelegt ist, wird NULL zurückgegeben.
    var request = new sn_cti_core.CTIOperationRequest('origin');
    var name = request.getOperationName();
    

    CTIOperationRequest – getOperationSubStepName()

    Gibt den Namen des Teilschritt-Operations-Handlers zurück, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist.

    Verwenden Sie Teilschritte, um Aktionen wie Initialisierung und Validierung auszuführen, bevor Sie einen Vorgang verarbeiten. Im Gegensatz zu Vorgangs-Handlern, die generisch sind und von allen CTI-Providern verwendet werden sollen, sind Teilschritte CTI-Provider-spezifisch und verwenden Terminologie und Namenskonventionen, die für den CTI-Provider spezifisch sind.

    Das Framework ServiceNow Sprachfunktionen führt die folgenden Schritte aus, um den erforderlichen Vorgangs-Handler und alle zugehörigen Teilschritt-Vorgangs-Handler zu finden.
    Hinweis:
    Bei Amazon Connect Lex Bot-Implementierungen werden Absichtsnamen mit einem fünfstelligen Suffix versehen, da verschiedene Amazon-Absichten nicht denselben Absichtsnamen haben können. Im Framework ServiceNow Sprachfunktionen entspricht der Name der Absicht dem Namen des Vorgangs-Handlers. Ein Vorgangs-Handler kann entweder spezifisch für eine Absicht sein und einen Vorgangs-Handler-Namen haben, der dieses Suffix (myOperation_SUFFX) enthält, oder er kann generisch sein und von mehreren CTI-Anbietern oder verschiedenen Anwendungsfällen verwendet werden, z. B. die Verwendung desselben Handlers für die Verarbeitung einer HR -Anforderung und eine Helpdesk-Anforderung (myOperation).
    1. Versucht, den Vorgangs-Handler zu finden, der der Anforderung zugeordnet ist.
      • Sucht zuerst nach einem Vorgangs-Handler namens myOperation_SUFFX.
      • Wenn nicht gefunden, wird nach dem Vorgangs-Handler myOperation gesucht. Wenn nicht gefunden, werden Fehler ausgegeben.
    2. Wenn der Handler gefunden wird, wird die Kennzeichnung auth_required im Vorgangs-Handler überprüft. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (abgerufen über die Methode getAuthToken() ) in der Anforderung vorhanden ist. Wenn vorhanden und gültig, Verarbeitung fortsetzen, andernfalls wird ein Fehler ausgelöst.
    3. Sucht nach dem Vorgangs-Handler für den übergebenen Teilschritt. Nehmen wir für dieses Beispiel subStepName=SubStep an.
      • Sucht zuerst nach einem Vorgangs-Handler mit dem Namen myOperation_SUFFX.SubStep. Wenn gefunden, wird der Handler ausgeführt.
      • Wenn nicht gefunden, wird nach dem Handler myOperation.SubStep gesucht. Wenn gefunden, wird der Handler ausgeführt.
      • Wenn nicht gefunden, wird überprüft, ob ein subStepNotFoundBehavior für das Anforderungsobjekt festgelegt wurde.
      • Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls werden Fehler ausgegeben.
    4. Führt den primären Vorgangs-Handler (myOpersation_SUFFX oder myOperation) aus.

    Normalerweise legt der Nachrichten-Umwandler den Teilschrittnamen im CTIOperationRequest-Objekt mit der Methode CTIOperationRequest – setOperationSubStepName(String name) fest. Sie können dieses Verhalten überschreiben, wenn Sie einen eigenen Umwandler erstellen, indem Sie die Methode CTIOperationRequest – setSubStepNotFoundBehaviour(Object behaviour) aufrufen.

    Tabelle : 16. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 17. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Der Name des für das CTIOperationRequest-Objekt festgelegten Teilschritt-Vorgangs-Handlers. Wenn nicht vorhanden, wird NULL zurückgegeben.
    var request = new sn_cti_core.CTIOperationRequest('origin');
    var name = request.getOperationSubStepName();

    CTIOperationRequest – getParameter(String key)

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

    Die Verwendung der Methoden zum Abrufen/Festlegen von Parametern ermöglicht die Übergabe praktisch beliebiger Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtentransformer und einem Vorgangs-Handler. 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 Nachrichten-Umwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest – setParameter(String key, Object value) aufruft, und der Vorgangs-Handler verbraucht sie mit dieser Methode.

    Tabelle : 18. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Der Name des zurückzugebenden Schlüsselwerts.
    Tabelle : 19. Ergebnisse
    Typ Beschreibung
    Zeichenfolge oder Zahl Wert des angegebenen Schlüssels. Wenn kein solcher Schlüssel vorhanden ist, wird NULL zurückgegeben.
    (function( /*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, ctx) {
      var interactionSysId = request.getInteractionSysId();
      // Returns the number and add_comment parameters from the CTIOperationRequest object
      var number = request.getParameter('number');
      var addComment = request.getParameter('add_comment');
      addComment = addComment ? addComment.toLowerCase() : addComment;
      addComment = 'yes' === addComment || 'true' === addComment || '1' === addComment;
      var workNotes = request.getParameter('work_notes');
      var message = gs.getMessage('Thankyou');
      var interactionGr = request.getInteractionRecord();
      var openedFor = interactionGr ? interactionGr.getValue('opened_for') : null;
      if (openedFor && number && addComment && workNotes) {
        var now_GR = new GlideRecordSecure('incident');
        now_GR.addQuery('caller_id', openedFor);
        now_GR.addQuery('number', number);
        now_GR.query();
        if (now_GR.next()) {
        now_GR.work_notes += workNotes;
        now_GR.update();
          message = gs.getMessage('Your comment was added');
        }
      }
      response.setStatusCode(200);
      response.setMessage(message);
    })(request, response, ctx);

    CTIOperationRequest – getParameters()

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

    Die Verwendung der Methoden zum Abrufen/Festlegen von Parametern ermöglicht die Übergabe praktisch beliebiger Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtentransformer und einem Vorgangs-Handler. 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 Nachrichten-Umwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest – setParameter(String key, Object value) aufruft, und der Vorgangs-Handler verbraucht sie 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 CTIOperationRequest-Objekt festgelegt wurden. Diese Schlüssel-Wert-Paare haben eine Freiform und werden durch die Anforderungen des Vorgangs-Handlers definiert. Die zurückgegebenen Werte sind entweder Zeichenfolgen oder Zahlen.
    var request = new sn_cti_core.CTIOperationRequest('origin');
    var parms = request.getParameters();
    for(var key in parms) {
        gs.info(key + '=' + parms[key]);
    }

    CTIOperationRequest – getSessionAttribute(String key)

    Gibt den Wert eines angegebenen Sitzungsattributschlüssels zurück, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist.

    Die Verwendung der Methoden zum Abrufen/Festlegen von Sitzungsattributen ermöglicht die Übergabe praktisch beliebiger Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtentransformator und einem Vorgangs-Handler. Das Objekt „sessionAttribute“ kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, die für die Dauer einer definierten Sitzung eines Computer-Telefonie-Integrationsanbieters gültig sind, z. B. die Telefonnummer des Kontakts. 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 Nachrichten-Umwandler diese Attribute für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest – setSessionAttribute(String key, Object value) aufruft. Sitzungsattribute unterscheiden sich von Parametern darin, dass sie für die Dauer der Sitzung (z. B. den gesamten Anruf) bestehen bleiben und vom CTI-Provider bei jeder Vorgangsanforderung innerhalb dieser Anrufsitzung zurückgegeben werden sollten.

    Tabelle : 22. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Der Name des zurückzugebenden Schlüsselwerts.
    Tabelle : 23. Ergebnisse
    Typ Beschreibung
    Zeichenfolge oder Zahl Wert des angegebenen Schlüssels. Wenn kein solcher Schlüssel vorhanden ist, wird NULL zurückgegeben.
    var request = new sn_cti_core.CTIOperationRequest('origin');
    var phoneAttribute = request.getSessionAttribute('contact.phone');

    CTIOperationRequest – getSessionAttributes()

    Gibt eine Schlüssel-Wert-Paarzuordnung aller Sitzungsattribute zurück, die für das aktuelle CTIOperationRequest-Objekt festgelegt sind.

    Die Verwendung der Methoden zum Abrufen/Festlegen von Sitzungsattributen ermöglicht die Übergabe praktisch beliebiger Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtentransformator und einem Vorgangs-Handler. Das Objekt „sessionAttribute“ kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, die für die Dauer einer definierten Sitzung eines Computer-Telefonie-Integrationsanbieters gültig sind, z. B. die Telefonnummer des Kontakts. 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 Nachrichten-Umwandler diese Attribute für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest – setSessionAttribute(String key, Object value) aufruft. Sitzungsattribute unterscheiden sich von Parametern darin, dass sie für die Dauer der Sitzung (z. B. den gesamten Anruf) bestehen bleiben und vom CTI-Provider bei jeder Vorgangsanforderung innerhalb dieser Anrufsitzung zurückgegeben werden sollten.

    Tabelle : 24. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 25. Ergebnisse
    Typ Beschreibung
    Objekt Eine Zuordnung von Schlüssel-Wert-Paaren für Sitzungsattribute, die für das zugeordnete CTIOperationResponse-Objekt festgelegt wurden. Diese Zuordnung ist eine Freiform und wird durch die Anforderungen des Vorgangs-Handlers definiert.
    var request = new sn_cti_core.CTIOperationRequest('origin');
    var parms = request.getSessionAttributes();
    for(var key in parms) {
        gs.info(key + '=' + parms[key]);
    }

    CTIOperationRequest – getSubStepNotFoundBehaviour

    Gibt das Verarbeitungsverhalten für einen Teilschritt zurück, wenn der Vorgangs-Handler eines Teilschritts nicht gefunden wird.

    Verwenden Sie Teilschritte, um Aktionen wie Initialisierung und Validierung auszuführen, bevor Sie einen Vorgang verarbeiten. Im Gegensatz zu Vorgangs-Handlern, die generisch sind und von allen CTI-Providern verwendet werden sollen, sind Teilschritte CTI-Provider-spezifisch und verwenden Terminologie und Namenskonventionen, die für den CTI-Provider spezifisch sind.

    Wenn der angeforderte Handler für Teilschrittvorgänge vom Framework ServiceNow Sprachfunktionen nicht gefunden werden kann, wird versucht, das Verhalten „Schritt nicht gefunden“ zu verwenden. Dieses Verhalten wird normalerweise vom Nachrichtentransformer festgelegt, wenn ein Vorgang anfänglich angefordert wird.

    Tabelle : 26. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 27. Ergebnisse
    Typ Beschreibung
    OperationNotFoundBehaviours Das Verhalten/die Behandlung, die ausgeführt werden soll, wenn ein Vorgangs-Handler für die Kombination aus Vorgang und Unterschritt (<operation_name>.SubStep>) nicht gefunden werden kann. Wenn nicht definiert, wird NULL zurückgegeben.
    Mögliche Werte:
    • OperationNotFoundBehaviours.ThrowError: Fehler auslösen.
    • OperationNotFoundBehaviours.PassThrough: Keine weitere Verarbeitung der Anforderung durchführen, nur Rückgabe.
    • OperationNotFoundBehaviours.RouteToOperation: Verwenden Sie den übergeordneten Vorgangs-Handler <operation_name>.
    var request = new sn_cti_core.CTIOperationRequest('origin');
    var behavior = request.getSubStepNotFoundBehaviour();

    CTIOperationRequest – setAuthToken(String id)

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

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

    Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, 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-Provider dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.

    Wenn Sie den von der Instanz bereitgestellten Handler für den Authentifizieren-Vorgang verwenden, initiiert der Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen vom Benutzer eingegebenen PIN. Anschließend wird das Authentifizierungstoken im Objekt „sessionAttributes“ des Objekts „CTIOperationResponse“ festgelegt. Der zugeordnete Nachrichtentransformer übersetzt das Objekt „sessionAttributes“ in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Provider.

    Hinweis:
    Wenn das Authentifizierungstoken nicht übergeben wird, schlagen alle Anforderungen zum Ausführen von Vorgangs-Handlern mit der Kennzeichnung auth_required fehl. Wenn Sie keine Authentifizierung verwenden, müssen Sie keine Authentifizierungstoken verwalten.
    Das ServiceNow Basissystem stellt Handler für Arbeitsvorgänge und Nachrichtentransformer bereit, die die Verbindung mit Amazon Connect ermöglichen. Beim Erstellen 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)
    Sie finden die verfügbaren Vorgangs-Handler und Nachrichten-Umwandler für diese Integrationspunkte in den Tabellen „Vorgangs-Handler“ [sn_cti_operation_handler] und „Provider-Nachrichten-Umwandler“ [sn_cti_provider_msg_transformer].
    Tabelle : 28. Parameter
    Name Typ Beschreibung
    id Zeichenfolge Das Authentifizierungstoken für den zugeordneten Benutzer ServiceNow Sprachfunktionen.
    Tabelle : 29. Ergebnisse
    Typ Beschreibung
    void

    Beispiel für ein Nachrichtentransformator-Skript, das das übergebene Authentifizierungstoken speichert.

    {	
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
    	var event = jsonPayload.event;
    	if (event) {
    	  var details = event.Details;
    	  if (details) {					
    	    operationRequest.setOperationName(details.Parameters['sn_operation']);
    	    var contactData = details.ContactData;
    	    if(contactData) {
    		// Call id should be surfaced in openframe call log so it can be tied to transcription later
    		operationRequest.setParameter('contact.call_id', contactData.ContactId);
    		for(var ck in contactData.CustomerEndpoint) {
    		  operationRequest.setParameter('contact.' + ck, contactData.CustomerEndpoint[ck]);
    	       }
    	       operationRequest.setParameter('contact.id', contactData.ContactId);
    	       operationRequest.setParameter('contact.phone', contactData.CustomerEndpoint.Address);
    	    }
    	    var parameters = details.Parameters;
    	    if (parameters) {
    		for (var pk in parameters) {
    		  switch(pk) {
    		    case 'interactionId':
    			operationRequest.setInteractionSysId(parameters[pk]);
    			break;
    		    case 'authToken':
    			operationRequest.setAuthToken(parameters[pk]);
    			break;
    		    case 'language':
    			operationRequest.setLanguage(parameters[pk]);
    			break;
    		    case 'statusCode':
    		    case 'message':
    			break;
    								
    		    default:
    			operationRequest.setParameter(pk, parameters[pk]);
    		 }						
                }
              }					
            }
          }
        }
      } catch(e) {
    		ctx.setError(e);
      }
    })(httpRequest, operationRequest, ctx);

    CTIOperationRequest – setInteractionSysId(String Id)

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

    Wenn Sie Kontaktinteraktionsinformationen in einem kontaktspezifischen Interaktionsdatensatz beibehalten möchten, muss die sys_id des Interaktionsdatensatzes für die gesamte ServiceNow Sprachfunktionen -Anrufsitzung beibehalten werden.

    Normalerweise erstellt ein Vorgangs-Handler einen Interaktionsdatensatz, wenn ein neuer Kontaktanruf initiiert wird. Anschließend werden die sys_id des Interaktionsdatensatzes und der Tabellenname im zugehörigen CTIOperationResponse-Objekt als Sitzungsattribute mit der Methode CTIOperationRequest – setSessionAttribute(String key, Object value) festgelegt. Der zugeordnete Methodentransformator übersetzt diese Informationen dann in die Nutzlast des Providers für Computer-Telefonie-Integration (CTI) und sendet sie an den CTI-Provider zurück.

    Der CTI-Provider muss die sys_id des Interaktionsdatensatzes für die Kontaktsitzung lokal speichern. Jedes Mal, wenn der CTI-Provider mit ServiceNow Sprachfunktionen für diese Kontaktsitzung interagiert, muss er die sys_id des entsprechenden Interaktionsdatensatzes in seiner Nutzlast zurückgeben. Der Umwandler für empfangende Nachrichten analysiert dann die Nutzlast und verwendet die Methode CTIOperationRequest – setInteractionSysId(), um die sys_id des Interaktionsdatensatzes für das zugeordnete CTIOperationtRequest-Objekt festzulegen.

    Die Methode CTIOperationRequest – getInteractionRecord() verwendet diese sys_id, um den richtigen Interaktionsdatensatz für die Kontaktsitzung zu erhalten. Interaktionsdatensätze befinden sich in der Interaktionstabelle [interaction]. Weitere Informationen zu Interaktionsdatensätzen finden Sie unter

    Tabelle : 30. Parameter
    Name Typ Beschreibung
    sys_id Zeichenfolge Die sys_id des Interaktionsdatensatzes, der der Anforderung zugeordnet werden soll.
    Tabelle : 31. Ergebnisse
    Typ Beschreibung
    void

    Beispiel für ein Nachrichtentransformator-Skript, das die sys_id des Interaktionsdatensatzes aus der eingehenden Nutzlast (als Parameter übergeben) extrahiert und für das zugeordnete CTIOperationRequest-Objekt festlegt.

    {	
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
    	var event = jsonPayload.event;
    	if (event) {
    	  var details = event.Details;
    	  if (details) {					
    	    operationRequest.setOperationName(details.Parameters['sn_operation']);
    	    var contactData = details.ContactData;
    	    if(contactData) {
    		// Call id should be surfaced in openframe call log so it can be tied to transcription later
    		operationRequest.setParameter('contact.call_id', contactData.ContactId);
    		for(var ck in contactData.CustomerEndpoint) {
    		  operationRequest.setParameter('contact.' + ck, contactData.CustomerEndpoint[ck]);
    	       }
    	       operationRequest.setParameter('contact.id', contactData.ContactId);
    	       operationRequest.setParameter('contact.phone', contactData.CustomerEndpoint.Address);
    	    }
    	    var parameters = details.Parameters;
    	    if (parameters) {
    		for (var pk in parameters) {
    		  switch(pk) {
                     // Associate the existing customer interaction record with the request
    		    case 'interactionId':
    			operationRequest.setInteractionSysId(parameters[pk]);
    			break;
    		    case 'authToken':
    			operationRequest.setAuthToken(parameters[pk]);
    			break;
    		    case 'language':
    			operationRequest.setLanguage(parameters[pk]);
    			break;
    		    case 'statusCode':
    		    case 'message':
    			break;
    								
    		    default:
    			operationRequest.setParameter(pk, parameters[pk]);
    		 }						
                }
              }					
            }
          }
        }
      } catch(e) {
    		ctx.setError(e);
      }
    })(httpRequest, operationRequest, ctx);

    CTIOperationRequest – setLanguage(String languageCode)

    Legt den ISO 639.1-Sprachcode fest, der bei der Verarbeitung des zugeordneten Vorgangs für ein CTIOperationRequest-Objekt verwendet werden soll.

    Wenn Sie die vom Kunden bevorzugte Sprache verwenden, können Sie die von der Plattform bereitgestellten Internationalisierungs- und Lokalisierungsfunktionen verwenden, um Nachrichten und andere Kommunikation mit dem zugehörigen Anrufer anzupassen. Normalerweise legt der Nachrichten-Umwandler die Sprache im CTIOperationRequest-Objekt fest.

    Tabelle : 32. Parameter
    Name Typ Beschreibung
    languageCode Zeichenfolge Der ISO 639.1-Sprachcode, der bei der Verarbeitung des zugeordneten Vorgangs verwendet werden soll.
    Tabelle : 33. Ergebnisse
    Typ Beschreibung
    void
    {	
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
    	var event = jsonPayload.event;
    	if (event) {
    	  var details = event.Details;
    	  if (details) {					
    	    operationRequest.setOperationName(details.Parameters['sn_operation']);
    	    var contactData = details.ContactData;
    	    if(contactData) {
    		// Call id should be surfaced in openframe call log so it can be tied to transcription later
    		operationRequest.setParameter('contact.call_id', contactData.ContactId);
    		for(var ck in contactData.CustomerEndpoint) {
    		  operationRequest.setParameter('contact.' + ck, contactData.CustomerEndpoint[ck]);
    	       }
    	       operationRequest.setParameter('contact.id', contactData.ContactId);
    	       operationRequest.setParameter('contact.phone', contactData.CustomerEndpoint.Address);
    	    }
    	    var parameters = details.Parameters;
    	    if (parameters) {
    		for (var pk in parameters) {
    		  switch(pk) {
    		    case 'interactionId':
    			operationRequest.setInteractionSysId(parameters[pk]);
    			break;
    		    case 'authToken':
    			operationRequest.setAuthToken(parameters[pk]);
    			break;
    		    case 'language':
    			operationRequest.setLanguage(parameters[pk]);
    			break;
    		    case 'statusCode':
    		    case 'message':
    			break;
    								
    		    default:
    			operationRequest.setParameter(pk, parameters[pk]);
    		 }						
                }
              }					
            }
          }
        }
      } catch(e) {
    		ctx.setError(e);
      }
    })(httpRequest, operationRequest, ctx);

    CTIOperationRequest – setMajorVersion(Number majorVersion)

    Legt die Hauptversion der Anbietersoftware des Computer Telephony Integrator (CTI) fest, die die Anforderung für das zugeordnete CTIOperationRequest-Objekt sendet.

    Verwenden Sie diese Methode, wenn die mit Ihrer ServiceNow -Instanz verbundenen CTI-Provider mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen möglicherweise ein unterschiedliches Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangs-Handler zu verwenden. Sie können dann die Verarbeitungsunterschiede beheben, indem Sie einfach die Version der Software überprüfen, die die Anforderung stellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.

    Normalerweise legt der Nachrichten-Umwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er diese Methode aufruft, und ein Vorgangs-Handler verbraucht dann den festgelegten Wert mit der Methode CTIOperationRequest – getMajorVersion(). Sie können den Nebenversionswert der Software eines Anbieters auch mit den Methoden CTIOperationRequest – getMinorVersion() und CTIOperationRequest – setMinorVersion(Number minorVersion) abrufen/festlegen.

    Tabelle : 34. Parameter
    Name Typ Beschreibung
    majorVersion Nummer Hauptversion der CTI-Provider-Software, die die Vorgangsanforderung sendet.

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

    Tabelle : 35. Ergebnisse
    Typ Beschreibung
    void
    var request = new sn_cti_core.CTIOperationRequest('origin');
    request.setMajorVersion(2);

    CTIOperationRequest – setMinorVersion(Number minorVersion)

    Legt die Nebenversion der Anbietersoftware des Computer Telephony Integrator (CTI) fest, die die Anforderung für das zugeordnete CTIOperationRequest-Objekt sendet.

    Verwenden Sie diese Methode, wenn die mit Ihrer ServiceNow -Instanz verbundenen CTI-Provider mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen möglicherweise ein unterschiedliches Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangs-Handler zu verwenden. Sie können dann die Verarbeitungsunterschiede beheben, indem Sie einfach die Version der Software überprüfen, die die Anforderung stellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.

    Normalerweise legt der Nachrichten-Umwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er diese Methode aufruft, und ein Vorgangs-Handler verbraucht dann den festgelegten Wert mit der Methode CTIOperationRequest – getMinorVersion(). Sie können den Hauptversionswert der Software eines Anbieters auch mit den Methoden CTIOperationRequest – getMajorVersion() und CTIOperationRequest – setMajorVersion(Number majorVersion) abrufen/festlegen.

    Tabelle : 36. Parameter
    Name Typ Beschreibung
    minorVersion Nummer Nebenversion der CTI-Provider-Software, die die Vorgangsanforderung sendet.

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

    Tabelle : 37. Ergebnisse
    Typ Beschreibung
    void
    var request = new sn_cti_core.CTIOperationRequest('origin');
    ...
    request.setMinorVersion(3);

    CTIOperationRequest – setOperationName(String name)

    Legt den Namen des Vorgangs fest, den der CTI-Anbieter (Computer Telephony Integration) für das aktuelle CTIOperationRequest-Objekt auszuführen versucht.

    Der Vorgangsname bestimmt den Vorgangs-Handler, der zur Verarbeitung der Anforderung verwendet wird. Rufen Sie diese Methode aus dem zugehörigen Nachrichten-Umwandler auf.

    Hinweis:
    Bei Amazon Connect Lex Bot-Implementierungen werden Absichtsnamen mit einem fünfstelligen Suffix versehen, da verschiedene Amazon-Absichten nicht denselben Absichtsnamen haben können. Im Framework ServiceNow Sprachfunktionen entspricht der Name der Absicht dem Namen des Vorgangs-Handlers. Ein Vorgangs-Handler kann entweder spezifisch für eine Absicht sein und einen Vorgangs-Handler-Namen haben, der dieses Suffix (myOperation_SUFFX) enthält, oder er kann generisch sein und von mehreren CTI-Anbietern oder verschiedenen Anwendungsfällen verwendet werden, z. B. die Verwendung desselben Handlers für die Verarbeitung einer HR -Anforderung und eine Helpdesk-Anforderung (myOperation).
    Tabelle : 38. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Name des Vorgangs, den der CTI-Provider derzeit auszuführen versucht.

    Dieser Name muss mit dem Namen des Vorgangs-Handlers identisch sein, der zur Verarbeitung der Anforderung verwendet werden soll. Ist dies nicht der Fall, wird ein Fehler ausgelöst. Sie finden die verfügbaren Vorgangs-Handler in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler].

    Tabelle : 39. Ergebnisse
    Typ Beschreibung
    void
    {	
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
    	var event = jsonPayload.event;
    	if (event) {
    	  var details = event.Details;
    	  if (details) {	
               // Set the operation handler to use to process the request				
    	    operationRequest.setOperationName(details.Parameters['sn_operation']);
    	    var contactData = details.ContactData;
    	    if(contactData) {
    		// Call id should be surfaced in openframe call log so it can be tied to transcription later
    		operationRequest.setParameter('contact.call_id', contactData.ContactId);
    		for(var ck in contactData.CustomerEndpoint) {
    		  operationRequest.setParameter('contact.' + ck, contactData.CustomerEndpoint[ck]);
    	       }
    	       operationRequest.setParameter('contact.id', contactData.ContactId);
    	       operationRequest.setParameter('contact.phone', contactData.CustomerEndpoint.Address);
    	    }
    	    var parameters = details.Parameters;
    	    if (parameters) {
    		for (var pk in parameters) {
    		  switch(pk) {
    		    case 'interactionId':
    			operationRequest.setInteractionSysId(parameters[pk]);
    			break;
    		    case 'authToken':
    			operationRequest.setAuthToken(parameters[pk]);
    			break;
    		    case 'language':
    			operationRequest.setLanguage(parameters[pk]);
    			break;
    		    case 'statusCode':
    		    case 'message':
    			break;
    								
    		    default:
    			operationRequest.setParameter(pk, parameters[pk]);
    		 }						
                }
              }					
            }
          }
        }
      } catch(e) {
    		ctx.setError(e);
      }
    })(httpRequest, operationRequest, ctx);

    CTIOperationRequest – setOperationSubStepName(String name)

    Legt den Namen des Vorgangsunterschritts für das aktuelle CTIOperationRequest-Objekt fest.

    Verwenden Sie Teilschritte, um Aktionen wie Initialisierung und Validierung auszuführen, bevor Sie einen Vorgang verarbeiten. Im Gegensatz zu Vorgangs-Handlern, die generisch sind und von allen CTI-Providern verwendet werden sollen, sind Teilschritte CTI-Provider-spezifisch und verwenden Terminologie und Namenskonventionen, die für den CTI-Provider spezifisch sind.

    Das Framework ServiceNow Sprachfunktionen führt die folgenden Schritte aus, um den erforderlichen Vorgangs-Handler und alle zugehörigen Teilschritt-Vorgangs-Handler zu finden.
    Hinweis:
    Bei Amazon Connect Lex Bot-Implementierungen werden Absichtsnamen mit einem fünfstelligen Suffix versehen, da verschiedene Amazon-Absichten nicht denselben Absichtsnamen haben können. Im Framework ServiceNow Sprachfunktionen entspricht der Name der Absicht dem Namen des Vorgangs-Handlers. Ein Vorgangs-Handler kann entweder spezifisch für eine Absicht sein und einen Vorgangs-Handler-Namen haben, der dieses Suffix (myOperation_SUFFX) enthält, oder er kann generisch sein und von mehreren CTI-Anbietern oder verschiedenen Anwendungsfällen verwendet werden, z. B. die Verwendung desselben Handlers für die Verarbeitung einer HR -Anforderung und eine Helpdesk-Anforderung (myOperation).
    1. Versucht, den Vorgangs-Handler zu finden, der der Anforderung zugeordnet ist.
      • Sucht zuerst nach einem Vorgangs-Handler namens myOperation_SUFFX.
      • Wenn nicht gefunden, wird nach dem Vorgangs-Handler myOperation gesucht. Wenn nicht gefunden, werden Fehler ausgegeben.
    2. Wenn der Handler gefunden wird, wird die Kennzeichnung auth_required im Vorgangs-Handler überprüft. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (abgerufen über die Methode getAuthToken() ) in der Anforderung vorhanden ist. Wenn vorhanden und gültig, Verarbeitung fortsetzen, andernfalls wird ein Fehler ausgelöst.
    3. Sucht nach dem Vorgangs-Handler für den übergebenen Teilschritt. Nehmen wir für dieses Beispiel subStepName=SubStep an.
      • Sucht zuerst nach einem Vorgangs-Handler mit dem Namen myOperation_SUFFX.SubStep. Wenn gefunden, wird der Handler ausgeführt.
      • Wenn nicht gefunden, wird nach dem Handler myOperation.SubStep gesucht. Wenn gefunden, wird der Handler ausgeführt.
      • Wenn nicht gefunden, wird überprüft, ob ein subStepNotFoundBehavior für das Anforderungsobjekt festgelegt wurde.
      • Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls werden Fehler ausgegeben.
    4. Führt den primären Vorgangs-Handler (myOpersation_SUFFX oder myOperation) aus.

    Sie können das Standardverhalten eines Teilschritts festlegen, indem Sie die Methode CTIOperationRequest – setSubStepNotFoundBehaviour(Object behaviour) aufrufen.

    Tabelle : 40. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Name des Teilschritts, den der CTI-Provider auszuführen versucht.
    Tabelle : 41. Ergebnisse
    Typ Beschreibung
    void
    (function( /*HTTPRequest*/ httpRequest, /*CTIOperationRequest*/ operationRequest, /*Context*/ ctx) {
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
          var event = jsonPayload.event;
          if (event) {
            var intent = event.currentIntent;
    	 var inputTranscript = event.inputTranscript;
    	 if(inputTranscript) {
    	   operationRequest.setParameter('$utterance', inputTranscript);
    	 }
            if (intent) {
              operationRequest.setOperationName(intent.name);
    	   // Add this because intent name gets changed through the pipeline
    	   operationRequest.setParameter('$original_intent', intent.name);
              var sessionAttributes = event.sessionAttributes;
              if (sessionAttributes) {
                for (var sk in sessionAttributes) {
                  switch (sk) {
                    case 'interactionId':
                      operationRequest.setInteractionSysId(sessionAttributes[sk]);
                      break;
                    case 'authToken':
                      operationRequest.setAuthToken(sessionAttributes[sk]);
                      break;
    		  case 'language':
    		    operationRequest.setLanguage(sessionAttributes[sk]);
    		    break;
                    case 'statusCode':
                    case 'message':
                      break;
                    default:
                      operationRequest.setSessionAttribute(sk, sessionAttributes[sk]);
                  }
                }
              }
              var slots = intent.slots;
    	   // Always copy in slots they are the parameters for the operation
              if (slots) {
                for (var pk in slots) {
                  operationRequest.setParameter(pk, slots[pk]);
                }
              }
              var invocationSource = event.invocationSource;
    	   operationRequest.setParameter('$$invocationSource', invocationSource);
              // Specific handling for dialog hooks with a way to override for Amazon specific provider
              if (invocationSource === 'DialogCodeHook') {
    	     // Set substep to trigger forwarding to another handler IF it s present
    	     operationRequest.setOperationSubStepName(invocationSource);
    	     // Allow pass through behavior
    	     var behaviourToUse = sn_cti_core.CTIOperationRequest.OperationNotFoundBehaviours.PassThrough;
    	     operationRequest.setSubStepNotFoundBehaviour(behaviourToUse);
    	     // Reserved - copy slots in so we can just use delegate as default if the call isn't handled
    	     operationRequest.setParameter('$$slots', slots);
              }
            }
          }
        }
      } catch (e) {
          ctx.setError(e);
      }
      return operationRequest;
    })(httpRequest, operationRequest, ctx);

    CTIOperationRequest – setParameter(String key, Object value)

    Legt das angegebene Schlüssel-Wert-Paar für das Parameterobjekt des aktuellen CTIOperationRequest-Objekts fest.

    Die Verwendung der Methoden zum Abrufen/Festlegen von Parametern ermöglicht die Übergabe praktisch beliebiger Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtentransformer und einem Vorgangs-Handler. 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 Nachrichten-Umwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er diese Methode aufruft, und der Vorgangs-Handler verbraucht sie mit der Methode CTIOperationRequest – getParameter(String key) oder CTIOperationRequest – getParameters().

    Hinweis:
    Sie sollten nur Objekte speichern, die einen JSON.parse(JSON.stringify(object))- Vorgang überstehen können. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß über die gesamte Vorgangsverarbeitungskette verteilt.
    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 : 42. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Name des Schlüssels, unter dem der zugeordnete Wert gespeichert werden soll.
    Wert Objekt Zu speichernder Wert.
    Gültige Datentypen:
    • Zeichenfolge
    • int
    • schweben
    • Nummer
    • boolean
    • Datum
    • Objekt
    Tabelle : 43. Ergebnisse
    Typ Beschreibung
    void
    {	
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
    	var event = jsonPayload.event;
    	if (event) {
    	  var details = event.Details;
    	  if (details) {					
    	    operationRequest.setOperationName(details.Parameters['sn_operation']);
    	    var contactData = details.ContactData;
    	    if(contactData) {
    		// Call id should be surfaced in openframe call log so it can be tied to transcription later
    		operationRequest.setParameter('contact.call_id', contactData.ContactId);
    		for(var ck in contactData.CustomerEndpoint) {
    		  operationRequest.setParameter('contact.' + ck, contactData.CustomerEndpoint[ck]);
    	       }
    	       operationRequest.setParameter('contact.id', contactData.ContactId);
    	       operationRequest.setParameter('contact.phone', contactData.CustomerEndpoint.Address);
    	    }
    	    var parameters = details.Parameters;
    	    if (parameters) {
    		for (var pk in parameters) {
    		  switch(pk) {
    		    case 'interactionId':
    			operationRequest.setInteractionSysId(parameters[pk]);
    			break;
    		    case 'authToken':
    			operationRequest.setAuthToken(parameters[pk]);
    			break;
    		    case 'language':
    			operationRequest.setLanguage(parameters[pk]);
    			break;
    		    case 'statusCode':
    		    case 'message':
    			break;
    								
    		    default:
    			operationRequest.setParameter(pk, parameters[pk]);
    		 }						
                }
              }					
            }
          }
        }
      } catch(e) {
    		ctx.setError(e);
      }
    })(httpRequest, operationRequest, ctx);

    CTIOperationRequest – setSessionAttribute(String key, Object value)

    Legt das angegebene Schlüssel-Wert-Paar für Sitzungsattribute für das aktuelle CTIOperationRequest-Objekt fest.

    Die Verwendung der Methoden zum Abrufen/Festlegen von Sitzungsattributen ermöglicht die Übergabe praktisch beliebiger Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtentransformator und einem Vorgangs-Handler. Das Objekt „sessionAttribute“ kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, die für die Dauer einer vom Anbieter der Computer-Telefonie-Integration definierten Sitzung 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 Nachrichten-Umwandler diese Attribute für das CTIOperationRequest-Objekt fest, indem er diese Methode aufruft, und der Vorgangs-Handler ruft die Attribute mit der Methode CTIOperationRequest – getSessionAttribute(String key) oder CTIOperationRequest – getSessionAttribute() ab.

    Hinweis:
    Sie sollten nur Objekte speichern, die einen JSON.parse(JSON.stringify(object))- Vorgang überstehen können. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß über die gesamte Vorgangsverarbeitungskette verteilt.
    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 : 44. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Name des Schlüssels, unter dem der zugeordnete Wert gespeichert werden soll.
    Wert Objekt Zu speichernder Wert.
    Gültige Datentypen:
    • Zeichenfolge
    • int
    • schweben
    • Nummer
    • boolean
    • Datum
    • Objekt
    Tabelle : 45. Ergebnisse
    Typ Beschreibung
    void
    var request = new sn_cti_core.CTIOperationRequest('origin');
    request.setSessionAttribute('contact.phone', '+15552222345');
    request.setSessionAttribute('contact.okToCall', true);
    request.setSessionAttribute('contact.address', {
        street: '1234 Main St'
        city: 'API City',
        zip: 91335
    });

    CTIOperationRequest – setSubStepNotFoundBehaviour(Object behaviour)

    Legt das Verhalten fest, das ausgeführt werden soll, wenn der Vorgangs-Handler des aktuellen Teilschritts nicht gefunden wird.

    Diese Methode sollte vom Eingabenachrichten-Umwandler aufgerufen werden.

    Tabelle : 46. Parameter
    Name Typ Beschreibung
    Verhalten OperationNotFoundBehaviours Zu verwendendes Verhalten, wenn für den Teilschritt kein Bearbeitungsverhalten angegeben ist. Dies muss ein Verhalten sein, das im Objekt CTIOperationRequest.OperationNotFoundBehaviours definiert ist.
    Mögliche Werte:
    • ThrowError: Fehler auslösen.
    • PassThrough: Führen Sie keine weitere Verarbeitung für die Anforderung aus, sondern geben Sie sie zurück.
    • RouteToOperation: Verwenden Sie den übergeordneten Vorgangs-Handler <operation_name>.
    Tabelle : 47. Ergebnisse
    Typ Beschreibung
    void
    (function( /*HTTPRequest*/ httpRequest, /*CTIOperationRequest*/ operationRequest, /*Context*/ ctx) {
      try {
        var jsonPayload = httpRequest.body.data;
        if (jsonPayload) {
          var event = jsonPayload.event;
          if (event) {
            var intent = event.currentIntent;
    	 var inputTranscript = event.inputTranscript;
    	 if(inputTranscript) {
    	   operationRequest.setParameter('$utterance', inputTranscript);
    	 }
            if (intent) {
              operationRequest.setOperationName(intent.name);
    	   // Add this because intent name gets changed through the pipeline
    	   operationRequest.setParameter('$original_intent', intent.name);
              var sessionAttributes = event.sessionAttributes;
              if (sessionAttributes) {
                for (var sk in sessionAttributes) {
                  switch (sk) {
                    case 'interactionId':
                      operationRequest.setInteractionSysId(sessionAttributes[sk]);
                      break;
                    case 'authToken':
                      operationRequest.setAuthToken(sessionAttributes[sk]);
                      break;
    		  case 'language':
    		    operationRequest.setLanguage(sessionAttributes[sk]);
    		    break;
                    case 'statusCode':
                    case 'message':
                      break;
                    default:
                      operationRequest.setSessionAttribute(sk, sessionAttributes[sk]);
                  }
                }
              }
              var slots = intent.slots;
    	   // Always copy in slots they are the parameters for the operation
              if (slots) {
                for (var pk in slots) {
                  operationRequest.setParameter(pk, slots[pk]);
                }
              }
              var invocationSource = event.invocationSource;
    	   operationRequest.setParameter('$$invocationSource', invocationSource);
              // Specific handling for dialog hooks with a way to overide for Amazon specific provider
              if (invocationSource === 'DialogCodeHook') {
    	     // Set substep to trigger forwarding to another handler IF it s present
    	     operationRequest.setOperationSubStepName(invocationSource);
    	     // Allow pass through behavior
    	     var behaviourToUse = sn_cti_core.CTIOperationRequest.OperationNotFoundBehaviours.PassThrough;
    	     operationRequest.setSubStepNotFoundBehaviour(behaviourToUse);
    	     // Reserved - copy slots in so we can just use delegate as default if the call isn't handled
    	     operationRequest.setParameter('$$slots', slots);
              }
            }
          }
        }
      } catch (e) {
          ctx.setError(e);
      }
      return operationRequest;
    })(httpRequest, operationRequest, ctx);