CTIOperationResponse : champ d’application, global
L’include de script CTIOperationResponse fournit des méthodes permettant de définir et d’obtenir des données sur l’objet CTIOperationResponse actuel.
Vous utilisez des objets CTIOperationResponse pour transmettre des informations entre un gestionnaire d’opération et un transformateur de message dans le cadre de ServiceNow Fonctions vocales travail.
En règle générale, un gestionnaire d’opérations est responsable de la définition des valeurs sur l’objet CTIOperationResponse au fur et à mesure qu’il traite la demande associée. Un transformateur de message est ensuite chargé d’obtenir les valeurs à partir de l’objet CTIOperationRequest et de construire la charge utile spécifique à CTI qui est renvoyée au fournisseur de l’intégrateur de téléphonie informatique (CTI).
- Amazon Web Services (AWS) Proxy Lambda (appeler la fonction AWS Lambda)
- Bot Lex AWS (obtenir l’entrée du client)
Le script de gestionnaire d’opérations suivant montre comment utiliser diverses méthodes CTIOperationResponse pour définir des valeurs sur l’objet CTIOperationResponse.
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response) {
try {
var state = request.getParameter('$state');
if(!state) {
state = 'new';
}
var phone = request.getParameter('contact.phone');
var username = request.getParameter('contact.username');
var someDataPresent = phone || username;
if(!someDataPresent) {
throw 'phone or username must be supplied';
}
if('new' === state) {
var userGr = null;
if(phone || username) {
userGr = new GlideRecordSecure('sys_user');
var qc = null;
if(phone) {
qc = userGr.addQuery('phone', phone);
qc.addOrCondition('mobile_phone', phone);
qc.addOrCondition("home_phone", phone);
}
if(username) {
if(qc) {
qc.addOrCondition('user_name', username);
} else {
qc = userGr.addQuery('user_name', username);
}
}
// If there was criteria then run the query
if(qc) {
userGr.query();
} else {
userGr = null;
}
}
var foundUser = userGr && userGr.next();
var phonelogGr = new GlideRecord('sn_openframe_phone_log');
phonelogGr.initialize();
phonelogGr.setValue('call_id', request.getParameter('contact.id'));
phonelogGr.setValue('phone_number', phone);
if(foundUser) {
phonelogGr.setValue('contact', userGr.getUniqueValue());
}
phonelogGr.insert();
var interactionGr = new GlideRecordSecure('interaction');
interactionGr.initialize();
interactionGr.setValue('type', 'phone');
interactionGr.setValue('short_description', 'User Contact via Phone: ' + phone);
interactionGr.setValue('channel_metadata_table', 'sn_openframe_phone_log');
interactionGr.setValue('channel_metadata_document',phonelogGr.getUniqueValue());
if(foundUser) {
interactionGr.setValue('opened_for', userGr.getUniqueValue());
response.setSessionAttribute('snc_user_first_name', userGr.getValue('first_name'));
response.setSessionAttribute('snc_user_last_name', userGr.getValue('last_name'));
response.setSessionAttribute('snc_user_sys_id', userGr.getUniqueValue());
} else {
response.setSessionAttribute('snc_user_sys_id', "USER_NOT_FOUND");
}
interactionGr.setValue('state', 'new');
var interactionId = interactionGr.insert();
response.setStatusCode(200);
response.setMessage('success');
response.setSessionAttribute('interactionTable', 'interaction');
response.setSessionAttribute('interactionId', interactionId);
}
} catch(e) {
ctx.setError(e);
}
})(request, response);Pour plus d’informations sur la création de gestionnaires d’opérations, voir Configurer un flux de contact pour une interaction d’appelant automatisée.
Le script de transformateur de message suivant obtient les valeurs définies sur l’objet CTIOperationResponse et les stocke dans la charge utile spécifique au CTI, qui est ensuite renvoyée au fournisseur CTI.
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);Cet include de script s’exécute dans l’espace de noms sn_cti_core . Avant de pouvoir accéder à l’include de script CTIOperationRequest , le module d’extension ServiceNow Fonctions vocales Core (sn_cti_core) doit être installé. Pour plus d’informations sur cette installation, consultez Installer les applications vocales ServiceNow.
Pour plus d’informations sur le ServiceNow Fonctions vocales, voir ServiceNow Voice.
CTIOperationResponse : CTIOperationResponse (origine de la chaîne)
Instancie un objet CTIOperationResponse.
| Nom | Type | Description |
|---|---|---|
| Aucun |
var response = new sn_cti_core.CTIOperationResponse();
response.setMinorVersion(3);
CTIOperationResponse : getAuthToken()
Renvoie le jeton d’authentification défini sur l’objet CTIOperationResponse.
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 dans la table Gestionnaire d’opérations [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. Quelle que soit la façon dont le jeton d’authentification est généré, le traducteur de message doit retransmettre 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 vous utilisez le gestionnaire d’opération d’authentification fourni par l’instance, 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.
- Amazon Web Services (AWS) Proxy Lambda (appeler la fonction AWS Lambda)
- Bot Lex AWS (obtenir l’entrée du client)
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Jeton d’authentification précédemment défini sur l’objet CTIOperationRequest. S’il n’est pas défini, renvoie null. |
var response = new sn_cti_core.CTIOperationResponse();
var token = response.getAuthToken();
CTIOperationResponse : getError()
Renvoie l’objet d’erreur associé à l’objet CTIOperationResponse actuel.
Vous pouvez utiliser ces informations pour formuler la charge utile renvoyée au fournisseur d’intégration téléphonie-informatique (CTI).
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Informations sur l’erreur de fonctionnement. Le format de cet objet est déterminé par le fournisseur CTI. En l’absence d’erreur, renvoie null. |
(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 we 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);
CTIOperationResponse : getInteractionSysId()
Renvoie le sys_id de l’enregistrement d’interaction associé à la session d’appel qui a été définie sur l’objet CTIOperationResponse.
La méthode CTIOperationResponse - 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’ensemble d’enregistrements d’interaction sur l’objet CTIOperationResponse. Les enregistrements d’interaction se trouvent dans la table Interaction [interaction]. Si le sys_id d’enregistrement d’interaction n’est pas défini, la méthode retourne null. |
var request = new sn_cti_core.CTIOperationResponse();
var interactionId = request.getInteractionSysId();
CTIOperationResponse : getMajorVersion()
Renvoie la version majeure du logiciel de couplage téléphonie-informatique (CTI) définie sur l’objet CTIOperationResponse 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 des charges utiles différentes. Si la charge utile n’est que légèrement différente d’une version logicielle à l’autre, il peut être judicieux de n’avoir qu’un seul transformateur de message. Vous pouvez ensuite gérer les différences de charge utile en vérifiant simplement la version du logiciel effectuant la requête dans votre transformateur de message. Si la charge utile requise est sensiblement différente d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs transformateurs de message.
| 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.CTIOperationResponse();
var majorVersion = response.getMajorVersion();
CTIOperationResponse : getMessage()
Renvoie la chaîne de message définie sur l’objet CTIOperationResponse actuel.
En règle générale, il s’agit d’un message renvoyé à l’utilisateur une fois l’opération terminée. Vous pouvez définir cette valeur à l’aide de la méthode CTIOperationResponse - setMessage(String message).
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Texte du message. Si aucun message n’existe, renvoie null. |
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);
CTIOperationResponse : getMinorVersion()
Renvoie la version mineure du logiciel de couplage téléphonie-informatique (CTI) définie sur l’objet CTIOperationResponse 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 des charges utiles différentes. Si la charge utile n’est que légèrement différente d’une version logicielle à l’autre, il peut être judicieux de n’avoir qu’un seul transformateur de message. Vous pouvez ensuite gérer les différences de charge utile en vérifiant simplement la version du logiciel effectuant la requête dans votre transformateur de message. Si la charge utile requise est sensiblement différente d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs transformateurs de message.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Numéro de version mineure de la charge utile associée à cette interaction. Si la version mineure n’a jamais été définie, renvoie 0. |
var request = new sn_cti_core.CTIOperationResponse();
var minorVersion = request.getMinorVersion();
CTIOperationResponse : getParameter(clé de chaîne)
Renvoie la valeur d’une clé spécifiée précédemment définie sur l’objet CTIOperationResponse actuel.
L’utilisation des méthodes du paramètre get/set permet le passage de pratiquement n’importe quelle valeur de chaîne ou de nombre entre un gestionnaire d’opération et un transformateur de message. L’objet du paramètre peut contenir zéro ou plusieurs paires clé/valeur de données qui sont directement corrélées à la réponse de l’opération actuelle. Le gestionnaire des opérations détermine les paires clé/valeur requises au fur et à mesure qu’il produit ces valeurs. Utilisez la méthode CTIOperationResponse - setParameter(String key, Object value) pour définir les paramètres sur l’objet CTIOperationResponse actuel.
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom de la valeur de clé à renvoyer. |
| Type | Description |
|---|---|
| Chaîne | Valeur de la clé transmise. En l’absence d’une telle clé, renvoie null. |
var request = new sn_cti_core.CTIOperationResponse();
var parm = request.getParameter('contact.phone');
CTIOperationResponse : getParameters()
Renvoie les paires clé-valeur pour tous les paramètres précédemment définis sur l’objet CTIOperationResponse actuel.
L’utilisation des méthodes du paramètre get/set permet le passage de pratiquement n’importe quelle valeur de chaîne ou de nombre entre un gestionnaire d’opération et un transformateur de message. L’objet du paramètre peut contenir zéro ou plusieurs paires clé/valeur de données qui sont directement corrélées à la réponse de l’opération actuelle. Le gestionnaire des opérations détermine les paires clé/valeur requises au fur et à mesure qu’il produit ces valeurs. Utilisez la méthode CTIOperationResponse - setParameter(String key, Object value) pour définir les paramètres sur l’objet CTIOperationResponse actuel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Carte des paires clé-valeur précédemment définies sur l’objet CTIOperationResponse. 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 des chaînes, soit des nombres. |
(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);
CTIOperationResponse : getSessionAttribute (clé de chaîne)
Renvoie la valeur d’une clé d’attribut de session spécifiée définie sur l’objet CTIOperationResponse actuel.
L’utilisation des méthodes d’attribut de session get/set permet le passage de pratiquement n’importe quelle valeur de chaîne ou de nombre entre un gestionnaire d’opération et un transformateur de message. Les attributs de session sont également accessibles dans un flux de contact. L’objet sessionAttribute peut contenir zéro ou plusieurs paires clé/valeur, telles que le numéro de téléphone du contact, qui sont valides pour la durée d’une session définie par le fournisseur d’intégration de téléphonie informatique. Le gestionnaire des opérations détermine quelles paires clé/valeur d’attribut de session sont nécessaires car il utilise ces valeurs pendant le traitement. En règle générale, le gestionnaire d’opérations définit ces attributs sur l’objet CTIOperationResponse en appelant la méthode CTIOperationResponse - setSessionAttribute(String key, Object value) et le transformateur de message consomme les attributs à l’aide de cette méthode.
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom de la valeur de clé à renvoyer. |
| Type | Description |
|---|---|
| Chaîne | Valeur de la clé transmise. En l’absence d’une telle clé, renvoie null. |
var response = new sn_cti_core.CTIOperationResponse();
var phoneAttribute = response.getSessionAttribute('contact.phone');
CTIOperationResponse : getSessionAttributes()
Renvoie les paires clé-valeur pour tous les attributs de session précédemment définis sur l’objet CTIOperationResponse actuel.
L’utilisation des méthodes d’attribut de session get/set permet le passage de pratiquement n’importe quelle valeur de chaîne ou de nombre entre un gestionnaire d’opération et un transformateur de message. Les attributs de session sont également accessibles dans un flux de contact. L’objet sessionAttribute peut contenir zéro ou plusieurs paires clé/valeur, telles que le numéro de téléphone du contact, qui sont valides pour la durée d’une session définie par le fournisseur d’intégration de téléphonie informatique. Le gestionnaire des opérations détermine quelles paires clé/valeur d’attribut de session sont nécessaires car il utilise ces valeurs pendant le traitement. En règle générale, le gestionnaire d’opérations définit ces attributs sur l’objet CTIOperationResponse en appelant la méthode CTIOperationResponse - setSessionAttribute(String key, Object value) et le transformateur de message consomme les attributs à 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 CTIOperationResponse. 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 des chaînes, soit des nombres. |
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);
CTIOperationResponse : getStatusCode()
Renvoie le code d’état défini sur l’objet CTIOperationResponse actuel.
Ces codes d’état doivent correspondre aux codes d’état HTTP standard, tels que 200 pour réussite, 401 pour autorisation requise. En règle générale, les codes d’état qui en résultent sont déterminés par le gestionnaire d’opération et sont définis sur l’objet CTIOperationResponse à l’aide de la méthode CTIOperationResponse - setStatusCode(String statusCode). Le transformateur de message utilise ensuite cette méthode pour inclure le code d’état dans la charge utile renvoyée au fournisseur de l’intégrateur de téléphonie informatique.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Code d’état de l’opération en cours. Si aucun code d’état n’a été défini, renvoie -1. |
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);
CTIOperationResponse : setAuthToken(jeton de chaîne)
Définit un jeton d’authentification sur l’objet CTIOperationResponse 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 dans la table Gestionnaire d’opérations [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. Quelle que soit la façon dont le jeton d’authentification est généré, le traducteur de message doit retransmettre 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 vous utilisez le gestionnaire d’opération d’authentification fourni par l’instance, 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.
- Amazon Web Services (AWS) Proxy Lambda (appeler la fonction AWS Lambda)
- Bot Lex AWS (obtenir l’entrée du client)
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Jeton d’authentification à utiliser pour authentifier les opérations pour lesquelles le marqueur est auth_required défini. |
var response = new sn_cti_core.CTIOperationResponse();
var authenticate = <Your authentication code here>; // Authenticate the user
if (authenticated) {
var claims = {
"interactionId":interactionGr.sys_id.toString()
};
var jwt = new sn_cti_core.AuthHelpers().generateJWT(claims);
response.setAuthToken(jwt);
}
CTIOperationResponse : setError(erreur d’objet)
Définit l’objet d’erreur dans l’objet CTIOperationResponse actuel.
Vous pouvez utiliser l’objet d’erreur dans le composant pour formuler la charge utile à envoyer au fournisseur de l’intégrateur de téléphonie informatique (CTI).
| Nom | Type | Description |
|---|---|---|
| erreur | Objet | Informations sur l’erreur qui a été détectée lors du traitement de l’opération demandée. Le format de cet objet est déterminé par le fournisseur CTI. |
| Type | Description |
|---|---|
| nul |
var response = new sn_cti_core.CTIOperationResponse();
response.setError(new Error("You did not supply a field"));
CTIOperationResponse : setInteractionSysId(ID de chaîne)
Définit la sys_id de l’enregistrement d’interaction associé à la demande d’opération sur l’objet CTIOperationResponse actuel.
| Nom | Type | Description |
|---|---|---|
| sys_id | Chaîne | Le sys_id à définir pour l’interaction actuelle. |
| Type | Description |
|---|---|
| nul |
var response = new sn_cti_core.CTIOperationResponse();
response.setInteractionSysId('98529cc55380001048e5ddeeff7b120b');
CTIOperationResponse : setMajorVersion(Number majorVersion)
Définit la version majeure du logiciel du fournisseur de l’intégrateur de téléphonie informatique (CTI) effectuant la demande sur l’objet CTIOperationResponse 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 des charges utiles différentes. Si la charge utile n’est que légèrement différente d’une version logicielle à l’autre, il peut être judicieux de n’avoir qu’un seul transformateur de message. Vous pouvez ensuite gérer les différences de charge utile en vérifiant simplement la version du logiciel effectuant la requête dans votre transformateur de message. Si la charge utile requise est sensiblement différente d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs transformateurs de message.
| 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.CTIOperationResponse();
request.setMajorVersion(2);
CTIOperationResponse : setMessage(message de chaîne)
Définit un message texte sur l’objet CTIOperationResponse actuel.
En règle générale, il s’agit d’un message renvoyé à l’utilisateur une fois l’opération terminée et défini par le gestionnaire d’opération associé. Le transformateur de message utilise ensuite la méthode CTIOperationResponse - getMessage() pour obtenir le message et le renvoyer au fournisseur d’intégration de téléphonie informatique.
| Nom | Type | Description |
|---|---|---|
| message | Chaîne | Texte du message |
| Type | Description |
|---|---|
| nul |
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {
var notes = '', lang = request.getLanguage();
try {
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);
CTIOperationResponse : setMinorVersion(Number minorVersion)
Définit la version mineure du logiciel du fournisseur de l’intégrateur de téléphonie informatique (CTI) effectuant la demande sur l’objet CTIOperationResponse 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 des charges utiles différentes. Si la charge utile n’est que légèrement différente d’une version logicielle à l’autre, il peut être judicieux de n’avoir qu’un seul transformateur de message. Vous pouvez ensuite gérer les différences de charge utile en vérifiant simplement la version du logiciel effectuant la requête dans votre transformateur de message. Si la charge utile requise est sensiblement différente d’une version à l’autre, il peut être plus efficace d’utiliser plusieurs transformateurs de message.
| 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 response = new sn_cti_core.CTIOperationResponse();
response.setMinorVersion(3);
CTIOperationResponse : setParameter(clé de chaîne, valeur d’objet)
Définit la paire clé-valeur spécifiée sur l’objet CTIOperationResponse associé.
L’utilisation des méthodes du paramètre get/set permet le passage de pratiquement n’importe quelle valeur de chaîne ou de nombre entre un gestionnaire d’opération et un transformateur de message. 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 en cours. Le gestionnaire des opérations détermine quelles paires clé/valeur sont requises au fur et à mesure qu’il consomme ces valeurs. En règle générale, le gestionnaire d’opérations définit ces paramètres sur l’objet CTIOperationResponse en appelant cette méthode et le transformateur de message les consomme à l’aide de la méthode CTIOperationResponse - getParmeter(String key) ou CTIOperationResponse - getSParameters().
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 pour la clé. Types de données valides :
|
| Type | Description |
|---|---|
| nul |
var response = new sn_cti_core.CTIOperationResponse();
response.setParameter('contact.phone', '+15552222345');
response.setParameter('contact.okToCall', true);
response.setParameter('contact.address', {
street: '1234 Main St'
city: 'API City',
zip: 91335
});
CTIOperationResponse : setSessionAttribute (clé de chaîne, valeur d’objet)
Définit la paire clé-valeur d’attribut de session spécifiée sur l’objet CTIOperationResponse associé.
L’utilisation des méthodes d’attribut de session get/set permet le passage de pratiquement n’importe quelle valeur de chaîne ou de nombre entre un gestionnaire d’opération et un transformateur de message. 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 de téléphonie informatique. Les attributs de session sont également accessibles dans un flux de contact. Le gestionnaire d’opérations 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 gestionnaire d’opérations définit ces attributs sur l’objet CTIOperationResponse en appelant cette méthode, et le transformateur de message obtient les attributs à l’aide de la méthode CTIOperationResponse : getSessionAttribute (clé de chaîne) ou CTIOperationResponse : 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é d’attribut de session sous laquelle définir la valeur associée. |
| valide | Objet | Valeur à définir. Types de données valides :
|
| Type | Description |
|---|---|
| nul |
var response = new sn_cti_core.CTIOperationResponse();
response.setSessionAttribute('contact.phone', '+15552222345');
response.setSessionAttribute('contact.okToCall', true);
response.setSessionAttribute('contact.address', {
street: '1234 Main St'
city: 'API City',
zip: 91335
});
CTIOperationResponse : setStatusCode(Number statusCode)
Définit le code d’état de la demande d’opération en cours sur l’objet CTIOperationResponse.
Vous pouvez utiliser n’importe quelle valeur de nombre entier pour définir l’état, mais il est recommandé d’émuler les codes d’état HTTP, tels que 200 = OK/Réussite, 400 = Demande incorrecte, 401 = Non autorisé.
| Nom | Type | Description |
|---|---|---|
| statusCode | Numéro | Nombre entier qui identifie de manière unique l’état de l’opération demandée. |
| Type | Description |
|---|---|
| nul |
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {
var notes = '', lang = request.getLanguage();
try {
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);