CTIOperationResponse - Com escopo, global
. CTIOperationResponse A inclusão de script fornece métodos para definir e obter dados no objeto CTIOperationResponse atual.
Você usa objetos CTIOperationResponse para passar informações entre um manipulador de operação e um transformador de mensagem no ServiceNow Serviços de voz estrutura.
Normalmente, um manipulador de operação é responsável por definir valores no objeto CTIOperationResponse conforme ele processa a solicitação associada. Um transformador de mensagem é responsável por obter os valores do objeto CTIOperationRequest e criar a carga específica do CTI que é enviada de volta ao provedor do integrador de telefonia de computador (CTI).
- Proxy Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
- AWS Lex Bot (obter entrada do cliente)
O script do manipulador de operação a seguir mostra como usar vários CTIOperationResponse Métodos para definir valores no objeto 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);Para obter informações adicionais sobre como criar manipuladores de operação, consulte Configure um fluxo de contato para uma interação automatizada do chamador .
O script do transformador de mensagem a seguir obtém os valores definidos no objeto CTIOperationResponse e os armazena na carga específica do CTI que é enviada de volta ao provedor de 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);Esta inclusão de script é executada no sn_cti_core namespace. Antes de acessar CTIOperationRequest inclusão de script, o. ServiceNow Serviços de voz O plug-in Core (sn_cti_core) deve ser instalado. Para obter informações sobre esta instalação, consulte Instale as aplicações de voz da ServiceNow .
Para obter informações adicionais sobre ServiceNow Serviços de voz, consulte ServiceNow Voice .
CTIOperationResponse - CTIOperationResponse (origem da cadeia de caracteres)
Instancia um objeto CTIOperationResponse.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
var response = new sn_cti_core.CTIOperationResponse();
response.setMinorVersion(3);
CTIOperationResponse - getAuthToken()
Retorna o token de autenticação que foi definido no objeto CTIOperationResponse.
Este token é usado pelo ServiceNow Serviços de voz estrutura para autenticar o atual ServiceNow Serviços de voz usuário antes de executar o manipulador de operação solicitada, se for o manipulador auth_requiredo sinalizador está definido como verdadeiro. . auth_requiredO sinalizador é um campo na tabela Manipulador de operações [sn_cti_operation_handler]. A vida útil de um token de autenticação deve durar a vida útil da sessão de chamada, mas é determinada pelo provedor de CTI.
Você pode definir qualquer manipulação de autenticação/autorização necessária para sua implementação criando seu próprio manipulador de operação de autenticação. Independentemente de como o token de autenticação é gerado, o tradutor de mensagem deve passar o token de volta na carga de CTI. Além disso, o provedor de CTI deve armazenar esse token de autenticação localmente e passá-lo em cada solicitação de operação que requer autenticação.
Se estiver usando o manipulador de operação de autenticação fornecido pela instância, o manipulador iniciará a criação do token de autenticação com base em um PIN de quatro dígitos inserido pelo usuário. Em seguida, ele define o token de autenticação no objeto sessionAttributes do objeto CTIOperationResponse. O transformador de mensagem associado traduz o objeto sessionAttributes na carga específica do CTI e o envia para o provedor de CTI.
- Proxy Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
- AWS Lex Bot (obter entrada do cliente)
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O token de autenticação definido anteriormente no objeto CTIOperationRequest. Se não estiver definido, retornará nulo. |
var response = new sn_cti_core.CTIOperationResponse();
var token = response.getAuthToken();
CTIOperationResponse - getError()
Retorna o objeto de erro associado ao objeto CTIOperationResponse atual.
Você pode usar essas informações para formular a carga retornada ao provedor de integração de telefonia por computador (CTI).
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Informações de erro de operação. O formato deste objeto é determinado pelo provedor de CTI. Se um erro não existir, retornará nulo. |
(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()
Retorna o sys_id do registro de interação associado à sessão de chamada que foi definida no objeto CTIOperationResponse.
. CTIOperationResponse - setInteractionSysId(ID de cadeia de caracteres) o método deve ter sido chamado antes de chamar este método.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Sys_id do registro de interação definido no objeto CTIOperationResponse. Se o sys_id do registro de interação não estiver definido, o método retornará nulo. Tabela: Interação [interaction] |
var request = new sn_cti_core.CTIOperationResponse();
var interactionId = request.getInteractionSysId();
CTIOperationResponse - getMajorVersion()
Retorna a versão principal do software do integrador de telefonia de computador (CTI) definido no objeto CTIOperationResponse atual.
Use este método se os provedores de CTI estiverem conectados ao seu ServiceNow as instâncias estão executando várias versões de seu software, pois diferentes versões de software podem exigir cargas úteis diferentes. Se a carga for apenas ligeiramente diferente entre as versões de software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga verificando a versão do software que faz a solicitação no transformador de mensagem. Se a carga necessária for significativamente diferente entre as versões, pode ser mais eficaz usar vários transformadores de mensagem.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Número | Número da versão principal do software CTI. Se a versão principal nunca foi definida, retornará 1 . |
var request = new sn_cti_core.CTIOperationResponse();
var majorVersion = response.getMajorVersion();
CTIOperationResponse - getMessage()
Retorna a cadeia de caracteres da mensagem definida no objeto CTIOperationResponse atual.
Normalmente, esta é uma mensagem que é retornada ao usuário quando uma operação é concluída. Você pode definir este valor usando CTIOperationResponse - setMessage(mensagem de cadeia de caracteres) método.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Texto da mensagem. Se nenhuma mensagem existir, retornará nulo. |
(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()
Retorna a versão secundária do software do integrador de telefonia de computador (CTI) definido no objeto CTIOperationResponse atual.
Use este método se os provedores de CTI estiverem conectados ao seu ServiceNow as instâncias estão executando várias versões de seu software, pois diferentes versões de software podem exigir cargas úteis diferentes. Se a carga for apenas ligeiramente diferente entre as versões de software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga verificando a versão do software que faz a solicitação no transformador de mensagem. Se a carga necessária for significativamente diferente entre as versões, pode ser mais eficaz usar vários transformadores de mensagem.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Número | Número da versão secundária da carga associada a esta interação. Se a versão secundária nunca foi definida, retornará 0 . |
var request = new sn_cti_core.CTIOperationResponse();
var minorVersion = request.getMinorVersion();
CTIOperationResponse - getParameter(chave de cadeia de caracteres)
Retorna o valor de uma chave especificada anteriormente definida no objeto CTIOperationResponse atual.
O uso dos métodos de parâmetro GET/SET permite a passagem de praticamente qualquer cadeia de caracteres ou valor numérico entre um manipulador de operação e um transformador de mensagem. O objeto de parâmetro pode conter zero ou mais pares de chave/valor de dados que se correlacionam diretamente com a resposta da operação atual. O manipulador de operação determina quais pares de chave/valor são necessários à medida que produz esses valores. Use CTIOperationResponse - setParameter(chave de cadeia de caracteres, valor do objeto) Método para definir parâmetros no objeto CTIOperationResponse atual.
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | O nome do valor da chave a ser retornado. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O valor da chave passada. Se essa chave não existir, retornará nulo. |
var request = new sn_cti_core.CTIOperationResponse();
var parm = request.getParameter('contact.phone');
CTIOperationResponse - getParameters()
Retorna os pares de chave-valor para todos os parâmetros que foram definidos anteriormente no objeto CTIOperationResponse atual.
O uso dos métodos de parâmetro GET/SET permite a passagem de praticamente qualquer cadeia de caracteres ou valor numérico entre um manipulador de operação e um transformador de mensagem. O objeto de parâmetro pode conter zero ou mais pares de chave/valor de dados que se correlacionam diretamente com a resposta da operação atual. O manipulador de operação determina quais pares de chave/valor são necessários à medida que produz esses valores. Use CTIOperationResponse - setParameter(chave de cadeia de caracteres, valor do objeto) Método para definir parâmetros no objeto CTIOperationResponse atual.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Um mapa de pares de chave-valor que foram definidos anteriormente no objeto CTIOperationResponse. Esses pares de chave-valor são de forma livre e definidos pelas necessidades do manipulador de operação. Os valores retornados são cadeias de caracteres ou números. |
(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(chave de cadeia de caracteres)
Retorna o valor de um conjunto de chaves de atributo de sessão especificado no objeto CTIOperationResponse atual.
Usar os métodos de atributo de sessão GET/SET permite a passagem de praticamente qualquer cadeia de caracteres ou valor numérico entre um manipulador de operação e um transformador de mensagem. Os atributos de sessão também podem ser acessados em um fluxo de contato. O objeto sessionAttribute pode conter zero ou mais pares de chave/valor de dados, como o número de telefone do contato, que são válidos pela duração de uma sessão definida pelo provedor de integração de telefonia de computador. O manipulador de operação determina quais pares de chave/valor de atributo de sessão são necessários, pois ele utiliza esses valores durante o processamento. Normalmente, o manipulador de operações define esses atributos no objeto CTIOperationResponse chamando CTIOperationResponse - setSessionAttribute(Chave de cadeia de caracteres, valor do objeto) e o transformador de mensagem consomem os atributos usando este método.
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | O nome do valor da chave a ser retornado. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Valor da chave passada. Se essa chave não existir, retornará nulo. |
var response = new sn_cti_core.CTIOperationResponse();
var phoneAttribute = response.getSessionAttribute('contact.phone');
CTIOperationResponse - getSessionAttributes()
Retorna os pares de chave-valor para todos os atributos de sessão que foram definidos anteriormente no objeto CTIOperationResponse atual.
Usar os métodos de atributo de sessão GET/SET permite a passagem de praticamente qualquer cadeia de caracteres ou valor numérico entre um manipulador de operação e um transformador de mensagem. Os atributos de sessão também podem ser acessados em um fluxo de contato. O objeto sessionAttribute pode conter zero ou mais pares de chave/valor de dados, como o número de telefone do contato, que são válidos pela duração de uma sessão definida pelo provedor de integração de telefonia de computador. O manipulador de operação determina quais pares de chave/valor de atributo de sessão são necessários, pois ele utiliza esses valores durante o processamento. Normalmente, o manipulador de operações define esses atributos no objeto CTIOperationResponse chamando CTIOperationResponse - setSessionAttribute(Chave de cadeia de caracteres, valor do objeto) e o transformador de mensagem consomem os atributos usando este método.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Um mapa de pares de chave-valor que foram definidos anteriormente no objeto CTIOperationResponse. Esses pares de chave-valor são de forma livre e definidos pelas necessidades do manipulador de operação. Os valores retornados são cadeias de caracteres ou números. |
(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()
Retorna o código de status definido no objeto CTIOperationResponse atual.
Esses códigos de status devem corresponder aos códigos de status HTTP padrão, como 200 para sucesso, 401 para autorização necessária. Normalmente, os códigos de status resultantes são determinados pelo manipulador de operação e são definidos no objeto CTIOperationResponse usando CTIOperationResponse - setStatusCode(cadeia de caracteres statusCode) método. Em seguida, o transformador de mensagem usa este método para incluir o código de status na carga retornada ao provedor do integrador de telefonia de computador.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Número | Código de status da operação atual. Se um código de status não tiver sido definido, retornará -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(token de cadeia de caracteres)
Define um token de autenticação no objeto CTIOperationResponse atual.
Este token é usado pelo ServiceNow Serviços de voz estrutura para autenticar o atual ServiceNow Serviços de voz usuário antes de executar o manipulador de operação solicitada, se for o manipulador auth_requiredo sinalizador está definido como verdadeiro. . auth_requiredO sinalizador é um campo na tabela Manipulador de operações [sn_cti_operation_handler]. A vida útil de um token de autenticação deve durar a vida útil da sessão de chamada, mas é determinada pelo provedor de CTI.
Você pode definir qualquer manipulação de autenticação/autorização necessária para sua implementação criando seu próprio manipulador de operação de autenticação. Independentemente de como o token de autenticação é gerado, o tradutor de mensagem deve passar o token de volta na carga de CTI. Além disso, o provedor de CTI deve armazenar esse token de autenticação localmente e passá-lo em cada solicitação de operação que requer autenticação.
Se estiver usando o manipulador de operação de autenticação fornecido pela instância, o manipulador iniciará a criação do token de autenticação com base em um PIN de quatro dígitos inserido pelo usuário. Em seguida, ele define o token de autenticação no objeto sessionAttributes do objeto CTIOperationResponse. O transformador de mensagem associado traduz o objeto sessionAttributes na carga específica do CTI e o envia para o provedor de CTI.
- Proxy Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
- AWS Lex Bot (obter entrada do cliente)
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O token de autenticação a ser usado para autenticar operações que têm auth_requiredconjunto de sinalizadores. |
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 (erro de objeto)
Define o objeto de erro no objeto CTIOperationResponse atual.
Você pode usar o objeto de erro no componente para formular a carga a ser enviada ao provedor do integrador de telefonia de computador (CTI).
| Nome | Tipo | Descrição |
|---|---|---|
| erro | Objeto | Informações sobre o erro detectado ao processar a operação solicitada. O formato deste objeto é determinado pelo provedor de CTI. |
| Tipo | Descrição |
|---|---|
| vazio |
var response = new sn_cti_core.CTIOperationResponse();
response.setError(new Error("You did not supply a field"));
CTIOperationResponse - setInteractionSysId(ID de cadeia de caracteres)
Define o sys_id do registro de interação associado à solicitação de operação no objeto CTIOperationResponse atual.
| Nome | Tipo | Descrição |
|---|---|---|
| sys_id | Cadeia de caracteres | O sys_id a ser definido para a interação atual. |
| Tipo | Descrição |
|---|---|
| vazio |
var response = new sn_cti_core.CTIOperationResponse();
response.setInteractionSysId('98529cc55380001048e5ddeeff7b120b');
CTIOperationResponse - setMajorVersion(Number majorVersion)
Define a versão principal do software do provedor do integrador de telefonia de computador (CTI) que faz a solicitação no objeto CTIOperationResponse associado.
Use este método se os provedores de CTI estiverem conectados ao seu ServiceNow as instâncias estão executando várias versões de seu software, pois diferentes versões de software podem exigir cargas úteis diferentes. Se a carga for apenas ligeiramente diferente entre as versões de software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga verificando a versão do software que faz a solicitação no transformador de mensagem. Se a carga necessária for significativamente diferente entre as versões, pode ser mais eficaz usar vários transformadores de mensagem.
| Nome | Tipo | Descrição |
|---|---|---|
| majorVersion | Número | Versão principal do software do provedor de CTI que faz a solicitação de operação. Se este valor não tiver sido definido anteriormente, retornará 1 . |
| Tipo | Descrição |
|---|---|
| vazio |
var request = new sn_cti_core.CTIOperationResponse();
request.setMajorVersion(2);
CTIOperationResponse - setMessage(mensagem de cadeia de caracteres)
Define uma mensagem de texto no objeto CTIOperationResponse atual.
Normalmente, esta é uma mensagem que é retornada ao usuário quando uma operação é concluída e é definida pelo manipulador de operação associado. Em seguida, o transformador de mensagem usa o. CTIOperationResponse - getMessage() método para obter a mensagem e passá-la de volta para o provedor de integração de telefonia do computador.
| Nome | Tipo | Descrição |
|---|---|---|
| message | Cadeia de caracteres | Texto da mensagem |
| Tipo | Descrição |
|---|---|
| vazio |
(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)
Define a versão secundária do software do provedor do integrador de telefonia de computador (CTI) que faz a solicitação no objeto CTIOperationResponse associado.
Use este método se os provedores de CTI estiverem conectados ao seu ServiceNow as instâncias estão executando várias versões de seu software, pois diferentes versões de software podem exigir cargas úteis diferentes. Se a carga for apenas ligeiramente diferente entre as versões de software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga verificando a versão do software que faz a solicitação no transformador de mensagem. Se a carga necessária for significativamente diferente entre as versões, pode ser mais eficaz usar vários transformadores de mensagem.
| Nome | Tipo | Descrição |
|---|---|---|
| minorVersion | Número | Versão secundária do software do provedor de CTI que faz a solicitação de operação. Se este valor não tiver sido definido anteriormente, retornará 0 . |
| Tipo | Descrição |
|---|---|
| vazio |
var response = new sn_cti_core.CTIOperationResponse();
response.setMinorVersion(3);
CTIOperationResponse - setParameter(chave de cadeia de caracteres, valor do objeto)
Define o par de chave-valor especificado no objeto CTIOperationResponse associado.
O uso dos métodos de parâmetro GET/SET permite a passagem de praticamente qualquer cadeia de caracteres ou valor numérico entre um manipulador de operação e um transformador de mensagem. O objeto de parâmetro pode conter zero ou mais pares de chave/valor de dados que se correlacionam diretamente com a solicitação de operação atual. O manipulador de operação determina quais pares de chave/valor são necessários, pois consome esses valores. Normalmente, o manipulador de operação define esses parâmetros no objeto CTIOperationResponse chamando este método e o transformador de mensagem os consome usando CTIOperationResponse - getParmeter(chave de cadeia de caracteres) ou CTIOperationResponse - getSParameters() método.
JSON.parse(json.stringify(objeto)) operação. Objetos que não atendem a esses critérios podem não se propagar corretamente por toda a cadeia de processamento da operação.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"}}
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | Nome da chave sob a qual armazenar o valor associado. |
| valor | Objeto | Valor a ser armazenado para a chave. Tipos de dados válidos:
|
| Tipo | Descrição |
|---|---|
| vazio |
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(Chave de cadeia de caracteres, valor do objeto)
Define o par chave-valor do atributo de sessão especificado no objeto CTIOperationResponse associado.
Usar os métodos de atributo de sessão GET/SET permite a passagem de praticamente qualquer cadeia de caracteres ou valor numérico entre um manipulador de operação e um transformador de mensagem. O objeto sessionAttribute pode conter zero ou mais pares de chave/valor de dados válidos pela duração de uma sessão definida pelo provedor de integração de telefonia de computador. Os atributos de sessão também podem ser acessados em um fluxo de contato. O manipulador de operação determina quais pares de chave/valor de atributo de sessão são necessários, pois consome esses valores. Normalmente, o manipulador de operação define esses atributos no objeto CTIOperationResponse chamando este método e o transformador de mensagem obtém os atributos usando CTIOperationResponse - getSessionAttribute(chave de cadeia de caracteres) ou CTIOperationResponse - getSessionAttribute() método.
JSON.parse(json.stringify(objeto)) operação. Objetos que não atendem a esses critérios podem não se propagar corretamente por toda a cadeia de processamento da operação.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"}}
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | Nome da chave de atributo da sessão na qual definir o valor associado. |
| valor | Objeto | Valor a ser definido. Tipos de dados válidos:
|
| Tipo | Descrição |
|---|---|
| vazio |
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)
Define o código de status da solicitação de operação atual no objeto CTIOperationResponse.
Qualquer valor inteiro pode ser usado para definir o status, mas é recomendável emular os códigos de status HTTP, como 200 OK/Success, 400 Solicitação incorreta e 401 Não autorizado.
| Nome | Tipo | Descrição |
|---|---|---|
| statusCode | Número | Número inteiro que identifica exclusivamente o status da operação solicitada. |
| Tipo | Descrição |
|---|---|
| vazio |
(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);