CTIOperationRequest – Umfang, Global
Die CTIOperationRequest Die Skripteinbindung bietet Methoden zum Festlegen und Abrufen von Daten zum aktuellen CTIOperationRequest-Objekt.
Sie verwenden CTIOperationRequest-Objekte, um Informationen zwischen einem Nachrichtenumwandler und einem Vorgangs-Handler innerhalb von zu übergeben ServiceNow SprachfunktionenFramework.
Normalerweise ist ein Nachrichtenumwandler für die Analyse einer eingehenden CTI-spezifischen Nutzlast und das Festlegen der Nutzlastdaten für ein zugehöriges CTIOperationRequest-Objekt verantwortlich. 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.
- Lambda-Proxy für Amazon Webservices (AWS-Lambda-Funktion aufrufen)
- AWS Lex-Bot (Kundeneingabe abrufen)
Eine Nutzlast wird an übergeben ServiceNowInstanz aus einer externen Quelle, z. B. von einem CTI-Anbieter (Computer Telephony Integration), der eine Vorgangsanforderung stellt. Wenn eine Anforderung empfangen wird, analysiert ein Nachrichtenumwandler die Nutzlast und verwendet die CTIOperationRequest-Satzmethoden, um Nutzlastwerte wie den Namen des Vorgangs-Handlers für ein Vorgangs- und kontaktspezifisches CTIOperationRequest-Objekt festzulegen.
Das folgende Nachrichtentransformatorskript analysiert beispielsweise die übergebene JSON-Nutzlast und legt die Werte fest, die vom zugehörigen Vorgangs-Handler für das 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 Nachrichtenumwandler die Analyse der übergebenen Nutzlast abgeschlossen hat, wird ServiceNow SprachfunktionenFramework instanziiert den angegebenen Vorgangs-Handler. Der Betriebshandler verwendet CTIOperationResponse Skripteinbindung – GET-Methoden, um die Informationen abzurufen, die sie vom zugeordneten CTIOperationRequest-Objekt benötigen, 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 Aufruf 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 Konfigurieren Sie einen Kontakt-Flow für eine automatisierte Anruferinteraktion .
Diese Skripteinbindung wird in ausgeführt sn_cti_Core Namespace. Bevor Sie auf zugreifen können CTIOperationRequest Skripteinbindung, ServiceNow SprachfunktionenPlugin (sn_cti_Core) muss aktiviert sein. Für Informationen zur Aktivierung ServiceNow Sprachfunktionen, Siehe Installieren Sie ServiceNow Voice-Anwendungen .
Für zusätzliche Informationen zu ServiceNow Sprachfunktionen, Siehe ServiceNow-Sprachfunktionen .
CTIOperationRequest – CTIOperationRequest (Zeichenfolgenursprung)
Instanziiert ein CTIOperationRequest-Objekt.
| Name | Typ | Beschreibung |
|---|---|---|
| origin | Zeichenfolge | Optional. Ursprung der Anforderung. Normalerweise der Name des Anbieters des Computertelefonie-Integrators. 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 ist.
Dieses Token wird von verwendet ServiceNow SprachfunktionenFramework zur Authentifizierung des aktuellen ServiceNow SprachfunktionenAnwender vor Ausführung des angeforderten Vorgangs-Handlers, wenn der Handler ist auth_requiredKennzeichnung ist auf „wahr“ festgelegt. Die auth_requiredKennzeichnung ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler]. Die Lebensdauer eines Authentifizierungstoken sollte für die Lebensdauer der Anrufsitzung betragen, wird jedoch vom CTI-Anbieter festgelegt.
Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, indem Sie einen eigenen Authentifizierungsvorgang-Handler erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.
Wenn der von der Instanz bereitgestellte Authentifizierungsvorgang-Handler verwendet wird, initiiert der Handler die Erstellung des Authentifizierungstoken basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Legt dann das Authentifizierungstoken im Objekt sessionAttributes des CTIOperationResponse-Objekts fest. Der zugehörige Nachrichtenumwandler übersetzt das sessionAttributes-Objekt in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Anbieter.
- Lambda-Proxy für Amazon Webservices (AWS-Lambda-Funktion aufrufen)
- AWS Lex-Bot (Kundeneingabe abrufen)
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Das Authentifizierungstoken, das dem aktuellen zugeordnet ist ServiceNow SprachfunktionenAnwender. |
(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 Kundenanforderung um Hilfe dar, die über einen Chat, einen Telefonanruf oder persönlich gestellt wird. Interaktionen können zur Zuweisung an Warteschlangen weitergeleitet oder direkt Service Desk-Mitarbeitern zugewiesen werden. Interaktionsdatensätze werden in der Tabelle „Interaktion“ [Interaktion] gespeichert und können jede Art von Daten enthalten, die Service-Account-Interaktionen mit einem Kunden für eine bestimmte Sitzung beschreiben.
Interaktionsdatensätze werden über einem CTIOperationRequest-Objekt zugeordnet CTIOperationRequest – setInteractionSysId(Zeichenfolgen-ID) Methode. Diese Methode wird normalerweise vom Nachrichtenumwandler aufgerufen und muss vor dem Aufrufen von aufgerufen werden GetInteractionRecord() Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| GlideRecord | Interaktions-GlideRecord-Objekt, das dem aktuellen CTIOperationRequest-Objekt zugeordnet ist. Wenn die sys_ID des Interaktionsdatensatzes für das CTIOperationRequest-Objekt nicht 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 CTIOperationRequest – setInteractionSysId(Zeichenfolgen-ID) Die Methode muss vor dem Aufrufen dieser Methode aufgerufen worden sein.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Die sys_ID des Interaktionsdatensatzes, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist. Wenn die sys_ID für das zugeordnete CTIOperationRequest-Objekt nicht 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.
Mit der vom Kunden bevorzugten Sprache können Sie von der Plattform bereitgestellte Internationalisierungs- und Lokalisierungsfunktionen verwenden, um Nachrichten und andere Kommunikationen mit dem zugehörigen Anrufer anzupassen.
Normalerweise ruft ein Vorgangs-Handler die Methode „getLanguage()“ auf, und der Nachrichtenumwandler legt die Sprache für das CTIOperationRequest-Objekt fest, indem er aufruft CTIOperationRequest – setLanguage (Zeichenfolgensprachencode) Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der ISO 639,1-Sprachcode, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist. Wenn der Sprachcode nicht festgelegt ist, wird zurückgegeben en . |
Das folgende Beispiel zeigt einen Vorgangs-Handler, der aufruft GetLanguage() 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 Computertelefonie-Integrator-Software (CTI) zurück, die für das aktuelle CTIOperationRequest-Objekt festgelegt ist.
Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNowInstanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen möglicherweise ein anderes Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung ausstellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er aufruft CTIOperationRequest – setMajorVersion(Number MAJORVERSION) Methode und ein Vorgangs-Handler verbrauchen dann den festgelegten Wert mit dieser Methode. Sie können den Nebenversionswert der Software eines Anbieters auch mit abrufen/festlegen CTIOperationRequest – getMinorVersion() Und CTIOperationRequest – setMinorVersion(Number minorversion) Methoden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Nummer | Hauptversionsnummer der CTI-Software. Wenn die Hauptversion nie festgelegt wurde, wird zurückgegeben 1 . |
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 CTI-Anbieter mit verbunden sind ServiceNowInstanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen möglicherweise ein anderes Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung ausstellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er aufruft CTIOperationRequest – setMinorVersion(Number minorversion) CTIOperationRequest – setMinorVersion(Number minorversion)Methode und ein Vorgangs-Handler verbrauchen dann den festgelegten Wert mit dieser Methode. Sie können auch den Hauptversionswert der Software eines Anbieters mit abrufen/festlegen CTIOperationRequest – getMajorVersion() CTIOperationRequest – getMajorVersion()Und CTIOperationRequest – setMajorVersion(Number MAJORVERSION) CTIOperationRequest – setMajorVersion(Number MAJORVERSION)Methoden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Nummer | Nebenversionsnummer der CTI-Software. Wenn die Nebenversion nie festgelegt wurde, wird zurückgegeben 0 . |
var request = new sn_cti_core.CTIOperationRequest('origin');
var minorVersion = request.getMinorVersion();
CTIOperationRequest – getOperationName()
Gibt den Namen des Vorgangs zurück, den der CTI-Anbieter (Computer Telephony Integration) ausführen möchte.
Der Vorgangsname bestimmt den Vorgangs-Handler, der zur Verarbeitung einer Anforderung verwendet wird. Normalerweise legt der Nachrichtenumwandler den Vorgangsnamen für das CTIOperationRequest-Objekt mithilfe von fest CTIOperationRequest – setOperationName(Zeichenfolgenname) Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der Name des Vorgangs, den der CTI-Anbieter zur Ausführung 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 Subschritt-Vorgangs-Handlers zurück, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist.
Verwenden Sie Teilschritte, um Aktionen wie Initialisierung und Validierung vor der Verarbeitung eines Vorgangs auszuführen. Im Gegensatz zu Vorgangs-Handlern, die generisch sein und von allen CTI-Anbietern verwendet werden sollen, sind Teilschritte CTI-anbieterspezifisch und verwenden Terminologie- und Benennungskonventionen, die für den CTI-Anbieter spezifisch sind.
- Versucht, den Vorgangs-Handler zu finden, der der Anforderung zugeordnet ist.
- Erste Prüfungen auf einen aufgerufenen Vorgangs-Handler
MyOperation_SUFFX. - Wenn nicht gefunden, wird nach dem Vorgangs-Handler gesucht
MyOperation. Wenn nicht gefunden, werden Fehler ausgegeben.
- Erste Prüfungen auf einen aufgerufenen Vorgangs-Handler
- Wenn der Handler gefunden wird, wird überprüft auth_requiredKennzeichnung im Vorgangs-Handler. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (abgerufen über GetAuthToken() Methode) ist in der Anforderung vorhanden. Wenn vorhanden und gültig, fahren Sie mit der Verarbeitung fort, andernfalls wird ein Fehler ausgelöst.
- Sucht den Vorgangs-Handler für den im Teilschritt übergebenen. Nehmen wir für dieses Beispiel an
SubStepName=substep.- Zuerst wird nach einem Vorgangs-Handler mit dem Namen gesucht
MyOperation_SUFFX.substep. Wenn gefunden, wird der Handler ausgeführt. - Wenn nicht gefunden, wird nach dem Handler gesucht
MyOperation.Substep. Wenn gefunden, wird der Handler ausgeführt. - Wenn nicht gefunden, wird überprüft, ob ein
Unterschritt nicht gefunden VerhaltenWurde für das Anforderungsobjekt festgelegt. - Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls treten Fehler auf.
- Zuerst wird nach einem Vorgangs-Handler mit dem Namen gesucht
- Führt den primären Vorgangs-Handler aus (
MyOpersation_SUFFXOderMyOperation.)
Normalerweise legt der Nachrichtenumwandler den Namen des Unterschritts für das CTIOperationRequest-Objekt mithilfe von fest CTIOperationRequest – setOperationSubStepName(Zeichenfolgenname) Methode. Sie können dieses Verhalten überschreiben, wenn Sie einen eigenen Umwandler erstellen, indem Sie aufrufen CTIOperationRequest – setSubStepNotFoundBehaviour (Objektverhalten) Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der Name des im CTIOperationRequest-Objekt festgelegten Unterschritt-Vorgangs-Handlers. Wenn sie nicht vorhanden ist, wird Null zurückgegeben. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var name = request.getOperationSubStepName();
CTIOperationRequest – getParameter(Zeichenfolgenschlüssel)
Gibt den Wert eines angegebenen Schlüssels zurück, der zuvor für das aktuelle CTIOperationRequest-Objekt festgelegt wurde.
Mithilfe der Parametermethoden „GET/Set“ können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangs-Handler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel/Wert-Paare von Daten enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er aufruft CTIOperationRequest – setParameter (Zeichenfolgenschlüssel, Objektwert) Methode und der Vorgangs-Handler verbrauchen sie mit dieser Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| key | Zeichenfolge | Der Name des zurückzugebenden Schlüsselwerts. |
| 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.
Mithilfe der Parametermethoden „GET/Set“ können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangs-Handler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel/Wert-Paare von Daten enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er aufruft CTIOperationRequest – setParameter (Zeichenfolgenschlüssel, Objektwert) Methode und der Vorgangs-Handler verbrauchen sie mit dieser Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Eine Zuordnung von Schlüssel-Wert-Paaren, die zuvor für das CTIOperationRequest-Objekt festgelegt wurden. Diese Schlüssel-Wert-Paare sind Freiform und werden durch die Anforderungen des Vorgangs-Handlers definiert. Die zurückgegebenen Werte sind entweder Zeichenfolgen oder Zahlen. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var parms = request.getParameters();
for(var key in parms) {
gs.info(key + '=' + parms[key]);
}
CTIOperationRequest – getSessionAttribute (Zeichenfolgenschlüssel)
Gibt den Wert eines angegebenen Sitzungsattribut-Schlüssels zurück, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist.
Mithilfe der Methoden zum Abrufen/Festlegen von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangs-Handler übergeben werden. Das sessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Paare enthalten, die für die Dauer einer vom Computer-Telefonie-Integrationsanbieter definierten Sitzung gültig sind, z. B. die Telefonnummer des Kontakts. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Der Vorgangs-Handler bestimmt, welche Sitzungsattribut-Schlüssel/Wert-Paare benötigt werden, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Attribute für das CTIOperationRequest-Objekt fest, indem er aufruft CTIOperationRequest – setSessionAttribute (Zeichenfolgenschlüssel, Objektwert) Methode. Sitzungsattribute unterscheiden sich insofern von Parametern, als sie für die Lebensdauer der Sitzung (z. B. den gesamten Anruf) beibehalten werden und vom CTI-Anbieter bei jeder Vorgangsanforderung innerhalb dieser Anrufsitzung zurückgegeben werden sollten.
| Name | Typ | Beschreibung |
|---|---|---|
| key | Zeichenfolge | Der Name des zurückzugebenden Schlüsselwerts. |
| 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.
Mithilfe der Methoden zum Abrufen/Festlegen von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangs-Handler übergeben werden. Das sessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Paare enthalten, die für die Dauer einer vom Computer-Telefonie-Integrationsanbieter definierten Sitzung gültig sind, z. B. die Telefonnummer des Kontakts. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Der Vorgangs-Handler bestimmt, welche Sitzungsattribut-Schlüssel/Wert-Paare benötigt werden, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Attribute für das CTIOperationRequest-Objekt fest, indem er aufruft CTIOperationRequest – setSessionAttribute (Zeichenfolgenschlüssel, Objektwert) Methode. Sitzungsattribute unterscheiden sich insofern von Parametern, als sie für die Lebensdauer der Sitzung (z. B. den gesamten Anruf) beibehalten werden und vom CTI-Anbieter bei jeder Vorgangsanforderung innerhalb dieser Anrufsitzung zurückgegeben werden sollten.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Eine Zuordnung von Sitzungsattribut-Schlüssel-Wert-Paaren, die für das zugehörige CTIOperationResponse-Objekt festgelegt wurden. Diese Zuordnung ist 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 eine Subsep zurück, wenn der Vorgangs-Handler eines Teilschritts nicht gefunden wird.
Verwenden Sie Teilschritte, um Aktionen wie Initialisierung und Validierung vor der Verarbeitung eines Vorgangs auszuführen. Im Gegensatz zu Vorgangs-Handlern, die generisch sein und von allen CTI-Anbietern verwendet werden sollen, sind Teilschritte CTI-anbieterspezifisch und verwenden Terminologie- und Benennungskonventionen, die für den CTI-Anbieter spezifisch sind.
Wenn der angeforderte Unterschritt-Vorgangs-Handler nicht von gefunden werden kann ServiceNow SprachfunktionenFramework, versucht es, das Verhalten „Schritt nicht gefunden“ zu verwenden. Dieses Verhalten wird normalerweise vom Nachrichtenumwandler festgelegt, wenn ein Vorgang anfänglich angefordert wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Betriebennicht Gefunden Verhaltensweisen | Das Verhalten/die Verarbeitung, das ausgeführt werden soll, wenn für die Kombination aus Vorgang und Unterschritt kein Vorgangs-Handler gefunden werden kann ( <operation_name>.Substep>). Wenn nicht definiert, wird Null zurückgegeben. Mögliche Werte:
|
var request = new sn_cti_core.CTIOperationRequest('origin');
var behavior = request.getSubStepNotFoundBehaviour();
CTIOperationRequest – setAuthToken(Zeichenfolgen-ID)
Legt ein Authentifizierungstoken für das aktuelle CTIOperationRequest-Objekt fest.
Dieses Token wird von verwendet ServiceNow SprachfunktionenFramework zur Authentifizierung des aktuellen ServiceNow SprachfunktionenAnwender vor Ausführung des angeforderten Vorgangs-Handlers, wenn der Handler ist auth_requiredKennzeichnung ist auf „wahr“ festgelegt. Die auth_requiredKennzeichnung ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler]. Die Lebensdauer eines Authentifizierungstoken sollte für die Lebensdauer der Anrufsitzung betragen, wird jedoch vom CTI-Anbieter festgelegt.
Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, indem Sie einen eigenen Authentifizierungsvorgang-Handler erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.
Wenn der von der Instanz bereitgestellte Authentifizierungsvorgang-Handler verwendet wird, initiiert der Handler die Erstellung des Authentifizierungstoken basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Legt dann das Authentifizierungstoken im Objekt sessionAttributes des CTIOperationResponse-Objekts fest. Der zugehörige Nachrichtenumwandler übersetzt das sessionAttributes-Objekt in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Anbieter.
- Lambda-Proxy für Amazon Webservices (AWS-Lambda-Funktion aufrufen)
- AWS Lex-Bot (Kundeneingabe abrufen)
| Name | Typ | Beschreibung |
|---|---|---|
| ID | Zeichenfolge | Das Authentifizierungstoken für die zugeordnete ServiceNow SprachfunktionenAnwender. |
| Typ | Beschreibung |
|---|---|
| Ungültig |
Beispiel für das Nachrichtentransformatorskript, 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(Zeichenfolgen-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 verwalten möchten, muss die sys_ID des Interaktionsdatensatzes für den gesamten verwaltet werden ServiceNow SprachfunktionenAnrufsitzung.
Normalerweise erstellt ein Vorgangs-Handler einen Interaktionsdatensatz, wenn ein neuer Kontaktanruf initiiert wird. Legt dann die sys_ID des Interaktionsdatensatzes und den Tabellennamen für das zugehörige CTIOperationResponse-Objekt als Sitzungsattribute fest CTIOperationRequest – setSessionAttribute (Zeichenfolgenschlüssel, Objektwert) Methode. Der zugehörige Methodenumwandler übersetzt diese Informationen dann in die Nutzlast des Anbieters für Computertelefonie-Integration (CTI) und sendet sie an den CTI-Anbieter zurück.
Der CTI-Anbieter muss die sys_ID des Interaktionsdatensatzes für die Kontaktsitzung lokal speichern. Jedes Mal, wenn der CTI-Anbieter mit interagiert ServiceNow SprachfunktionenFür diese Kontaktsitzung muss die entsprechende sys_ID des Interaktionsdatensatzes in ihrer Nutzlast zurückgegeben werden. 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 zugehörige CTIOperationtRequest-Objekt festzulegen.
Die CTIOperationRequest – getInteractionRecord() Die Methode verwendet diese sys_ID, um den richtigen Interaktionsdatensatz für die Kontaktsitzung zu erhalten.
| Name | Typ | Beschreibung |
|---|---|---|
| sys_id | Zeichenfolge | SYS_ID des Interaktionsdatensatzes, der der Anforderung zugeordnet werden soll. Tabelle: Interaktion [Interaktion] |
| Typ | Beschreibung |
|---|---|
| Ungültig |
Beispiel für ein Nachrichtentransformatorskript, das die sys_ID des Interaktionsdatensatzes aus der eingehenden Nutzlast extrahiert (als Parameter übergeben) und sie für das zugehörige 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 (Zeichenfolgensprachencode)
Legt den ISO 639,1-Sprachcode fest, der bei der Verarbeitung des zugeordneten Vorgangs für ein CTIOperationRequest-Objekt verwendet werden soll.
Mit der vom Kunden bevorzugten Sprache können Sie von der Plattform bereitgestellte Internationalisierungs- und Lokalisierungsfunktionen verwenden, um Nachrichten und andere Kommunikationen mit dem zugehörigen Anrufer anzupassen. Normalerweise legt der Nachrichtenumwandler die Sprache für das CTIOperationRequest-Objekt fest.
| Name | Typ | Beschreibung |
|---|---|---|
| Sprachcode | Zeichenfolge | Der ISO 639,1-Sprachcode, der bei der Verarbeitung des zugehörigen Vorgangs verwendet werden soll. |
| Typ | Beschreibung |
|---|---|
| Ungültig |
{
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 Computertelefonintegrator-Anbietersoftware (CTI) fest, die die Anforderung für das zugehörige CTIOperationRequest-Objekt stellt.
Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNowInstanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen möglicherweise ein anderes Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung ausstellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem diese Methode aufgerufen wird, und ein Vorgangs-Handler verbraucht dann den festgelegten Wert mithilfe von CTIOperationRequest – getMajorVersion() Methode. Sie können den Nebenversionswert der Software eines Anbieters auch mit abrufen/festlegen CTIOperationRequest – getMinorVersion() Und CTIOperationRequest – setMinorVersion(Number minorversion) Methoden.
| Name | Typ | Beschreibung |
|---|---|---|
| MAJORVERSION | Nummer | Hauptversion der CTI-Anbietersoftware, die den Vorgang anfordert. Wenn dieser Wert nicht zuvor festgelegt wurde, wird zurückgegeben 1 . |
| Typ | Beschreibung |
|---|---|
| Ungültig |
var request = new sn_cti_core.CTIOperationRequest('origin');
request.setMajorVersion(2);
CTIOperationRequest – setMinorVersion(Number minorversion)
Legt die Nebenversion der Computertelefonintegrator-Anbietersoftware (CTI) fest, die die Anforderung für das zugehörige CTIOperationRequest-Objekt stellt.
Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNowInstanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen möglicherweise ein anderes Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzelnen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die die Anforderung ausstellt, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangs-Handler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem diese Methode aufgerufen wird, und ein Vorgangs-Handler verbraucht dann den festgelegten Wert mithilfe von CTIOperationRequest – getMinorVersion() Methode. Sie können auch den Hauptversionswert der Software eines Anbieters mit abrufen/festlegen CTIOperationRequest – getMajorVersion() Und CTIOperationRequest – setMajorVersion(Number MAJORVERSION) Methoden.
| Name | Typ | Beschreibung |
|---|---|---|
| Minorversion | Nummer | Nebenversion der CTI-Anbietersoftware, die den Vorgang anfordert. Wenn dieser Wert nicht zuvor festgelegt wurde, wird zurückgegeben 0 . |
| Typ | Beschreibung |
|---|---|
| Ungültig |
var request = new sn_cti_core.CTIOperationRequest('origin');
...
request.setMinorVersion(3);
CTIOperationRequest – setOperationName(Zeichenfolgenname)
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 über den zugehörigen Nachrichtenumwandler auf.
| Name | Typ | Beschreibung |
|---|---|---|
| name | Zeichenfolge | Der Name des Vorgangs, den der CTI-Anbieter derzeit ausführen möchte. Dieser Name muss mit dem Namen des Vorgangs-Handlers übereinstimmen, der zur Verarbeitung der Anforderung verwendet werden soll. Wenn nicht, wird ein Fehler ausgelöst. Sie können die verfügbaren Vorgangs-Handler in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler] suchen. |
| Typ | Beschreibung |
|---|---|
| Ungültig |
{
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(Zeichenfolgenname)
Legt den Namen des Vorgangsunterschritts für das aktuelle CTIOperationRequest-Objekt fest.
Verwenden Sie Teilschritte, um Aktionen wie Initialisierung und Validierung vor der Verarbeitung eines Vorgangs auszuführen. Im Gegensatz zu Vorgangs-Handlern, die generisch sein und von allen CTI-Anbietern verwendet werden sollen, sind Teilschritte CTI-anbieterspezifisch und verwenden Terminologie- und Benennungskonventionen, die für den CTI-Anbieter spezifisch sind.
- Versucht, den Vorgangs-Handler zu finden, der der Anforderung zugeordnet ist.
- Erste Prüfungen auf einen aufgerufenen Vorgangs-Handler
MyOperation_SUFFX. - Wenn nicht gefunden, wird nach dem Vorgangs-Handler gesucht
MyOperation. Wenn nicht gefunden, werden Fehler ausgegeben.
- Erste Prüfungen auf einen aufgerufenen Vorgangs-Handler
- Wenn der Handler gefunden wird, wird überprüft auth_requiredKennzeichnung im Vorgangs-Handler. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (abgerufen über GetAuthToken() Methode) ist in der Anforderung vorhanden. Wenn vorhanden und gültig, fahren Sie mit der Verarbeitung fort, andernfalls wird ein Fehler ausgelöst.
- Sucht den Vorgangs-Handler für den im Teilschritt übergebenen. Nehmen wir für dieses Beispiel an
SubStepName=substep.- Zuerst wird nach einem Vorgangs-Handler mit dem Namen gesucht
MyOperation_SUFFX.substep. Wenn gefunden, wird der Handler ausgeführt. - Wenn nicht gefunden, wird nach dem Handler gesucht
MyOperation.Substep. Wenn gefunden, wird der Handler ausgeführt. - Wenn nicht gefunden, wird überprüft, ob ein
Unterschritt nicht gefunden VerhaltenWurde für das Anforderungsobjekt festgelegt. - Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls treten Fehler auf.
- Zuerst wird nach einem Vorgangs-Handler mit dem Namen gesucht
- Führt den primären Vorgangs-Handler aus (
MyOpersation_SUFFXOderMyOperation.)
Sie können das Standardverhalten eines Teilschritts festlegen, indem Sie aufrufen CTIOperationRequest – setSubStepNotFoundBehaviour (Objektverhalten) Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| name | Zeichenfolge | Der Name des Teilschritts, den der CTI-Anbieter ausführen möchte. |
| Typ | Beschreibung |
|---|---|
| Ungültig |
(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 (Zeichenfolgenschlüssel, Objektwert)
Legt das angegebene Schlüssel-Wert-Paar für das Parameterobjekt des aktuellen CTIOperationRequest-Objekts fest.
Mithilfe der Parametermethoden „GET/Set“ können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangs-Handler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel/Wert-Paare von Daten enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem diese Methode aufgerufen wird, und der Vorgangs-Handler verbraucht sie mit CTIOperationRequest – getParameter(Zeichenfolgenschlüssel) Oder CTIOperationRequest – getParameters() Methode.
JSON.Parse(JSON.stringify(object)) Vorgang. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß über die gesamte Verarbeitungskette des Vorgangs weitergegeben.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);
{"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"}}
| 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:
|
| Typ | Beschreibung |
|---|---|
| Ungültig |
{
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 (Zeichenfolgenschlüssel, Objektwert)
Legt das angegebene Sitzungsattribut-Schlüssel-Wert-Paar für das aktuelle CTIOperationRequest-Objekt fest.
Mithilfe der Methoden zum Abrufen/Festlegen von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangs-Handler übergeben werden. Das sessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, die für die Dauer einer vom Computer-Telefonie-Integrationsanbieter definierten Sitzung gültig sind. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Der Vorgangs-Handler bestimmt, welche Sitzungsattribut-Schlüssel/Wert-Paare benötigt werden, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Attribute für das CTIOperationRequest-Objekt fest, indem diese Methode aufgerufen wird, und der Vorgangs-Handler ruft die Attribute mit ab CTIOperationRequest – getSessionAttribute (Zeichenfolgenschlüssel) Oder CTIOperationRequest – getSessionAttribute() Methode.
JSON.Parse(JSON.stringify(object)) Vorgang. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß über die gesamte Verarbeitungskette des Vorgangs weitergegeben.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);
{"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"}}
| 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:
|
| Typ | Beschreibung |
|---|---|
| Ungültig |
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 (Objektverhalten)
Legt das Verhalten fest, das ausgeführt werden soll, wenn der Vorgangs-Handler des aktuellen Unterabschritts nicht gefunden wird.
Diese Methode sollte vom Eingabenachrichten-Umwandler aufgerufen werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Verhalten | Betriebennicht Gefunden Verhaltensweisen | 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:
|
| Typ | Beschreibung |
|---|---|
| Ungültig |
(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);