CTIOperationRequest: Bereichsbezogen, global
Die CTIOperationRequest- Skripteinbindung stellt Methoden zum Festlegen und Abrufen von Daten für das aktuelle CTIOperationRequest-Objekt bereit.
Sie verwenden CTIOperationRequest-Objekte, um Informationen zwischen einem Nachrichtenumwandler und einem Vorgangshandler im Framework ServiceNow Sprachfunktionen zu übergeben.
Normalerweise ist ein Nachrichtenumwandler für die Analyse einer eingehenden CTI-spezifischen Nutzlast und das Festlegen der Nutzlastdaten für ein zugeordnetes 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 von einer externen Quelle an eine Instanz ServiceNow übergeben, z. B. von einem Anbieter von Computer-Telefonie-Integrationen (CTI), der eine Vorgangsanforderung sendet. Wenn eine Anforderung empfangen wird, analysiert ein Nachrichtenumwandler die Nutzlast und verwendet die festgelegten CTIOperationRequest-Methoden, um Nutzlastwerte, z. B. den Namen des Vorgangshandlers, auf ein vorgangs- und kontaktspezifisches CTIOperationRequest-Objekt festzulegen.
Das folgende Nachrichtenumwandlerskript analysiert beispielsweise die übergebene JSON-Nutzlast und legt die Werte fest, die für den zugeordneten Vorgangshandler 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, instanziiert das Framework ServiceNow Sprachfunktionen den angegebenen Vorgangs-Handler. Der Betriebshandler verwendet die CTIOperationResponse- Skripteinbindungs-Methoden zum Abrufen der Informationen, die er vom zugeordneten CTIOperationRequest-Objekt benötigt, um den angeforderten Vorgang zu verarbeiten.
Das folgende Vorgangs-Handler-Skript speichert beispielsweise Werte, die für das Objekt CTIOperationRequest in dem Interaktionsdatensatz festgelegt wurden, der dem Anruf zugeordnet ist.
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, ctx) {
// Returns the sys_id of the interaction record.
var interactionSysId = request.getInteractionSysId();
var number = request.getParameter('number');
var addComment = request.getParameter('add_comment');
addComment = addComment ? addComment.toLowerCase() : addComment;
addComment = 'yes' === addComment || 'true' === addComment || '1' === addComment;
var workNotes = request.getParameter('work_notes');
var message = gs.getMessage('Thankyou');
var interactionGr = request.getInteractionRecord();
var openedFor = interactionGr ? interactionGr.getValue('opened_for') : null;
if (openedFor && number && addComment && workNotes) {
var now_GR = new GlideRecordSecure('incident');
now_GR.addQuery('caller_id', openedFor);
now_GR.addQuery('number', number);
now_GR.query();
if (now_GR.next()) {
now_GR.work_notes += workNotes;
now_GR.update();
message = now_GR.getMessage('Your comment was added');
}
}
response.setStatusCode(200);
response.setMessage(message);
})(request, response, ctx);Weitere Informationen zum Erstellen von Vorgangshandlern finden Sie unter Kontakt-Flow für automatisierte Anruferinteraktion konfigurieren.
Diese Skripteinbindung wird im Namespace sn_cti_core ausgeführt. Bevor Sie auf die Skripteinbindung CTIOperationRequest zugreifen können, muss das Plugin ServiceNow Sprachfunktionen (sn_cti_core) aktiviert werden. Informationen zur Aktivierung von ServiceNow Sprachfunktionenfinden Sie unter ServiceNow-Sprachanwendungen installieren.
Weitere Informationen zu ServiceNow Sprachfunktionenfinden Sie unter ServiceNow-Sprachfunktionen.
CTIOperationRequest: CTIOperationRequest (Zeichenfolgeursprung)
Instanziiert ein CTIOperationRequest-Objekt.
| Name | Typ | Beschreibung |
|---|---|---|
| origin | Zeichenfolge | Optional. Ursprung der Anforderung. Normalerweise der Name des Anbieters der Computer-Telefonie-Integration. 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 den Authentifizierungstokensatz für das zugeordnete CTIOperationRequest-Objekt zurück.
Dieses Token wird vom Framework ServiceNow Sprachfunktionen verwendet, um den aktuellen Anwender ServiceNow Sprachfunktionen zu authentifizieren, bevor der angeforderte Vorgangshandler ausgeführt wird, wenn die Kennzeichnung auth_required des Handlers auf „wahr“ festgelegt ist. Die Kennzeichnung auth_required ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung gelten, wird jedoch vom CTI-Anbieter festgelegt.
Sie können definieren, welche Authentifizierungs-/Autorisierungsbehandlung für Ihre -Implementierung erforderlich ist, indem Sie einen eigenen Handler für Authentifizierungsvorgänge erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.
Bei Verwendung des von der Instanz bereitgestellten Handlers für den Authentifizierungsvorgang initiiert der -Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Anschließend wird das Authentifizierungstoken im Objekt „sessionAttributes“ des Objekts „CTIOperationResponse“ festgelegt. Der zugeordnete Nachrichtenumwandler übersetzt das Objekt „sessionAttributes“ in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Anbieter.
- 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 Anwender ServiceNow Sprachfunktionen zugeordnet ist. |
(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 nach Unterstützung dar, die im Chat, per Telefon 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 Interaktionstabelle [interaction] gespeichert und können alle Arten von Daten enthalten, die Service-Account-Interaktionen mit einem Kunden für eine bestimmte Sitzung beschreiben.
Interaktionsdatensätze werden über die Methode „CTIOperationRequest - setInteractionSysId(String Id)“ einem CTIOperationRequest-Objekt zugeordnet. Diese Methode wird normalerweise vom Nachrichtenumwandler aufgerufen und muss vor dem Aufrufen der getInteractionRecord()- Methode aufgerufen werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| GlideRecord | GlideRecord-Objekt der Interaktion, das dem aktuellen CTIOperationRequest-Objekt zugeordnet ist. Wenn die sys_id des Interaktionsdatensatzes nicht für das CTIOperationRequest-Objekt festgelegt wurde, wird NULL zurückgegeben. |
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {
var notes = '', lang = request.getLanguage();
try {
// Returns the interaction record (GlideRecord) set on the passed in CTIOperationRequest object
var interactionGr = request.getInteractionRecord();
var now_GR = new GlideRecord('sys_user');
if(interactionGr && now_GR.get(interactionGr.opened_for.toString())) {
if(now_GR.locked_out == true) {
notes += gs.getMessageLang("User record found locked. Unlocking the account.\n", lang);
now_GR.locked_out=false;
now_GR.update();
response.setStatusCode(200);
response.setMessage(gs.getMessageLang("Your account has been unlocked.", lang));
} else {
notes += gs.getMessageLang("User record not locked.\n", lang);
response.setStatusCode(200);
response.setMessage(gs.getMessageLang("Your account doesn't seem to be locked.", lang));
}
} else {
notes += gs.getMessageLang("User record not found. Transfer to agent\n", lang);
response.setStatusCode(302);
response.setMessage(gs.getMessageLang("I am unable to find your record. Let me transfer to someone who can help.", lang));
}
if(interactionGr) {
interactionGr.work_notes = notes;
interactionGr.update();
}
} catch(e) {
ctx.setError(e);
}
})(request, response, ctx);
CTIOperationRequest – getInteractionSysId()
Gibt die sys_id des Interaktionsdatensatzes zurück, der dem aktuellen CTIOperationRequest-Objekt zugeordnet ist.
Die Methode „CTIOperationRequest - setInteractionSysId(String Id)“ muss vor dem 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.
Wenn Sie die vom Kunden bevorzugte Sprache verwenden, können Sie die von der Plattform bereitgestellten Internationalisierungs- und Lokalisierungsfunktionen verwenden, um Nachrichten und andere Kommunikation mit dem zugehörigen Anrufer anzupassen.
Normalerweise ruft ein Vorgangshandler die Methode „getLanguage()“ auf, und der Nachrichtenumwandler legt die Sprache für das Objekt „CTIOperationRequest“ fest, indem er die Methode „CTIOperationRequest - setLanguage(String LanguageCode)“ aufruft.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der ISO 639.1-Sprachcode für das aktuelle CTIOperationRequest-Objekt. Wenn der Sprachcode nicht festgelegt ist, wird enzurückgegeben. |
Das folgende Beispiel zeigt einen Vorgangshandler, der getLanguage() aufruft, um die bevorzugte Sprache des Anrufers abzurufen.
(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 des Softwaresatzes für Computer-Telefonie-Integratoren (CTI) für das aktuelle CTIOperationRequest-Objekt zurück.
Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen ein unterschiedliches Verarbeitungsverhalten erfordern können. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangshandler zu verwenden. Sie können dann die Verarbeitungsunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, von der die Anforderung gestellt wird, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangshandler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest - setMajorVersion(Number majorVersion) aufruft. Ein Vorgangs-Handler verbraucht dann den festgelegten Wert mit dieser Methode. Sie können den Wert der Nebenversion der Software eines Anbieters auch mit den Methoden CTIOperationRequest - getMinorVersion() und CTIOperationRequest - setMinorVersion(Number majorVersion) abrufen/festlegen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Nummer | Nummer der Hauptversion der CTI-Software. Wenn die Hauptversion nie festgelegt wurde, wird 1zurückgegeben. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var majorVersion = request.getMajorVersion();
CTIOperationRequest – getMinorVersion()
Gibt die Nebenversion der Software „Computer Teletelefony Integration“ (CTI) zurück, die einem CTIOperationRequest-Objekt zugeordnet ist.
Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen ein unterschiedliches Verarbeitungsverhalten erfordern können. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangshandler zu verwenden. Sie können dann die Verarbeitungsunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, von der die Anforderung gestellt wird, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangshandler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das CTIOperationRequest-Objekt fest, indem er die Methode „CTIOperationRequest - setMinorVersion(Number minderVersion)“ CTIOperationRequest – setMinorVersion(Number minderVersion) aufruft. Ein Vorgangs-Handler verbraucht dann den festgelegten Wert mit dieser Methode. Sie können den Wert der Hauptversion der Software eines Anbieters auch mit den Methoden CTIOperationRequest - getMajorVersion() CTIOperationRequest – getMajorVersion() und CTIOperationRequest - setMajorVersion(Number majorVersion) CTIOperationRequest – setMajorVersion(Number majorVersion) abrufen/festlegen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Nummer | Nebenversionsnummer der CTI-Software. Wenn die Nebenversion nie festgelegt wurde, wird 0zurückgegeben. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var minorVersion = request.getMinorVersion();
CTIOperationRequest – getOperationName()
Gibt den Namen des Vorgangs zurück, dessen Ausführung der Anbieter der Computer-Telefonie-Integration (CTI) anfordert.
Der Vorgangsname bestimmt den Vorgangs-Handler, der zur Verarbeitung einer Anforderung verwendet wird. Normalerweise legt der Nachrichtenumwandler den Vorgangsnamen für das CTIOperationRequest-Objekt mithilfe der Methode CTIOperationRequest - setOperationName(String name) fest.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der Name des Vorgangs, dessen Ausführung der CTI-Anbieter 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 Teilschrittvorgangs-Handlers zurück, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist.
Verwenden Sie Unterschritte, um Aktionen wie Initialisieren und Validieren auszuführen, bevor Sie einen Vorgang verarbeiten. Im Gegensatz zu Vorgangshandlern, die generisch sind und von allen CTI-Anbietern verwendet werden, sind Unterschritte spezifisch für CTI-Anbieter und verwenden Terminologie und Namenskonventionen, die für den CTI-Anbieter spezifisch sind.
- Versucht, den Vorgangs-Handler zu finden, der der Anforderung zugeordnet ist.
- Sucht zuerst nach einem Vorgangs-Handler namens
myOperation_SUFFX. - Falls nicht gefunden, wird nach dem Vorgangs-Handler
myOperationgesucht. Falls nicht gefunden, Fehler aus.
- Sucht zuerst nach einem Vorgangs-Handler namens
- Wenn der -Handler gefunden wird, überprüft die Kennzeichnung auth_required im Vorgangs-Handler. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (abgerufen durch die getAuthToken()- Methode) in der Anforderung vorhanden ist. Wenn vorhanden und gültig, wird die Verarbeitung fortgesetzt, andernfalls wird ein Fehler ausgegeben.
- Sucht nach dem Vorgangs-Handler für den übergebenen Unterschritt. Für dieses Beispiel nehmen wir an
, subStepName=SubStep.- Sucht zuerst nach einem Vorgangs-Handler namens
myOperation_SUFFX.SubStep. Wenn gefunden, wird der -Handler ausgeführt. - Falls nicht gefunden, wird nach dem Handler
myOperation.SubStepgesucht. Wenn gefunden, wird der -Handler ausgeführt. - Falls nicht gefunden, wird geprüft, ob für das Anforderungsobjekt ein
subStepNotFoundBehaviorfestgelegt wurde. - Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls tritt ein Fehler auf.
- Sucht zuerst nach einem Vorgangs-Handler namens
- Führt den primären Vorgangs-Handler (
myOpersation_SUFFXodermyOperation) aus.
Normalerweise legt der Nachrichtenumwandler den Teilschrittnamen im Objekt „CTIOperationRequest“ mithilfe der Methode „CTIOperationRequest - setOperationSubStepName(String name)“ fest. Sie können dieses Verhalten überschreiben, wenn Sie einen eigenen Umwandler erstellen, indem Sie die Methode CTIOperationRequest - setSubStepNotFoundBehaviour(Object behaviour) aufrufen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der Name des Teilschrittvorgangs-Handlers, der für das CTIOperationRequest-Objekt festgelegt ist. Wenn nicht vorhanden, wird NULL zurückgegeben. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var name = request.getOperationSubStepName();
CTIOperationRequest – getParameter(Zeichenfolgeschlüssel)
Gibt den Wert eines angegebenen Schlüssels zurück, der zuvor im aktuellen CTIOperationRequest-Objekt festgelegt wurde.
Mit den Methoden zum Abrufen/Festlegen von Parametern können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangshandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, wenn diese Werte verbraucht werden. Normalerweise legt der Nachrichtenumwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest - setParameter(String key, Object value) aufruft, und der Vorgangs-Handler verbraucht sie mit dieser Methode.
| 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.
Mit den Methoden zum Abrufen/Festlegen von Parametern können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangshandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, wenn diese Werte verbraucht werden. Normalerweise legt der Nachrichtenumwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er die Methode CTIOperationRequest - setParameter(String key, Object value) aufruft, und der Vorgangs-Handler verbraucht sie mit dieser Methode.
| 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-Paare 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(Zeichenfolgeschlüssel)
Gibt den Wert eines angegebenen Sitzungsattributschlüssels zurück, der für das aktuelle CTIOperationRequest-Objekt festgelegt ist.
Mit den Methoden zum Abrufen/Festlegen von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangshandler übergeben werden. Das SessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die für die Dauer einer von einem Anbieter für Computer-Telefonie-Integrationen 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 Schlüssel-Wert-Paare für Sitzungsattribute erforderlich sind, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Attribute für das Objekt CTIOperationRequest fest, indem er die Methode CTIOperationRequest - setSessionAttribute(String key, Object value) aufruft. Sitzungsattribute unterscheiden sich von Parametern insofern, als sie während der gesamten Sitzungsdauer (z. B. während des gesamten Anrufs) erhalten bleiben 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.
Mit den Methoden zum Abrufen/Festlegen von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangshandler übergeben werden. Das SessionAttribute-Objekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die für die Dauer einer von einem Anbieter für Computer-Telefonie-Integrationen 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 Schlüssel-Wert-Paare für Sitzungsattribute erforderlich sind, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Attribute für das Objekt CTIOperationRequest fest, indem er die Methode CTIOperationRequest - setSessionAttribute(String key, Object value) aufruft. Sitzungsattribute unterscheiden sich von Parametern insofern, als sie während der gesamten Sitzungsdauer (z. B. während des gesamten Anrufs) erhalten bleiben und vom CTI-Anbieter bei jeder Vorgangsanforderung innerhalb dieser Anrufsitzung zurückgegeben werden sollten.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Eine Zuordnung von Schlüssel-Wert-Paaren für Sitzungsattribute, die für das zugeordnete CTIOperationResponse-Objekt festgelegt wurden. Diese Zuordnung ist eine Freiformzuordnung und wird durch die Anforderungen des Vorgangs-Handlers definiert. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var parms = request.getSessionAttributes();
for(var key in parms) {
gs.info(key + '=' + parms[key]);
}
CTIOperationRequest – getSubStepNotFoundBehaviour
Gibt das Verarbeitungsverhalten für einen Unterschritt zurück, wenn der Vorgangs-Handler eines Unterschritts nicht gefunden wurde.
Verwenden Sie Unterschritte, um Aktionen wie Initialisieren und Validieren auszuführen, bevor Sie einen Vorgang verarbeiten. Im Gegensatz zu Vorgangshandlern, die generisch sind und von allen CTI-Anbietern verwendet werden, sind Unterschritte spezifisch für CTI-Anbieter und verwenden Terminologie und Namenskonventionen, die für den CTI-Anbieter spezifisch sind.
Wenn der Handler für den angeforderten Teilschrittvorgang vom Framework ServiceNow Sprachfunktionen nicht gefunden werden kann, wird versucht, das Verhalten „Schritt nicht gefunden“ zu verwenden. Dieses Verhalten wird normalerweise vom Nachrichtenumwandler festgelegt, wenn ein Vorgang zum ersten Mal angefordert wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| OperationNotFoundBehaviours | Das auszuführende Verhalten/die auszuführende Behandlung, wenn für die Kombination aus Vorgang und Unterschritt (<operation_name>.SubStep>) kein Vorgangshandler gefunden werden soll. Wenn nicht definiert, wird null zurückgegeben. Mögliche Werte:
|
var request = new sn_cti_core.CTIOperationRequest('origin');
var behavior = request.getSubStepNotFoundBehaviour();
CTIOperationRequest – setAuthToken(String id)
Legt ein Authentifizierungstoken für das aktuelle CTIOperationRequest-Objekt fest.
Dieses Token wird vom Framework ServiceNow Sprachfunktionen verwendet, um den aktuellen Anwender ServiceNow Sprachfunktionen zu authentifizieren, bevor der angeforderte Vorgangshandler ausgeführt wird, wenn die Kennzeichnung auth_required des Handlers auf „wahr“ festgelegt ist. Die Kennzeichnung auth_required ist ein Feld in der Tabelle „Vorgangs-Handler“ [sn_cti_operation_handler]. Die Lebensdauer eines Authentifizierungstokens sollte für die Lebensdauer der Anrufsitzung gelten, wird jedoch vom CTI-Anbieter festgelegt.
Sie können definieren, welche Authentifizierungs-/Autorisierungsbehandlung für Ihre -Implementierung erforderlich ist, indem Sie einen eigenen Handler für Authentifizierungsvorgänge erstellen. Unabhängig davon, wie das Authentifizierungstoken generiert wird, muss der Nachrichtenübersetzer das Token in der CTI-Nutzlast zurückgeben. Darüber hinaus muss der CTI-Anbieter dieses Authentifizierungstoken lokal speichern und in jeder Vorgangsanforderung übergeben, die eine Authentifizierung erfordert.
Bei Verwendung des von der Instanz bereitgestellten Handlers für den Authentifizierungsvorgang initiiert der -Handler die Erstellung des Authentifizierungstokens basierend auf einer vierstelligen, vom Anwender eingegebenen PIN. Anschließend wird das Authentifizierungstoken im Objekt „sessionAttributes“ des Objekts „CTIOperationResponse“ festgelegt. Der zugeordnete Nachrichtenumwandler übersetzt das Objekt „sessionAttributes“ in die CTI-spezifische Nutzlast und sendet sie dann an den CTI-Anbieter.
- Amazon Web Services (AWS) Lambda Proxy (AWS Lambda-Funktion aufrufen)
- AWS Lex-Bot (Kundeneingabe abrufen)
| Name | Typ | Beschreibung |
|---|---|---|
| id | Zeichenfolge | Das Authentifizierungstoken für den zugeordneten Anwender ServiceNow Sprachfunktionen. |
| Typ | Beschreibung |
|---|---|
| void |
Beispiel für ein Nachrichtenumwandlerskript, 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 die gesamte Anrufsitzung ServiceNow Sprachfunktionen verwaltet werden.
Normalerweise erstellt ein Vorgangs-Handler einen Interaktionsdatensatz, wenn ein neuer Kontaktanruf initiiert wird. Anschließend werden die sys_id und der Tabellenname des Interaktionsdatensatzes für das zugeordnete CTIOperationResponse-Objekt als Sitzungsattribute festgelegt, indem die Methode CTIOperationRequest - setSessionAttribute(String key, Object value) verwendet wird. Der zugehörige Methodenumwandler übersetzt diese Informationen dann in die Nutzlast des Anbieters Computer-Telefonie-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 ServiceNow Sprachfunktionen für diese Kontaktsitzung interagiert, muss er die entsprechende sys_id des Interaktionsdatensatzes in seiner Nutzlast zurückgeben. Der Umwandler für empfangende Nachrichten analysiert dann die Nutzlast und verwendet die Methode CTIOperationRequest - setInteractionSysId(), um die sys_id des Interaktionsdatensatzes für das zugehörige CTIOperationtRequest-Objekt festzulegen.
Die Methode CTIOperationRequest - getInteractionRecord() verwendet diese sys_id, um den richtigen Interaktionsdatensatz für die Kontaktsitzung abzurufen.
| Name | Typ | Beschreibung |
|---|---|---|
| sys_id | Zeichenfolge | Sys_id des Interaktionsdatensatzes, der der Anforderung zugeordnet werden soll. Tabelle: Interaktion [interaction] |
| Typ | Beschreibung |
|---|---|
| void |
Beispiel für ein Nachrichtenumwandlerskript, das die sys_id des Interaktionsdatensatzes aus der eingehenden Nutzlast extrahiert (als Parameter übergeben) und 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(String LanguageCode)
Legt den ISO 639.1-Sprachcode fest, der bei der Verarbeitung des zugehörigen Vorgangs für ein CTIOperationRequest-Objekt verwendet werden soll.
Wenn Sie die vom Kunden bevorzugte Sprache verwenden, können Sie die von der Plattform bereitgestellten Internationalisierungs- und Lokalisierungsfunktionen verwenden, um Nachrichten und andere Kommunikation mit dem zugehörigen Anrufer anzupassen. Normalerweise legt der Nachrichtenumwandler die Sprache für das Objekt CTIOperationRequest fest.
| Name | Typ | Beschreibung |
|---|---|---|
| LanguageCode | Zeichenfolge | Der bei der Verarbeitung des zugeordneten Vorgangs zu verwendende ISO 639.1-Sprachcode. |
| Typ | Beschreibung |
|---|---|
| void |
{
try {
var jsonPayload = httpRequest.body.data;
if (jsonPayload) {
var event = jsonPayload.event;
if (event) {
var details = event.Details;
if (details) {
operationRequest.setOperationName(details.Parameters['sn_operation']);
var contactData = details.ContactData;
if(contactData) {
// Call id should be surfaced in openframe call log so it can be tied to transcription later
operationRequest.setParameter('contact.call_id', contactData.ContactId);
for(var ck in contactData.CustomerEndpoint) {
operationRequest.setParameter('contact.' + ck, contactData.CustomerEndpoint[ck]);
}
operationRequest.setParameter('contact.id', contactData.ContactId);
operationRequest.setParameter('contact.phone', contactData.CustomerEndpoint.Address);
}
var parameters = details.Parameters;
if (parameters) {
for (var pk in parameters) {
switch(pk) {
case 'interactionId':
operationRequest.setInteractionSysId(parameters[pk]);
break;
case 'authToken':
operationRequest.setAuthToken(parameters[pk]);
break;
case 'language':
operationRequest.setLanguage(parameters[pk]);
break;
case 'statusCode':
case 'message':
break;
default:
operationRequest.setParameter(pk, parameters[pk]);
}
}
}
}
}
}
} catch(e) {
ctx.setError(e);
}
})(httpRequest, operationRequest, ctx);
CTIOperationRequest – setMajorVersion(Number majorVersion)
Legt die Hauptversion der Anbietersoftware des Computer-Telefonie-Integrators (CTI) fest, die die Anforderung für das zugehörige CTIOperationRequest-Objekt sendet.
Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen ein unterschiedliches Verarbeitungsverhalten erfordern können. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangshandler zu verwenden. Sie können dann die Verarbeitungsunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, von der die Anforderung gestellt wird, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangshandler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das Objekt „CTIOperationRequest“ fest, indem er diese Methode aufruft. Ein Vorgangs-Handler verbraucht dann den festgelegten Wert mithilfe der Methode „CTIOperationRequest - getMajorVersion()“. Sie können den Wert der Nebenversion der Software eines Anbieters auch mit den Methoden CTIOperationRequest - getMinorVersion() und CTIOperationRequest - setMinorVersion(Number majorVersion) abrufen/festlegen.
| Name | Typ | Beschreibung |
|---|---|---|
| majorVersion | Nummer | Hauptversion der CTI-Anbietersoftware, von der die Vorgangsanforderung stammt. Wenn dieser Wert zuvor nicht festgelegt wurde, wird 1zurückgegeben. |
| Typ | Beschreibung |
|---|---|
| void |
var request = new sn_cti_core.CTIOperationRequest('origin');
request.setMajorVersion(2);
CTIOperationRequest – setMinorVersion(Number minderVersion)
Legt die Nebenversion der Anbietersoftware des Computer-Telefonie-Integrators (CTI) fest, die die Anforderung für das zugehörige CTIOperationRequest-Objekt sendet.
Verwenden Sie diese Methode, wenn die mit Ihrer Instanz ServiceNow verbundenen CTI-Anbieter mehrere Versionen ihrer Software ausführen, da unterschiedliche Softwareversionen ein unterschiedliches Verarbeitungsverhalten erfordern können. Wenn sich das Verarbeitungsverhalten zwischen den Softwareversionen nur geringfügig unterscheidet, kann es sinnvoll sein, nur einen einzigen Vorgangshandler zu verwenden. Sie können dann die Verarbeitungsunterschiede behandeln, indem Sie einfach die Version der Software überprüfen, von der die Anforderung gestellt wird, und die Anforderung/Daten in Ihrem Vorgangs-Handler verarbeiten. Wenn sich die erforderliche Verarbeitung zwischen den Versionen erheblich unterscheidet, kann es effektiver sein, mehrere Vorgangshandler zu verwenden.
Normalerweise legt der Nachrichtenumwandler die Softwareversion für das Objekt „CTIOperationRequest“ fest, indem er diese Methode aufruft. Ein Vorgangs-Handler verbraucht dann den festgelegten Wert mithilfe der Methode „CTIOperationRequest - getMinorVersion()“. Sie können den Wert der Hauptversion der Software eines Anbieters auch mit den Methoden CTIOperationRequest - getMajorVersion() und CTIOperationRequest - setMajorVersion(Number majorVersion) abrufen/festlegen.
| Name | Typ | Beschreibung |
|---|---|---|
| minorVersion | Nummer | Nebenversion der CTI-Anbietersoftware, von der die Vorgangsanforderung stammt. Wenn dieser Wert zuvor nicht festgelegt wurde, wird 0zurückgegeben. |
| Typ | Beschreibung |
|---|---|
| void |
var request = new sn_cti_core.CTIOperationRequest('origin');
...
request.setMinorVersion(3);
CTIOperationRequest – setOperationName(String name)
Legt den Namen des Vorgangs fest, den der Anbieter von Computer-Telefonie-Integrationen (CTI) für das aktuelle CTIOperationRequest-Objekt auszuführen versucht.
Der Vorgangsname bestimmt den Vorgangs-Handler, der zur Verarbeitung der Anforderung verwendet wird. Rufen Sie diese Methode aus dem zugehörigen Nachrichtenumwandler auf.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Der Name des Vorgangs, den der CTI-Anbieter derzeit versucht, auszuführen. Dieser Name muss mit dem Namen des Vorgangs-Handlers übereinstimmen, der zur Verarbeitung der Anforderung verwendet werden soll. Ist dies nicht der Fall, wird ein Fehler ausgegeben. Sie können die verfügbaren Vorgangshandler 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(String name)
Legt den Namen des Vorgangsunterschritts für das aktuelle CTIOperationRequest-Objekt fest.
Verwenden Sie Unterschritte, um Aktionen wie Initialisieren und Validieren auszuführen, bevor Sie einen Vorgang verarbeiten. Im Gegensatz zu Vorgangshandlern, die generisch sind und von allen CTI-Anbietern verwendet werden, sind Unterschritte spezifisch für CTI-Anbieter und verwenden Terminologie und Namenskonventionen, die für den CTI-Anbieter spezifisch sind.
- Versucht, den Vorgangs-Handler zu finden, der der Anforderung zugeordnet ist.
- Sucht zuerst nach einem Vorgangs-Handler namens
myOperation_SUFFX. - Falls nicht gefunden, wird nach dem Vorgangs-Handler
myOperationgesucht. Falls nicht gefunden, Fehler aus.
- Sucht zuerst nach einem Vorgangs-Handler namens
- Wenn der -Handler gefunden wird, überprüft die Kennzeichnung auth_required im Vorgangs-Handler. Wenn festgelegt, wird überprüft, ob ein gültiges Authentifizierungstoken (abgerufen durch die getAuthToken()- Methode) in der Anforderung vorhanden ist. Wenn vorhanden und gültig, wird die Verarbeitung fortgesetzt, andernfalls wird ein Fehler ausgegeben.
- Sucht nach dem Vorgangs-Handler für den übergebenen Unterschritt. Für dieses Beispiel nehmen wir an
, subStepName=SubStep.- Sucht zuerst nach einem Vorgangs-Handler namens
myOperation_SUFFX.SubStep. Wenn gefunden, wird der -Handler ausgeführt. - Falls nicht gefunden, wird nach dem Handler
myOperation.SubStepgesucht. Wenn gefunden, wird der -Handler ausgeführt. - Falls nicht gefunden, wird geprüft, ob für das Anforderungsobjekt ein
subStepNotFoundBehaviorfestgelegt wurde. - Wenn festgelegt, wird das Verhalten ausgeführt, andernfalls tritt ein Fehler auf.
- Sucht zuerst nach einem Vorgangs-Handler namens
- Führt den primären Vorgangs-Handler (
myOpersation_SUFFXodermyOperation) aus.
Sie können das Standardverhalten eines Unterschritts festlegen, indem Sie die Methode CTIOperationRequest - setSubStepNotFoundBehaviour(Object behaviour) aufrufen.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Der Name des Teilschritts, den der CTI-Anbieter auszuführen versucht. |
| 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 Methoden zum Abrufen/Festlegen von Parametern können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangshandler übergeben werden. Das Parameterobjekt kann null oder mehr Schlüssel-Wert-Datenpaare enthalten, die direkt mit der aktuellen Vorgangsanforderung korrelieren. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare erforderlich sind, wenn diese Werte verbraucht werden. Normalerweise legt der Nachrichtenumwandler diese Parameter für das CTIOperationRequest-Objekt fest, indem er diese Methode aufruft, und der Vorgangs-Handler verbraucht sie mit der Methode CTIOperationRequest - getParameter(String key) oder CTIOperationRequest - getParameters().
JSON.parse(JSON.stringify(object)) -Vorgang überdauern können. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß in der gesamten Verarbeitungskette des Vorgangs verbreitet.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(Zeichenfolgeschlüssel, Objektwert)
Legt das angegebene Sitzungsattribut-Schlüssel-Wert-Paar für das aktuelle CTIOperationRequest-Objekt fest.
Mit den Methoden zum Abrufen/Festlegen von Sitzungsattributen können praktisch alle Zeichenfolgen- oder Zahlenwerte zwischen einem Nachrichtenumwandler und einem Vorgangshandler übergeben werden. Das Objekt „sessionAttribute“ kann null oder mehr Schlüssel-Wert-Paare von Daten enthalten, die für die Dauer einer vom Anbieter definierten Sitzung für Computer-Telefonie-Integrationen gültig sind. Auf Sitzungsattribute kann auch innerhalb eines Kontakt-Flows zugegriffen werden. Der Vorgangs-Handler bestimmt, welche Schlüssel-Wert-Paare für Sitzungsattribute erforderlich sind, da er diese Werte verbraucht. Normalerweise legt der Nachrichtenumwandler diese Attribute für das CTIOperationRequest-Objekt fest, indem er diese Methode aufruft, und der Vorgangshandler ruft die Attribute mit der Methode CTIOperationRequest - getSessionAttribute(Zeichenfolgenschlüssel) oder CTIOperationRequest - getSessionAttribute() ab.
JSON.parse(JSON.stringify(object)) -Vorgang überdauern können. Objekte, die diese Kriterien nicht erfüllen, werden möglicherweise nicht ordnungsgemäß in der gesamten Verarbeitungskette des Vorgangs verbreitet.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 wird, wenn der Vorgangshandler des aktuellen Unterschritts nicht gefunden wird.
Diese Methode sollte vom Umwandler für die Eingabenachricht aufgerufen werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Verhalten | OperationNotFoundBehaviours | Zu verwendendes Verhalten, wenn für den Unterschritt 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);