CTIOperationRequest: Bereichsbezogen, 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 Sprachfunktionen Framework.
Normalerweise ist ein Nachrichtentransformator für die Analyse einer eingehenden CTI-spezifischen Nutzlast und die Festlegung 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.
- Amazon Web Services (AWS) Lambda-Proxy (AWS Lambda-Funktion aufrufen)
- AWS Lex-Bot (Kundeneingabe abrufen)
Eine Nutzlast wird an einen übergeben ServiceNow Instanz aus einer externen Quelle, z. B. von einem Computer Telephony Integration (CTI)-Anbieter, der eine Vorgangsanforderung stellt. Wenn eine Anforderung empfangen wird, analysiert ein Nachrichtenumwandler die Nutzlast und verwendet die CTIOperationRequest Set-Methoden, um Nutzlastwerte wie den Namen des Vorgangs-Handlers für ein Vorgangs- und kontaktspezifisches CTIOperationRequest-Objekt festzulegen.
Das folgende Nachrichtenumwandler-Skript analysiert beispielsweise die in JSON übergebene Nutzlast und legt die Werte fest, die der zugehörige Vorgangs-Handler für das CTIOperationRequest-Objekt benötigt.
{
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 ServiceNow Sprachfunktionen Framework instanziiert den angegebenen Vorgangs-Handler. Der Betriebshandler verwendet CTIOperationResponse Skripteinbindung – Get-Methoden, um die Informationen zu erhalten, die sie vom zugehörigen CTIOperationRequest-Objekt benötigt, um den angeforderten Vorgang zu verarbeiten.
Beispielsweise speichert das folgende Vorgangs-Handler-Skript 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 Sprachfunktionen Plugin (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 zugehörige CTIOperationRequest-Objekt festgelegt ist.
Dieses Token wird von verwendet ServiceNow Sprachfunktionen Framework zur Authentifizierung des aktuellen ServiceNow Sprachfunktionen Anwender, bevor der angeforderte Vorgangs-Handler ausgeführt wird, falls der Handler auth_requiredKennzeichnung ist auf „wahr“ festgelegt. Die auth_requiredKennzeichnung ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_Operation_Handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung betragen, wird jedoch vom CTI-Anbieter festgelegt.
Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, indem Sie einen eigenen Authentifizierungsvorgang-Handler erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.
Wenn der von der Instanz bereitgestellte Authentifizierungsvorgang-Handler verwendet wird, initiiert der Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Dann wird das Authentifizierungstoken im Objekt sessionAttributes des CTIOperationResponse-Objekts festgelegt. Der zugehörige Nachrichtenumwandler übersetzt das sessionAttributes-Objekt in die CTI-spezifische Nutzlast und sendet es dann an den CTI-Anbieter.
- Amazon Web Services (AWS) Lambda-Proxy (AWS Lambda-Funktion aufrufen)
- AWS Lex-Bot (Kundeneingabe abrufen)
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Das Authentifizierungstoken, das dem aktuellen zugeordnet ist ServiceNow Sprachfunktionen Anwender. |
(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 um Hilfe dar, die durch 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“ [Interaction] 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 ein CTIOperationRequest-Objekt zugeordnet CTIOperationRequest – setInteractionSysId(Zeichenfolgen-ID) Methode. Diese Methode wird normalerweise vom Nachrichtenumwandler aufgerufen und muss vor dem Aufruf 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, gibt null zurück. |
(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 zugehörige 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 Kommunikation 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 de . |
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 Software „Computer Telephony Integrator“ (CTI) für das aktuelle CTIOperationRequest-Objekt zurück.
Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNow Instanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen möglicherweise ein anderes Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die 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 auch den Nebenversionswert der Software eines Anbieters mit abrufen/festlegen CTIOperationRequest – getMinorVersion() Und CTIOperationRequest – setMinorVersion(Number minorversion) Methoden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Anzahl | 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 ServiceNow Instanz 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 einzigen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die 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 |
|---|---|
| Anzahl | 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 zum Verarbeiten 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-Provider 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 auszuführen, bevor Sie einen Vorgang verarbeiten. 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.
- Zuerst sucht nach einem aufgerufenen Vorgangs-Handler
MyOperation_SUFFX. - Wenn nicht gefunden, wird nach dem Vorgangs-Handler gesucht
MyOperation. Wenn nicht gefunden, Fehler ausgegeben.
- Zuerst sucht nach einem aufgerufenen Vorgangs-Handler
- Wenn der Handler gefunden wird, überprüft auth_requiredKennzeichnung im Vorgangs-Handler. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (über abgerufen) ist 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 nach dem Vorgangs-Handler für den im Teilschritt übergebenen. Nehmen wir für dieses Beispiel an
SubStepName=substep.- 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 gesucht
MyOperation.Substep. Wenn gefunden, wird der Handler ausgeführt. - Wenn nicht gefunden, wird überprüft, ob ein
SubStepNotGefunden VerhaltenWurde für das Anforderungsobjekt festgelegt. - Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls werden Fehler ausgegeben.
- Sucht zuerst nach einem Vorgangs-Handler mit dem Namen
- 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 für das CTIOperationRequest-Objekt festgelegten Unterschritt-Vorgangs-Handlers. Wenn er 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.
Mit den GET/Set-Parametermethoden 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, gibt Null zurück. |
(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.
Mit den GET/Set-Parametermethoden 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.
Mit den Methoden zum Abrufen/Festlegen des Sitzungsattributs 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, 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, gibt Null zurück. |
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.
Mit den Methoden zum Abrufen/Festlegen des Sitzungsattributs 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, 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 auszuführen, bevor Sie einen Vorgang verarbeiten. 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 Sprachfunktionen Framework, 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 Verhalten | 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 Sprachfunktionen Framework zur Authentifizierung des aktuellen ServiceNow Sprachfunktionen Anwender, bevor der angeforderte Vorgangs-Handler ausgeführt wird, falls der Handler auth_requiredKennzeichnung ist auf „wahr“ festgelegt. Die auth_requiredKennzeichnung ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_Operation_Handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung betragen, wird jedoch vom CTI-Anbieter festgelegt.
Sie können die für Ihre Implementierung erforderliche Authentifizierungs-/Autorisierungsbehandlung definieren, indem Sie einen eigenen Authentifizierungsvorgang-Handler erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.
Wenn der von der Instanz bereitgestellte Authentifizierungsvorgang-Handler verwendet wird, initiiert der Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Dann wird das Authentifizierungstoken im Objekt sessionAttributes des CTIOperationResponse-Objekts festgelegt. Der zugehörige Nachrichtenumwandler übersetzt das sessionAttributes-Objekt in die CTI-spezifische Nutzlast und sendet es dann an den CTI-Anbieter.
- Amazon Web Services (AWS) Lambda-Proxy (AWS Lambda-Funktion aufrufen)
- AWS Lex-Bot (Kundeneingabe abrufen)
| Name | Typ | Beschreibung |
|---|---|---|
| id | Zeichenfolge | Das Authentifizierungstoken für die zugeordnete ServiceNow Sprachfunktionen Anwender. |
| Typ | Beschreibung |
|---|---|
| void |
Beispiel für ein 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 Sprachfunktionen Anrufsitzung.
Normalerweise erstellt ein Vorgangs-Handler einen Interaktionsdatensatz, wenn ein neuer Kontaktanruf initiiert wird. Anschließend werden die sys_ID des Interaktionsdatensatzes und der Tabellenname für das zugehörige CTIOperationResponse-Objekt als Sitzungsattribute mit festgelegt CTIOperationRequest – setSessionAttribute (Zeichenfolgenschlüssel, Objektwert) Methode. Der zugehörige Methodenumwandler übersetzt diese Informationen dann in die Nutzlast des CTI-Anbieters (Computer Telephony Integration) und sendet sie an den CTI-Anbieter zurück.
Der CTI-Provider muss die sys_ID des Interaktionsdatensatzes für die Kontaktsitzung lokal speichern. Jedes Mal, wenn der CTI-Anbieter mit interagiert ServiceNow Sprachfunktionen Fü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 |
|---|---|
| void |
Beispiel für ein Nachrichtentransformatorskript, das die sys_ID des Interaktionsdatensatzes aus der eingehenden Nutzlast (übergeben als Parameter) extrahiert und auf das zugehörige CTIOperationRequest-Objekt festgelegt.
{
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 zugehörigen 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 Kommunikation 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 |
|---|---|
| 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 CTI-Anbietersoftware (Computer Telephony Integrator) fest, die die Anforderung für das zugehörige CTIOperationRequest-Objekt stellt.
Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNow Instanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen möglicherweise ein anderes Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die 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.
In der Regel 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 auch den Nebenversionswert der Software eines Anbieters mit abrufen/festlegen CTIOperationRequest – getMinorVersion() Und CTIOperationRequest – setMinorVersion(Number minorversion) Methoden.
| Name | Typ | Beschreibung |
|---|---|---|
| majorVersion | Anzahl | Hauptversion der CTI-Anbietersoftware, die die Vorgangsanforderung stellt. Wenn dieser Wert zuvor nicht festgelegt wurde, wird zurückgegeben 1 . |
| Typ | Beschreibung |
|---|---|
| void |
var request = new sn_cti_core.CTIOperationRequest('origin');
request.setMajorVersion(2);
CTIOperationRequest – setMinorVersion(Number minorversion)
Legt die Nebenversion der CTI-Anbietersoftware (Computer Telephony Integrator) fest, die die Anforderung für das zugehörige CTIOperationRequest-Objekt stellt.
Verwenden Sie diese Methode, wenn die CTI-Anbieter mit verbunden sind ServiceNow Instanz führt mehrere Versionen ihrer Software aus, da verschiedene Softwareversionen möglicherweise ein anderes Verarbeitungsverhalten erfordern. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangs-Handler zu haben. Sie können dann die Verarbeitungsunterschiede verarbeiten, indem Sie einfach die Version der Software überprüfen, die 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.
In der Regel 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 | Anzahl | Nebenversion der CTI-Anbietersoftware, die die Vorgangsanforderung stellt. Wenn dieser Wert zuvor nicht festgelegt wurde, wird zurückgegeben 0 . |
| Typ | Beschreibung |
|---|---|
| void |
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-Provider derzeit versucht, auszuführen. 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 |
|---|---|
| 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(Zeichenfolgenname)
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 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.
- Zuerst sucht nach einem aufgerufenen Vorgangs-Handler
MyOperation_SUFFX. - Wenn nicht gefunden, wird nach dem Vorgangs-Handler gesucht
MyOperation. Wenn nicht gefunden, Fehler ausgegeben.
- Zuerst sucht nach einem aufgerufenen Vorgangs-Handler
- Wenn der Handler gefunden wird, überprüft auth_requiredKennzeichnung im Vorgangs-Handler. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (über abgerufen) ist 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 nach dem Vorgangs-Handler für den im Teilschritt übergebenen. Nehmen wir für dieses Beispiel an
SubStepName=substep.- 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 gesucht
MyOperation.Substep. Wenn gefunden, wird der Handler ausgeführt. - Wenn nicht gefunden, wird überprüft, ob ein
SubStepNotGefunden VerhaltenWurde für das Anforderungsobjekt festgelegt. - Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls werden Fehler ausgegeben.
- Sucht zuerst nach einem Vorgangs-Handler mit dem Namen
- 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-Provider ausführen möchte. |
| 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(Zeichenfolgenschlüssel, Objektwert)
Legt das angegebene Schlüssel-Wert-Paar für das Parameterobjekt des aktuellen CTIOperationRequest-Objekts fest.
Mit den GET/Set-Parametermethoden 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 mithilfe von 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 |
|---|---|
| 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 (Zeichenfolgenschlüssel, Objektwert)
Legt das angegebene Sitzungsattribut-Schlüssel-Wert-Paar für das aktuelle CTIOperationRequest-Objekt fest.
Mit den Methoden zum Abrufen/Festlegen des Sitzungsattributs 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 mithilfe von 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 |
|---|---|
| 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 (Objektverhalten)
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.
| Name | Typ | Beschreibung |
|---|---|---|
| Verhalten | Betriebennicht Gefunden Verhalten | Zu verwendendes Verhalten, wenn für den Teilschritt kein Verarbeitungsverhalten angegeben ist. Dies muss ein Verhalten sein, das im Objekt „CTIOperationRequest.OperationNotFoundBehaviours“ definiert ist. Mögliche Werte:
|
| 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);