CTIOperationResponse - com escopo, global
A inclusão de script CTIOperationResponse 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 na estrutura ServiceNow Voz.
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 para o provedor do integrador de telefonia e computação (CTI).
- Proxy do Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
- Bot do AWS Lex (obter entrada do cliente)
O script do manipulador de operação a seguir mostra como usar vários métodos CTIOperationResponse 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 Configuração de um fluxo de contato para uma interação automatizada com solicitante.
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 para o 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 namespace sn_cti_core. Antes que você possa acessar a inclusão de script CTIOperationRequest, o plug-in ServiceNow Voz Core (sn_cti_core) deve ser instalado. Para obter informações sobre esta instalação, consulte Instalar aplicações do ServiceNow Voice.
Para obter informações adicionais sobre o ServiceNow Voz, consulte ServiceNow Voice.
CTIOperationResponse - CTIOperationResponse(cadeia de caracteres de origem)
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 pela estrutura ServiceNow Voz para autenticar o usuário ServiceNow Voz atual antes de executar o manipulador de operação solicitada se o sinalizador auth_required do manipulador estiver definido como verdadeiro. O sinalizador auth_required é um campo na tabela Manipulador de operações [sn_cti_operation_handler]. A vida útil de um token de autenticação deve ser 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 mensagens deve passar o token de volta na carga de CTI. Além disso, o provedor de CTI deve armazenar este 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 converte o objeto "sessionAttributes" na carga específica do CTI e a envia para o provedor de CTI.
- Proxy do Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
- Bot do AWS Lex (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 e computação (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 não existir um erro, retorna 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.
O método CTIOperationResponse - setInteractionSysId(String Id) deve ter sido chamado antes de chamar este método.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O sys_id do registro de interação definido no objeto CTIOperationResponse. Os registros de interação estão localizados na tabela Interação [interação]. Se o registro de interação sys_id não estiver definido, o método retornará nulo. |
var request = new sn_cti_core.CTIOperationResponse();
var interactionId = request.getInteractionSysId();
CTIOperationResponse - getMajorVersion()
Retorna a versão principal do software do integrador de telefonia e computação (CTI) definido no objeto CTIOperationResponse atual.
Use este método se os provedores de CTI conectados à sua instância ServiceNow estiverem executando várias versões do software, pois diferentes versões de software podem exigir cargas diferentes. Se a carga útil for apenas um pouco diferente entre as versões do software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga apenas 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, retorna 1. |
var request = new sn_cti_core.CTIOperationResponse();
var majorVersion = response.getMajorVersion();
CTIOperationResponse - getMessage()
Retorna a cadeia de caracteres de mensagem definida no objeto CTIOperationResponse atual.
Normalmente, esta é uma mensagem que é falada de volta para o usuário quando uma operação é concluída. Você pode definir este valor usando o método CTIOperationResponse - setMessage(String message).
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Texto da mensagem. Se não existir nenhuma mensagem, retorna 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 e computação (CTI) definido no objeto CTIOperationResponse atual.
Use este método se os provedores de CTI conectados à sua instância ServiceNow estiverem executando várias versões do software, pois diferentes versões de software podem exigir cargas diferentes. Se a carga útil for apenas um pouco diferente entre as versões do software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga apenas 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 útil associada a esta interação. Se a versão secundária nunca foi definida, retorna 0. |
var request = new sn_cti_core.CTIOperationResponse();
var minorVersion = request.getMinorVersion();
CTIOperationResponse - getParameter(cadeia de caracteres chave)
Retorna o valor de uma chave especificada definida 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 à resposta da operação atual. O manipulador de operação determina quais pares de chave/valor são necessários ao produzir esses valores. Use o método CTIOperationResponse - setParameter(String key, Object value) para definir parâmetros no objeto CTIOperationResponse atual.
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | O nome do valor de chave a ser retornado. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O valor da chave aprovada. 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 à resposta da operação atual. O manipulador de operação determina quais pares de chave/valor são necessários ao produzir esses valores. Use o método CTIOperationResponse - setParameter(String key, Object value) 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(cadeia de caracteres chave)
Retorna o valor de uma chave de atributo de sessão especificada definida no objeto CTIOperationResponse atual.
O uso dos métodos de atributo de sessão get/set permite a passagem de praticamente qualquer valor de cadeia de caracteres ou número 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 durante uma sessão definida pelo provedor de integração de telefonia e computação. 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ção define esses atributos no objeto CTIOperationResponse chamando o método CTIOperationResponse - setSessionAttribute(String key, Object value) e o transformador de mensagem consome os atributos usando esse método.
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | O nome do valor de chave a ser retornado. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Valor da chave aprovada. 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.
O uso dos métodos de atributo de sessão get/set permite a passagem de praticamente qualquer valor de cadeia de caracteres ou número 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 durante uma sessão definida pelo provedor de integração de telefonia e computação. 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ção define esses atributos no objeto CTIOperationResponse chamando o método CTIOperationResponse - setSessionAttribute(String key, Object value) e o transformador de mensagem consome os atributos usando esse 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 o método CTIOperationResponse - setStatusCode(String statusCode). O transformador de mensagem usa esse método para incluir o código de status na carga retornada ao provedor do integrador de telefonia e computação.
| 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, retorna -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 pela estrutura ServiceNow Voz para autenticar o usuário ServiceNow Voz atual antes de executar o manipulador de operação solicitada se o sinalizador auth_required do manipulador estiver definido como verdadeiro. O sinalizador auth_required é um campo na tabela Manipulador de operações [sn_cti_operation_handler]. A vida útil de um token de autenticação deve ser 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 mensagens deve passar o token de volta na carga de CTI. Além disso, o provedor de CTI deve armazenar este 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 converte o objeto "sessionAttributes" na carga específica do CTI e a envia para o provedor de CTI.
- Proxy do Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
- Bot do AWS Lex (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 o sinalizador auth_required definido. |
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 e computação (CTI).
| Nome | Tipo | Descrição |
|---|---|---|
| erro | Objeto | Informações sobre o erro detectado durante o processamento da 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 da 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 e computação (CTI) que faz a solicitação no objeto CTIOperationResponse associado.
Use este método se os provedores de CTI conectados à sua instância ServiceNow estiverem executando várias versões do software, pois diferentes versões de software podem exigir cargas diferentes. Se a carga útil for apenas um pouco diferente entre as versões do software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga apenas 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, retorna 1. |
| Tipo | Descrição |
|---|---|
| vazio |
var request = new sn_cti_core.CTIOperationResponse();
request.setMajorVersion(2);
CTIOperationResponse - setMessage (cadeia de caracteres mensagem)
Define uma mensagem de texto no objeto CTIOperationResponse atual.
Normalmente, esta é uma mensagem que é falada de volta para o usuário quando uma operação é concluída e é definida pelo manipulador de operação associado. O transformador de mensagem usa o método CTIOperationResponse - getMessage() para obter a mensagem e passá-la de volta para o provedor de integração de telefonia e computação.
| 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 e computação (CTI) que faz a solicitação no objeto CTIOperationResponse associado.
Use este método se os provedores de CTI conectados à sua instância ServiceNow estiverem executando várias versões do software, pois diferentes versões de software podem exigir cargas diferentes. Se a carga útil for apenas um pouco diferente entre as versões do software, pode fazer sentido ter apenas um único transformador de mensagem. Você pode lidar com as diferenças de carga apenas 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 foi definido anteriormente, retorna 0. |
| Tipo | Descrição |
|---|---|
| vazio |
var response = new sn_cti_core.CTIOperationResponse();
response.setMinorVersion(3);
CTIOperationResponse - setParameter (chave de cadeia de caracteres, valor de 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 à solicitação de operação atual. O manipulador de operação determina quais pares de chave/valor são necessários conforme ele 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 o método CTIOperationResponse - getParmeter(String key) ou CTIOperationResponse - getSParameters().
operação JSON.parse(JSON.stringify(object)). Os objetos que não atendem a esses critérios podem não ser propagados 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 o valor associado será armazenado. |
| 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 de objeto)
Define o par de chave-valor do atributo de sessão especificado no objeto CTIOperationResponse associado.
O uso dos métodos de atributo de sessão get/set permite a passagem de praticamente qualquer valor de cadeia de caracteres ou número 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 que são válidos durante uma sessão definida pelo provedor de integração de telefonia e computação. 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 ele 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 o método CTIOperationResponse - getSessionAttribute(String key) ou CTIOperationResponse - getSessionAttribute().
operação JSON.parse(JSON.stringify(object)). Os objetos que não atendem a esses critérios podem não ser propagados 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 de sessão sob a qual o valor associado será definido. |
| 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.
Você pode usar qualquer valor inteiro para definir o status, mas é recomendável emular os códigos de status HTTP, como 200 = Ok/Êxito, 400 = Solicitação incorreta, 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);