CTIOperationRequest : champ d’application, global
L'API CTIOperationRequest fournit des méthodes permettant de définir et d'obtenir des données sur l'objet ctioperationrequest actuel.
Vous utilisez des objets CTIOperationRequest pour transmettre des informations entre un transformateur de message et un gestionnaire d’opération dans le ServiceNow Fonctions vocales framework.
En règle générale, un transformateur de message est responsable de l’analyse d’une charge utile CTI entrante spécifique et de la définition des données de charge utile sur un objet CTIOperationRequest associé. Un gestionnaire d’opération est ensuite chargé d’obtenir les informations à partir de l’objet CTIOperationRequest et d’utiliser les données pour traiter l’opération demandée.
- Proxy Lambda Amazon Web Services (AWS) (appeler la fonction AWS Lambda)
- Bot Lex AWS (obtenir l’entrée client)
Une charge utile est transmise à une ServiceNow instance à partir d’une source externe, telle qu’un fournisseur d’intégration téléphonie-informatique (CTI) qui effectue une demande d’opération. Lorsqu’une demande est reçue, un transformateur de message analyse la charge utile et utilise les méthodes d’ensemble CTIOperationRequest pour définir les valeurs de charge utile, telles que le nom du gestionnaire d’opération, sur un objet CTIOperationRequest spécifique à l’opération et au contact.
Par exemple, le script de transformateur de message suivant analyse la charge utile JSON transmise et définit les valeurs requises par le gestionnaire d’opération associé sur l’objet CTIOperationRequest.
{
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);Une fois que le transformateur de message a terminé l’analyse de la charge utile transmise, l’infrastructure ServiceNow Fonctions vocales instancie le gestionnaire d’opération spécifié. Le gestionnaire d’exploitation utilise les méthodes d’obtention de l’API CTIOperationResponse pour obtenir les informations dont il a besoin à partir de l’objet CTIOperationRequest associé afin de traiter l’opération demandée.
Par exemple, le script de gestionnaire d’opération suivant stocke les valeurs qui ont été définies sur l’objet CTIOperationRequest dans l’enregistrement d’interaction associé à l’appel.
(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);Pour plus d’informations sur la création de gestionnaires d’opération, consultez Configurer un flux de contact pour une interaction d’appelant automatisée.
Cette API s’exécute dans l’espace de noms sn_cti_core . Avant de pouvoir accéder à l’API CTIOperationRequest , le module d’extension ServiceNow Fonctions vocales (sn_cti_core) doit être activé. Pour plus d’informations sur l’activation ServiceNow Fonctions vocales, consultez Installer les applications vocales ServiceNow.
Pour plus d’informations sur le ServiceNow Fonctions vocales, consultez ServiceNow Voice.
CTIOperationRequest : CTIOperationRequest (origine de la chaîne)
Instancie un objet CTIOperationRequest.
| Nom | Type | Description |
|---|---|---|
| origine | Chaîne | Facultatif. Origine de la demande. Il s’agit généralement du nom du fournisseur de l’intégrateur de téléphonie informatique. Valeur par défaut : 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()
Renvoie le jeton d’authentification défini sur l’objet CTIOperationRequest associé.
Ce jeton est utilisé par le ServiceNow Fonctions vocales cadre de travail pour authentifier l’utilisateur actuel ServiceNow Fonctions vocales avant d’exécuter le gestionnaire d’opération demandé si le marqueur du auth_required gestionnaire est défini sur vrai. Le auth_required marqueur est un champ de la table Gestionnaire d’opération [sn_cti_operation_handler]. La durée de vie d’un jeton d’authentification doit durer toute la durée de vie de la session d’appel, mais elle est déterminée par le fournisseur CTI.
Vous pouvez définir la gestion de l’authentification/autorisation requise par votre implémentation en créant votre propre gestionnaire d’opération d’authentification. Quel que soit le mode de génération du jeton d’authentification, le traducteur de message doit transmettre le jeton dans la charge utile CTI. En outre, le fournisseur CTI doit stocker ce jeton d’authentification localement et le transmettre dans chaque demande d’opération nécessitant une authentification.
Si l’instance utilise le gestionnaire d’opération d’authentification fourni, le gestionnaire lance la création du jeton d’authentification en fonction d’un code PIN à quatre chiffres saisi par l’utilisateur. Il définit ensuite le jeton d’authentification dans l’objet sessionAttributes de l’objet CTIOperationResponse. Le transformateur de message associé traduit l’objet sessionAttributes en charge utile spécifique au CTI, puis l’envoie au fournisseur CTI.
- Proxy Lambda Amazon Web Services (AWS) (appeler la fonction AWS Lambda)
- Bot Lex AWS (obtenir l’entrée client)
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Jeton d’authentification associé à l’utilisateur actuel ServiceNow Fonctions vocales . |
(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()
Renvoie l’interaction GlideRecord associée à la demande d’opération.
Une interaction représente une demande d’assistance effectuée par le biais d’une messagerie instantanée, d’un appel téléphonique ou en personne. Les interactions peuvent être acheminées vers des files d’attente pour l’affectation ou affectées directement à des agents. Les enregistrements d’interaction sont stockés dans la table Interaction [interaction] et peuvent contenir n’importe quel type de données décrivant les interactions du compte de service avec un client pour une session spécifique.
Les enregistrements d’interaction sont associés à un objet CTIOperationRequest via la méthode CTIOperationRequest - setInteractionSysId(String Id). Cette méthode est généralement appelée par le transformateur de message et doit être appelée avant d’appeler la méthode getInteractionRecord().
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideRecord | Objet GlideRecord d’interaction associé à l’objet CTIOperationRequest actuel. Si le sys_id d’enregistrement d’interaction n’a pas été défini sur l’objet CTIOperationRequest, renvoie null. |
(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()
Renvoie le sys_id de l’enregistrement d’interaction associé à l’objet CTIOperationRequest actuel.
La méthode CTIOperationRequest - setInteractionSysId(String Id) doit avoir été appelée avant d’appeler cette méthode.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | sys_id de l’enregistrement d’interaction défini sur l’objet CTIOperationRequest actuel. Si la sys_id n’a pas été définie sur l’objet CTIOperationRequest associé, la méthode renvoie null. |
(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()
Renvoie le code de langue ISO 639.1 qui a été défini sur l’objet CTIOperationRequest actuel.
L’utilisation de la langue préférée du client vous permet d’utiliser les options d’internationalisation et de localisation fournies par la plateforme pour personnaliser les messages et autres communications avec l’appelant associé.
En règle générale, un gestionnaire d’opération appelle la méthode getLanguage() et le transformateur de message définit la langue sur l’objet CTIOperationRequest en appelant la méthode CTIOperationRequest - setLanguage(String languageCode).
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Code de langue ISO 639.1 défini sur l’objet CTIOperationRequest actuel. Si le code de langue n’est pas défini, renvoie en. |
L’exemple suivant montre un gestionnaire d’opération appelant getLanguage() pour obtenir la langue préférée de l’appelant.
(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()
Renvoie la version majeure du logiciel CTI (computer telephony integrator) définie sur l’objet CTIOperationRequest actuel.
Utilisez cette méthode si les fournisseurs CTI connectés à votre ServiceNow instance exécutent plusieurs versions de leur logiciel, car différentes versions logicielles peuvent nécessiter un comportement de traitement différent. Si le comportement de traitement n’est que légèrement différent entre les versions logicielles, il peut être judicieux de n’avoir qu’un seul gestionnaire d’opération. Vous pouvez ensuite gérer les différences de traitement en vérifiant simplement la version du logiciel à l’origine de la demande et traiter la demande/les données dans votre gestionnaire d’opérations. Si le traitement requis est significativement différent d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs gestionnaires d’opérations.
En règle générale, le transformateur de message définit la version logicielle sur l’objet CTIOperationRequest en appelant la méthode CTIOperationRequest - setMajorVersion(Number majorVersion) et un gestionnaire d’opération consomme ensuite la valeur définie à l’aide de cette méthode. Vous pouvez également obtenir/définir la valeur de version mineure du logiciel d’un fournisseur à l’aide des méthodes CTIOperationRequest - getMinorVersion() et CTIOperationRequest - setMinorVersion(Number minorVersion).
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Numéro de version majeure du logiciel CTI. Si la version majeure n’a jamais été définie, renvoie 1. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var majorVersion = request.getMajorVersion();
CTIOperationRequest : getMinorVersion()
Renvoie la version mineure du logiciel CTI (computer telephony integrator) associé à un objet CTIOperationRequest.
Utilisez cette méthode si les fournisseurs CTI connectés à votre ServiceNow instance exécutent plusieurs versions de leur logiciel, car différentes versions logicielles peuvent nécessiter un comportement de traitement différent. Si le comportement de traitement n’est que légèrement différent entre les versions logicielles, il peut être judicieux de n’avoir qu’un seul gestionnaire d’opération. Vous pouvez ensuite gérer les différences de traitement en vérifiant simplement la version du logiciel à l’origine de la demande et traiter la demande/les données dans votre gestionnaire d’opérations. Si le traitement requis est significativement différent d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs gestionnaires d’opérations.
En règle générale, le transformateur de message définit la version logicielle sur l’objet CTIOperationRequest en appelant la méthode CTIOperationRequest - setMinorVersion(Number minorVersion) CTIOperationRequest : setMinorVersion(Number minorVersion) et un gestionnaire d’opération consomme ensuite la valeur définie à l’aide de cette méthode. Vous pouvez également obtenir/définir la valeur de version majeure du logiciel d’un fournisseur à l’aide des méthodes CTIOperationRequest - getMajorVersion() CTIOperationRequest : getMajorVersion() et CTIOperationRequest - setMajorVersion(Number majorVersion). CTIOperationRequest : setMajorVersion(Number majorVersion)
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Numéro de version mineure du logiciel CTI. Si la version mineure n’a jamais été définie, renvoie 0. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var minorVersion = request.getMinorVersion();
CTIOperationRequest : getOperationName()
Renvoie le nom de l’opération que le fournisseur d’intégration téléphonie-informatique (CTI) demande d’exécuter.
Le nom de l’opération détermine le gestionnaire d’opération utilisé pour traiter une demande. En règle générale, le transformateur de message définit le nom de l’opération sur l’objet CTIOperationRequest à l’aide de la méthode CTIOperationRequest - setOperationName(String name).
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Nom de l’opération que le fournisseur CTI demande d’exécuter. Si le nom de l’opération n’est pas défini, renvoie null. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var name = request.getOperationName();
CTIOperationRequest : getOperationSubStepName()
Renvoie le nom du gestionnaire d’opération de sous-étape défini sur l’objet CTIOperationRequest actuel.
Utilisez des sous-étapes pour effectuer des actions telles que l’initialisation et la validation avant de traiter une opération. Contrairement aux gestionnaires d’opérations qui sont censés être génériques et utilisés par tous les fournisseurs CTI, les sous-étapes sont spécifiques au fournisseur CTI et utilisent la terminologie et les conventions de dénomination spécifiques au fournisseur CTI.
- Tente de localiser le gestionnaire d’opération associé à la demande.
- Vérifie d’abord un gestionnaire d’opération appelé
myOperation_SUFFX. - S’il est introuvable, recherche le gestionnaire d’opération
myOperation. S’il n’est pas trouvé, des erreurs sont survenues.
- Vérifie d’abord un gestionnaire d’opération appelé
- Si le gestionnaire est trouvé, vérifie le auth_required marqueur sur le gestionnaire d’opération. Si défini, il vérifie qu’un jeton d’authentification valide (obtenu via la méthode getAuthToken() ) est présent sur la demande. Si présent et valide, continuez le traitement, sinon une erreur est générée.
- Recherche le gestionnaire d’opération pour la sous-étape transmise. Pour cet exemple, supposons que
subStepName=SubStep.- Vérifie d’abord un gestionnaire d’opération nommé
myOperation_SUFFX. Sous-étape. S’il est trouvé, exécute le gestionnaire. - S’il est introuvable, recherche le gestionnaire
myOperation.SubStep. S’il est trouvé, exécute le gestionnaire. - S’il est introuvable, vérifie si un
subStepNotFoundBehaviora été défini sur l’objet de la demande. - Si défini, exécute le comportement, sinon, les erreurs sont supprimées.
- Vérifie d’abord un gestionnaire d’opération nommé
- Exécute le gestionnaire d’opération primaire (
myOpersation_SUFFXoumyOperation.)
En règle générale, le transformateur de message définit le nom de la sous-étape sur l’objet CTIOperationRequest à l’aide de la méthode CTIOperationRequest - setOperationSubStepName(nom de chaîne ). Vous pouvez remplacer ce comportement si vous créez votre propre transformateur en appelant la méthode CTIOperationRequest - setSubStepNotFoundBehaviour(comportement de l’objet).
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Nom du gestionnaire d’opération de sous-étape défini sur l’objet CTIOperationRequest. S’il n’existe pas, renvoie null. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var name = request.getOperationSubStepName();
CTIOperationRequest : getParameter(clé de chaîne)
Renvoie la valeur d’une clé spécifiée précédemment définie sur l’objet CTIOperationRequest actuel.
L’utilisation des méthodes de paramètre get/set permet de transmettre pratiquement n’importe quelle valeur de chaîne ou de nombre entre un transformateur de message et un gestionnaire d’opération. L’objet du paramètre peut contenir zéro ou plusieurs paires clé/valeur de données qui sont directement corrélées à la demande d’opération actuelle. Le gestionnaire d’opération détermine quelles paires clé/valeur sont requises au fur et à mesure qu’il consomme ces valeurs. En règle générale, le transformateur de message définit ces paramètres sur l’objet CTIOperationRequest en appelant la méthode CTIOperationRequest - setParameter(String key, Object value) et le gestionnaire d’opération les consomme à l’aide de cette méthode.
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom de la valeur de clé à renvoyer. |
| Type | Description |
|---|---|
| Chaîne ou numéro | Valeur de la clé spécifiée. Si aucune clé de ce type n’existe, renvoie null. |
(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()
Renvoie les paires clé-valeur pour tous les paramètres précédemment définis sur l’objet CTIOperationRequest actuel.
L’utilisation des méthodes de paramètre get/set permet de transmettre pratiquement n’importe quelle valeur de chaîne ou de nombre entre un transformateur de message et un gestionnaire d’opération. L’objet du paramètre peut contenir zéro ou plusieurs paires clé/valeur de données qui sont directement corrélées à la demande d’opération actuelle. Le gestionnaire d’opération détermine quelles paires clé/valeur sont requises au fur et à mesure qu’il consomme ces valeurs. En règle générale, le transformateur de message définit ces paramètres sur l’objet CTIOperationRequest en appelant la méthode CTIOperationRequest - setParameter(String key, Object value) et le gestionnaire d’opération les consomme à l’aide de cette méthode.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Carte des paires clé-valeur précédemment définies sur l’objet CTIOperationRequest. Ces paires clé-valeur sont de forme libre et définies par les besoins du gestionnaire d’opération. Les valeurs renvoyées sont soit Chaînes, soit Nombres. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var parms = request.getParameters();
for(var key in parms) {
gs.info(key + '=' + parms[key]);
}
CTIOperationRequest : getSessionAttribute (clé de chaîne)
Renvoie la valeur d’une clé d’attribut de session spécifiée définie sur l’objet CTIOperationRequest actuel.
L’utilisation des méthodes d’attribut get/set session permet de transmettre pratiquement n’importe quelle valeur de chaîne ou de nombre entre un transformateur de message et un gestionnaire d’opération. L’objet sessionAttribute peut contenir zéro ou plusieurs paires clé/valeur de données valides pour la durée d’une session définie par le fournisseur d’intégration téléphonie-informatique, comme le numéro de téléphone du contact. Les attributs de session sont également accessibles dans un flux de contact. Le gestionnaire d’opération détermine quelles paires clé/valeur d’attribut de session sont nécessaires au fur et à mesure qu’il consomme ces valeurs. En règle générale, le transformateur de message définit ces attributs sur l’objet CTIOperationRequest en appelant la méthode CTIOperationRequest - setSessionAttribute(String key, object value). Les attributs de session diffèrent des paramètres en ce sens qu’ils persistent pendant toute la durée de vie de la session (par exemple, l’appel entier) et doivent être renvoyés par le fournisseur CTI à chaque demande d’opération au sein de cette session d’appel.
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom de la valeur de clé à renvoyer. |
| Type | Description |
|---|---|
| Chaîne ou numéro | Valeur de la clé spécifiée. Si aucune clé de ce type n’existe, renvoie null. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var phoneAttribute = request.getSessionAttribute('contact.phone');
CTIOperationRequest : getSessionAttributes()
Renvoie une carte de paire clé-valeur de tous les attributs de session définis sur l’objet CTIOperationRequest actuel.
L’utilisation des méthodes d’attribut get/set session permet de transmettre pratiquement n’importe quelle valeur de chaîne ou de nombre entre un transformateur de message et un gestionnaire d’opération. L’objet sessionAttribute peut contenir zéro ou plusieurs paires clé/valeur de données valides pour la durée d’une session définie par le fournisseur d’intégration téléphonie-informatique, comme le numéro de téléphone du contact. Les attributs de session sont également accessibles dans un flux de contact. Le gestionnaire d’opération détermine quelles paires clé/valeur d’attribut de session sont nécessaires au fur et à mesure qu’il consomme ces valeurs. En règle générale, le transformateur de message définit ces attributs sur l’objet CTIOperationRequest en appelant la méthode CTIOperationRequest - setSessionAttribute(String key, object value). Les attributs de session diffèrent des paramètres en ce sens qu’ils persistent pendant toute la durée de vie de la session (par exemple, l’appel entier) et doivent être renvoyés par le fournisseur CTI à chaque demande d’opération au sein de cette session d’appel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Carte des paires clé-valeur d’attribut de session qui ont été définies sur l’objet CTIOperationResponse associé. Cette carte est de forme libre et définie par les besoins du gestionnaire d’opération. |
var request = new sn_cti_core.CTIOperationRequest('origin');
var parms = request.getSessionAttributes();
for(var key in parms) {
gs.info(key + '=' + parms[key]);
}
CTIOperationRequest : getSubStepNotFoundBehaviour
Renvoie le comportement de gestion d’un sous-segment lorsque le gestionnaire d’opération d’une sous-étape est introuvable.
Utilisez des sous-étapes pour effectuer des actions telles que l’initialisation et la validation avant de traiter une opération. Contrairement aux gestionnaires d’opérations qui sont censés être génériques et utilisés par tous les fournisseurs CTI, les sous-étapes sont spécifiques au fournisseur CTI et utilisent la terminologie et les conventions de dénomination spécifiques au fournisseur CTI.
Si le gestionnaire d’opération de sous-étape demandé est introuvable par le ServiceNow Fonctions vocales cadre de travail, celui-ci tente d’utiliser le « comportement étape introuvable ». Ce comportement est généralement défini par le transformateur de message lorsqu’une opération est initialement demandée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| OperationNotFoundBehaviours (en anglais seulement) | Le comportement/la gestion à effectuer lorsqu’un gestionnaire d’opération est introuvable pour la combinaison opération/sous-étape (<operation_name>. Sous-étape>). S’il n’est pas défini, renvoie null. Valeurs possibles :
|
var request = new sn_cti_core.CTIOperationRequest('origin');
var behavior = request.getSubStepNotFoundBehaviour();
CTIOperationRequest : setAuthToken(ID de chaîne)
Définit un jeton d’authentification sur l’objet CTIOperationRequest actuel.
Ce jeton est utilisé par le ServiceNow Fonctions vocales cadre de travail pour authentifier l’utilisateur actuel ServiceNow Fonctions vocales avant d’exécuter le gestionnaire d’opération demandé si le marqueur du auth_required gestionnaire est défini sur vrai. Le auth_required marqueur est un champ de la table Gestionnaire d’opération [sn_cti_operation_handler]. La durée de vie d’un jeton d’authentification doit durer toute la durée de vie de la session d’appel, mais elle est déterminée par le fournisseur CTI.
Vous pouvez définir la gestion de l’authentification/autorisation requise par votre implémentation en créant votre propre gestionnaire d’opération d’authentification. Quel que soit le mode de génération du jeton d’authentification, le traducteur de message doit transmettre le jeton dans la charge utile CTI. En outre, le fournisseur CTI doit stocker ce jeton d’authentification localement et le transmettre dans chaque demande d’opération nécessitant une authentification.
Si l’instance utilise le gestionnaire d’opération d’authentification fourni, le gestionnaire lance la création du jeton d’authentification en fonction d’un code PIN à quatre chiffres saisi par l’utilisateur. Il définit ensuite le jeton d’authentification dans l’objet sessionAttributes de l’objet CTIOperationResponse. Le transformateur de message associé traduit l’objet sessionAttributes en charge utile spécifique au CTI, puis l’envoie au fournisseur CTI.
- Proxy Lambda Amazon Web Services (AWS) (appeler la fonction AWS Lambda)
- Bot Lex AWS (obtenir l’entrée client)
| Nom | Type | Description |
|---|---|---|
| ID | Chaîne | Jeton d’authentification pour l’utilisateur associé ServiceNow Fonctions vocales . |
| Type | Description |
|---|---|
| nul |
Exemple de script de transformateur de message qui enregistre le jeton d’authentification transmis.
{
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(ID de chaîne)
Définit le sys_id de l’enregistrement d’interaction associé à la demande d’opération sur l’objet CTIOperationRequest actuel.
Si vous souhaitez conserver les informations d’interaction de contact dans un enregistrement d’interaction spécifique au contact, l’enregistrement d’interaction sys_id doit être conservé pendant toute ServiceNow Fonctions vocales la session d’appel.
En règle générale, un gestionnaire d’opération crée un enregistrement d’interaction lorsqu’un nouvel appel de contact est lancé. Il définit ensuite l’sys_id d’enregistrement d’interaction et le nom de table sur l’objet CTIOperationResponse associé en tant qu’attributs de session à l’aide de la méthode CTIOperationRequest - setSessionAttribute(String key, Object value). Le transformateur de méthode associé traduit ensuite ces informations en charge utile du fournisseur d’intégration téléphonie-informatique (CTI) et les renvoie au fournisseur CTI.
Le fournisseur CTI doit stocker localement le sys_id d’enregistrement d’interaction pour la session de contact. Chaque fois que le fournisseur CTI interagit avec le pour cette session de ServiceNow Fonctions vocales contact, il doit transmettre l’enregistrement d’interaction correspondant sys_id dans sa charge utile. Le transformateur du message de réception analyse ensuite la charge utile et utilise la méthode CTIOperationRequest - setInteractionSysId() pour définir l’sys_id d’enregistrement d’interaction sur l’objet CTIOperationtRequest associé.
La méthode CTIOperationRequest - getInteractionRecord() utilise cette sys_id pour obtenir l’enregistrement d’interaction correct pour la session de contact. Les enregistrements d’interaction sont situés dans la table Interaction [interaction]. Pour plus d’informations sur les enregistrements d’interaction, voir
| Nom | Type | Description |
|---|---|---|
| sys_id | Chaîne | La sys_id de l’enregistrement d’interaction à associer à la demande. |
| Type | Description |
|---|---|
| nul |
Exemple de script de transformateur de message qui extrait le sys_id d’enregistrement d’interaction de la charge utile entrante (transmise en tant que paramètre) et le définit sur l’objet CTIOperationRequest associé.
{
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)
Définit le code de langue ISO 639.1 à utiliser lors du traitement de l’opération associée sur un objet CTIOperationRequest.
L’utilisation de la langue préférée du client vous permet d’utiliser les options d’internationalisation et de localisation fournies par la plateforme pour personnaliser les messages et autres communications avec l’appelant associé. En règle générale, le transformateur de message définit la langue sur l’objet CTIOperationRequest.
| Nom | Type | Description |
|---|---|---|
| Code de langue | Chaîne | Code de langue ISO 639.1 à utiliser lors du traitement de l’opération associée. |
| Type | Description |
|---|---|
| nul |
{
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)
Définit la version majeure du logiciel du fournisseur de l’intégrateur de téléphonie informatique (CTI) qui effectue la demande sur l’objet CTIOperationRequest associé.
Utilisez cette méthode si les fournisseurs CTI connectés à votre ServiceNow instance exécutent plusieurs versions de leur logiciel, car différentes versions logicielles peuvent nécessiter un comportement de traitement différent. Si le comportement de traitement n’est que légèrement différent entre les versions logicielles, il peut être judicieux de n’avoir qu’un seul gestionnaire d’opération. Vous pouvez ensuite gérer les différences de traitement en vérifiant simplement la version du logiciel à l’origine de la demande et traiter la demande/les données dans votre gestionnaire d’opérations. Si le traitement requis est significativement différent d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs gestionnaires d’opérations.
En règle générale, le transformateur de message définit la version logicielle sur l’objet CTIOperationRequest en appelant cette méthode et un gestionnaire d’opération consomme ensuite la valeur définie à l’aide de la méthode CTIOperationRequest - getMajorVersion(). Vous pouvez également obtenir/définir la valeur de version mineure du logiciel d’un fournisseur à l’aide des méthodes CTIOperationRequest - getMinorVersion() et CTIOperationRequest - setMinorVersion(Number minorVersion).
| Nom | Type | Description |
|---|---|---|
| majorVersion | Numéro | Version majeure du logiciel du fournisseur CTI effectuant la demande d’opération. Si cette valeur n’a pas été définie précédemment, renvoie 1. |
| Type | Description |
|---|---|
| nul |
var request = new sn_cti_core.CTIOperationRequest('origin');
request.setMajorVersion(2);
CTIOperationRequest : setMinorVersion(Number minorVersion)
Définit la version mineure du logiciel du fournisseur CTI (Computer Telephony Integrator) effectuant la demande sur l’objet CTIOperationRequest associé.
Utilisez cette méthode si les fournisseurs CTI connectés à votre ServiceNow instance exécutent plusieurs versions de leur logiciel, car différentes versions logicielles peuvent nécessiter un comportement de traitement différent. Si le comportement de traitement n’est que légèrement différent entre les versions logicielles, il peut être judicieux de n’avoir qu’un seul gestionnaire d’opération. Vous pouvez ensuite gérer les différences de traitement en vérifiant simplement la version du logiciel à l’origine de la demande et traiter la demande/les données dans votre gestionnaire d’opérations. Si le traitement requis est significativement différent d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs gestionnaires d’opérations.
En règle générale, le transformateur de message définit la version logicielle sur l’objet CTIOperationRequest en appelant cette méthode et un gestionnaire d’opération consomme ensuite la valeur définie à l’aide de la méthode CTIOperationRequest - getMinorVersion(). Vous pouvez également obtenir/définir la valeur de version majeure du logiciel d’un fournisseur à l’aide des méthodes CTIOperationRequest - getMajorVersion() et CTIOperationRequest - setMajorVersion(Number majorVersion).
| Nom | Type | Description |
|---|---|---|
| minorVersion | Numéro | Version mineure du logiciel du fournisseur CTI effectuant la demande d’opération. Si cette valeur n’a pas été définie précédemment, renvoie 0. |
| Type | Description |
|---|---|
| nul |
var request = new sn_cti_core.CTIOperationRequest('origin');
...
request.setMinorVersion(3);
CTIOperationRequest : setOperationName(nom de la chaîne)
Définit le nom de l’opération que le fournisseur d’intégration téléphonie-informatique (CTI) tente d’exécuter sur l’objet CTIOperationRequest actuel.
Le nom de l’opération détermine le gestionnaire d’opération utilisé pour traiter la demande. Appelez cette méthode à partir du transformateur de message associé.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom de l’opération que le fournisseur CTI tente actuellement d’exécuter. Ce nom doit être le même que le nom du gestionnaire d’opération à utiliser pour traiter la demande. Si ce n’est pas le cas, une erreur est générée. Vous pouvez localiser les gestionnaires d’opération disponibles dans la table Gestionnaire d’opération [sn_cti_operation_handler]. |
| Type | Description |
|---|---|
| nul |
{
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(nom de la chaîne)
Définit le nom de la sous-étape de l’opération sur l’objet CTIOperationRequest actuel.
Utilisez des sous-étapes pour effectuer des actions telles que l’initialisation et la validation avant de traiter une opération. Contrairement aux gestionnaires d’opérations qui sont censés être génériques et utilisés par tous les fournisseurs CTI, les sous-étapes sont spécifiques au fournisseur CTI et utilisent la terminologie et les conventions de dénomination spécifiques au fournisseur CTI.
- Tente de localiser le gestionnaire d’opération associé à la demande.
- Vérifie d’abord un gestionnaire d’opération appelé
myOperation_SUFFX. - S’il est introuvable, recherche le gestionnaire d’opération
myOperation. S’il n’est pas trouvé, des erreurs sont survenues.
- Vérifie d’abord un gestionnaire d’opération appelé
- Si le gestionnaire est trouvé, vérifie le auth_required marqueur sur le gestionnaire d’opération. Si défini, il vérifie qu’un jeton d’authentification valide (obtenu via la méthode getAuthToken() ) est présent sur la demande. Si présent et valide, continuez le traitement, sinon une erreur est générée.
- Recherche le gestionnaire d’opération pour la sous-étape transmise. Pour cet exemple, supposons que
subStepName=SubStep.- Vérifie d’abord un gestionnaire d’opération nommé
myOperation_SUFFX. Sous-étape. S’il est trouvé, exécute le gestionnaire. - S’il est introuvable, recherche le gestionnaire
myOperation.SubStep. S’il est trouvé, exécute le gestionnaire. - S’il est introuvable, vérifie si un
subStepNotFoundBehaviora été défini sur l’objet de la demande. - Si défini, exécute le comportement, sinon, les erreurs sont supprimées.
- Vérifie d’abord un gestionnaire d’opération nommé
- Exécute le gestionnaire d’opération primaire (
myOpersation_SUFFXoumyOperation.)
Vous pouvez définir le comportement par défaut d’une sous-étape en appelant la méthode CTIOperationRequest - setSubStepNotFoundBehaviour(comportement d’objet).
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom de la sous-étape que le fournisseur CTI tente d’exécuter. |
| Type | Description |
|---|---|
| nul |
(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(clé de chaîne, valeur de l’objet)
Définit la paire clé-valeur spécifiée sur l’objet de paramètre de l’objet CTIOperationRequest actuel.
L’utilisation des méthodes de paramètre get/set permet de transmettre pratiquement n’importe quelle valeur de chaîne ou de nombre entre un transformateur de message et un gestionnaire d’opération. L’objet du paramètre peut contenir zéro ou plusieurs paires clé/valeur de données qui sont directement corrélées à la demande d’opération actuelle. Le gestionnaire d’opération détermine quelles paires clé/valeur sont requises au fur et à mesure qu’il consomme ces valeurs. En règle générale, le transformateur de message définit ces paramètres sur l’objet CTIOperationRequest en appelant cette méthode et le gestionnaire d’opération les utilise à l’aide de la méthode CTIOperationRequest - getParameter(String key) ou CTIOperationRequest - getParameters().
JSON.parse(JSON.stringify(object) ]. Les objets qui ne répondent pas à ces critères peuvent ne pas se propager correctement dans toute la chaîne de traitement de l’opération.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"}}
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom de la clé sous laquelle stocker la valeur associée. |
| valide | Objet | Valeur à stocker. Types de données valides :
|
| Type | Description |
|---|---|
| nul |
{
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 (clé de chaîne, valeur d’objet)
Définit la paire clé-valeur d’attribut de session spécifiée sur l’objet CTIOperationRequest actuel.
L’utilisation des méthodes d’attribut get/set session permet de transmettre pratiquement n’importe quelle valeur de chaîne ou de nombre entre un transformateur de message et un gestionnaire d’opération. L’objet sessionAttribute peut contenir zéro ou plusieurs paires clé/valeur de données valides pour la durée d’une session définie par le fournisseur d’intégration téléphonie-informatique. Les attributs de session sont également accessibles dans un flux de contact. Le gestionnaire d’opération détermine quelles paires clé/valeur d’attribut de session sont nécessaires au fur et à mesure qu’il consomme ces valeurs. En règle générale, le transformateur de message définit ces attributs sur l’objet CTIOperationRequest en appelant cette méthode et le gestionnaire d’opération obtient les attributs à l’aide de la méthode CTIOperationRequest - getSessionAttribute (clé de chaîne) ou CTIOperationRequest - getSessionAttribute().
JSON.parse(JSON.stringify(object) ]. Les objets qui ne répondent pas à ces critères peuvent ne pas se propager correctement dans toute la chaîne de traitement de l’opération.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"}}
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom de la clé sous laquelle stocker la valeur associée. |
| valide | Objet | Valeur à stocker. Types de données valides :
|
| Type | Description |
|---|---|
| nul |
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(comportement de l’objet)
Définit le comportement à exécuter si le gestionnaire d’opération de la sous-étape actuelle est introuvable.
Cette méthode doit être appelée par le transformateur de message d’entrée.
| Nom | Type | Description |
|---|---|---|
| Comportement | OperationNotFoundBehaviours (en anglais seulement) | Comportement à utiliser si aucun comportement de gestion n’est spécifié pour la sous-étape. Il doit s’agir d’un comportement défini sur l’objet CTIOperationRequest.OperationNotFoundBehaviours. Valeurs possibles :
|
| Type | Description |
|---|---|
| nul |
(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);