---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# CTIOperationResponse - com escopo, global

# CTIOperationResponse - com escopo, global {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 23 min. de leitura

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).  
O sistema base ServiceNow fornece manipuladores de operação de trabalho e transformadores de mensagem que permitem a conexão com o Amazon Connect. Ao criar fluxos de contato no Amazon Connect, há dois pontos de integração entre os serviços da Amazon e uma instância ServiceNow :

* Proxy do Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
* Bot do AWS Lex (obter entrada do cliente)
{#CTIOperationResponseAPI__ul_pqp_3hl_hlb}Você pode encontrar os manipuladores de operação e transformadores de mensagem disponíveis para esses pontos de integração nas tabelas Manipuladores de operação \[sn_cti_operation_handler\] e Transformador de mensagem do provedor \[sn_cti_provider_msg_transormer\].

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](https://www.servicenow.com/docs/access?context=establish-automated-bot-interactions&version=xanadu&pubname=xanadu-servicenow-platform&ft:locale=en-US).

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](https://www.servicenow.com/docs/access?context=install-ccc-apps&version=xanadu&pubname=xanadu-servicenow-platform&ft:locale=en-US).

Para obter informações adicionais sobre o ServiceNow Voz, consulte [ServiceNow Voice](https://www.servicenow.com/docs/access?context=cloud-call-center-overview&version=xanadu&pubname=xanadu-servicenow-platform&ft:locale=en-US).

## CTIOperationResponse - CTIOperationResponse(cadeia de caracteres de origem) {#ariaid-title2}

Instancia um objeto CTIOperationResponse.
{#CTIOpResp-CTIOperationResp_S__table_zx4_l3y_glb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 1. Parâmetros]

{#CTIOpResp-CTIOperationResp_S__table_zx4_l3y_glb}  

    var response = new sn_cti_core.CTIOperationResponse();
    response.setMinorVersion(3);

## CTIOperationResponse -- getAuthToken() {#ariaid-title3}

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.  
Nota:  
Se o token de autenticação não for aprovado, todas as solicitações para executar manipuladores de operação com o sinalizador auth_required definido falharão. Se você não usar autenticação, não precisará manter tokens de autenticação.  
O sistema base ServiceNow fornece manipuladores de operação de trabalho e transformadores de mensagem que permitem a conexão com o Amazon Connect. Ao criar fluxos de contato no Amazon Connect, há dois pontos de integração entre os serviços da Amazon e uma instância ServiceNow :

* Proxy do Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
* Bot do AWS Lex (obter entrada do cliente)
{#CTIOpResp-getAuthToken__ul_pqp_3hl_hlb}Você pode encontrar os manipuladores de operação e transformadores de mensagem disponíveis para esses pontos de integração nas tabelas Manipuladores de operação \[sn_cti_operation_handler\] e Transformador de mensagem do provedor \[sn_cti_provider_msg_transormer\]. {#CTIOpResp-getAuthToken__table_bfd_c4x_zkb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 2. Parâmetros]

{#CTIOpResp-getAuthToken__table_bfd_c4x_zkb} {#CTIOpResp-getAuthToken__table_cfd_c4x_zkb__entry__2}

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | O token de autenticação definido anteriormente no objeto CTIOperationRequest. Se não estiver definido, retornará nulo. |
[Tabela 3. Retorna]

{#CTIOpResp-getAuthToken__table_cfd_c4x_zkb}  

    var response = new sn_cti_core.CTIOperationResponse();
    var token = response.getAuthToken();

## CTIOperationResponse -- getError() {#ariaid-title4}

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).
{#CTIOpResp-getError__table_szx_nt4_blb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 4. Parâmetros]

{#CTIOpResp-getError__table_szx_nt4_blb} {#CTIOpResp-getError__table_tzx_nt4_blb__entry__2}

| 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. |
[Tabela 5. Retorna]

{#CTIOpResp-getError__table_tzx_nt4_blb}  

    (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() {#ariaid-title5}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-setInteractionSysId_S "Define o sys_id do registro de interação associado à solicitação de operação no objeto CTIOperationResponse atual.") deve ter sido chamado antes de chamar este método.
{#CTIOpResp-getInteractionSysId__table_cjp_gpg_ykb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 6. Parâmetros]

{#CTIOpResp-getInteractionSysId__table_cjp_gpg_ykb} {#CTIOpResp-getInteractionSysId__table_djp_gpg_ykb__entry__2}

| 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. |
[Tabela 7. Retorna]

{#CTIOpResp-getInteractionSysId__table_djp_gpg_ykb}  

    var request = new sn_cti_core.CTIOperationResponse();
    var interactionId = request.getInteractionSysId();

## CTIOperationResponse - getMajorVersion() {#ariaid-title6}

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.
{#CTIOpResp-getMajorVersion__table_olp_qvg_ykb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 8. Parâmetros]

{#CTIOpResp-getMajorVersion__table_olp_qvg_ykb} {#CTIOpResp-getMajorVersion__table_plp_qvg_ykb__entry__2}

| Tipo | Descrição |
|-|-|
| Número | Número da versão principal do software CTI. Se a versão principal nunca foi definida, retorna 1. |
[Tabela 9. Retorna]

{#CTIOpResp-getMajorVersion__table_plp_qvg_ykb}  

    var request = new sn_cti_core.CTIOperationResponse();
    var majorVersion = response.getMajorVersion();

## CTIOperationResponse - getMessage() {#ariaid-title7}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-setMessage_S "Define uma mensagem de texto no objeto CTIOperationResponse atual.").
{#CTIOpResp-getMessage__table_p3z_hh4_blb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 10. Parâmetros]

{#CTIOpResp-getMessage__table_p3z_hh4_blb} {#CTIOpResp-getMessage__table_q3z_hh4_blb__entry__2}

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | Texto da mensagem. Se não existir nenhuma mensagem, retorna nulo. |
[Tabela 11. Retorna]

{#CTIOpResp-getMessage__table_q3z_hh4_blb}  

    (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() {#ariaid-title8}

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.
{#CTIOpResp-getMinorVersion__table_chp_z41_zkb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 12. Parâmetros]

{#CTIOpResp-getMinorVersion__table_chp_z41_zkb} {#CTIOpResp-getMinorVersion__table_dhp_z41_zkb__entry__2}

| 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. |
[Tabela 13. Retorna]

{#CTIOpResp-getMinorVersion__table_dhp_z41_zkb}  

    var request = new sn_cti_core.CTIOperationResponse();
    var minorVersion = request.getMinorVersion();

## CTIOperationResponse - getParameter(cadeia de caracteres chave) {#ariaid-title9}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-setParameter_S_O "Define o par de chave-valor especificado no objeto CTIOperationResponse associado.") para definir parâmetros no objeto CTIOperationResponse atual.
{#CTIOpResp-getParameter_S__table_n1d_rgr_zkb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| chave | Cadeia de caracteres | O nome do valor de chave a ser retornado. |
[Tabela 14. Parâmetros]

{#CTIOpResp-getParameter_S__table_n1d_rgr_zkb} {#CTIOpResp-getParameter_S__table_o1d_rgr_zkb__entry__2}

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | O valor da chave aprovada. Se essa chave não existir, retornará nulo. |
[Tabela 15. Retorna]

{#CTIOpResp-getParameter_S__table_o1d_rgr_zkb}  

    var request = new sn_cti_core.CTIOperationResponse();
    var parm = request.getParameter('contact.phone');

## CTIOperationResponse - getParameters() {#ariaid-title10}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-setParameter_S_O "Define o par de chave-valor especificado no objeto CTIOperationResponse associado.") para definir parâmetros no objeto CTIOperationResponse atual.
{#CTIOpResp-getParameters__table_hcc_y3b_zkb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 16. Parâmetros]

{#CTIOpResp-getParameters__table_hcc_y3b_zkb} {#CTIOpResp-getParameters__table_icc_y3b_zkb__entry__2}

| 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. |
[Tabela 17. Retorna]

{#CTIOpResp-getParameters__table_icc_y3b_zkb}  

    (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) {#ariaid-title11}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-setSessionAttribute_S_O "Define o par de chave-valor do atributo de sessão especificado no objeto CTIOperationResponse associado.") e o transformador de mensagem consome os atributos usando esse método.
{#CTIOpResp-getSessionAttribute_S__table_v1k_cwr_zkb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| chave | Cadeia de caracteres | O nome do valor de chave a ser retornado. |
[Tabela 18. Parâmetros]

{#CTIOpResp-getSessionAttribute_S__table_v1k_cwr_zkb} {#CTIOpResp-getSessionAttribute_S__table_w1k_cwr_zkb__entry__2}

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | Valor da chave aprovada. Se essa chave não existir, retornará nulo. |
[Tabela 19. Retorna]

{#CTIOpResp-getSessionAttribute_S__table_w1k_cwr_zkb}  

    var response = new sn_cti_core.CTIOperationResponse();
    var phoneAttribute = response.getSessionAttribute('contact.phone');

## CTIOperationResponse - getSessionAttributes() {#ariaid-title12}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-setSessionAttribute_S_O "Define o par de chave-valor do atributo de sessão especificado no objeto CTIOperationResponse associado.") e o transformador de mensagem consome os atributos usando esse método.
{#CTIOpResp-getSessionAttributes__table_ujd_ltr_zkb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 20. Parâmetros]

{#CTIOpResp-getSessionAttributes__table_ujd_ltr_zkb} {#CTIOpResp-getSessionAttributes__table_vjd_ltr_zkb__entry__2}

| 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. |
[Tabela 21. Retorna]

{#CTIOpResp-getSessionAttributes__table_vjd_ltr_zkb}  

    (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() {#ariaid-title13}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-setStatusCode_N "Define o código de status da solicitação de operação atual no objeto CTIOperationResponse."). 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.
{#CTIOPResp-getStatusCode__table_hjx_cp4_blb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 22. Parâmetros]

{#CTIOPResp-getStatusCode__table_hjx_cp4_blb} {#CTIOPResp-getStatusCode__table_ijx_cp4_blb__entry__2}

| 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. |
[Tabela 23. Retorna]

{#CTIOPResp-getStatusCode__table_ijx_cp4_blb}  

    (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) {#ariaid-title14}

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.  
Nota:  
Se o token de autenticação não for aprovado, todas as solicitações para executar manipuladores de operação com o sinalizador auth_required definido falharão. Se você não usar autenticação, não precisará manter tokens de autenticação.  
O sistema base ServiceNow fornece manipuladores de operação de trabalho e transformadores de mensagem que permitem a conexão com o Amazon Connect. Ao criar fluxos de contato no Amazon Connect, há dois pontos de integração entre os serviços da Amazon e uma instância ServiceNow :

* Proxy do Lambda da Amazon Web Services (AWS) (invocar função do AWS Lambda)
* Bot do AWS Lex (obter entrada do cliente)
{#CTIOpResp-setAuthToken_S__ul_pqp_3hl_hlb}Você pode encontrar os manipuladores de operação e transformadores de mensagem disponíveis para esses pontos de integração nas tabelas Manipuladores de operação \[sn_cti_operation_handler\] e Transformador de mensagem do provedor \[sn_cti_provider_msg_transormer\]. {#CTIOpResp-setAuthToken_S__table_xvb_3wx_zkb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 24. Parâmetros]

{#CTIOpResp-setAuthToken_S__table_xvb_3wx_zkb} {#CTIOpResp-setAuthToken_S__table_yvb_3wx_zkb__entry__2}

| 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. |
[Tabela 25. Retorna]

{#CTIOpResp-setAuthToken_S__table_yvb_3wx_zkb}  

    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) {#ariaid-title15}

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).
{#CTIOpResp-setError_O__table_jdf_vw4_blb__entry__3}

| 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. |
[Tabela 26. Parâmetros]

{#CTIOpResp-setError_O__table_jdf_vw4_blb} {#CTIOpResp-setError_O__table_kdf_vw4_blb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 27. Retorna]

{#CTIOpResp-setError_O__table_kdf_vw4_blb}  

    var response = new sn_cti_core.CTIOperationResponse();
    response.setError(new Error("You did not supply a field"));

## CTIOperationResponse - setInteractionSysId(Id da cadeia de caracteres) {#ariaid-title16}

Define o sys_id do registro de interação associado à solicitação de operação no objeto CTIOperationResponse atual.
{#CTIOpResp-setInteractionSysId_S__table_usk_lrg_ykb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| sys_id | Cadeia de caracteres | O sys_id a ser definido para a interação atual. |
[Tabela 28. Parâmetros]

{#CTIOpResp-setInteractionSysId_S__table_usk_lrg_ykb} {#CTIOpResp-setInteractionSysId_S__table_vsk_lrg_ykb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 29. Retorna]

{#CTIOpResp-setInteractionSysId_S__table_vsk_lrg_ykb}  

    var response = new sn_cti_core.CTIOperationResponse();
    response.setInteractionSysId('98529cc55380001048e5ddeeff7b120b');

## CTIOperationResponse - setMajorVersion(Number majorVersion) {#ariaid-title17}

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.
{#CTIOpResp-setMajorVersion_N__table_jlt_pz1_zkb__entry__3}

| 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. |
[Tabela 30. Parâmetros]

{#CTIOpResp-setMajorVersion_N__table_jlt_pz1_zkb} {#CTIOpResp-setMajorVersion_N__table_klt_pz1_zkb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 31. Retorna]

{#CTIOpResp-setMajorVersion_N__table_klt_pz1_zkb}  

    var request = new sn_cti_core.CTIOperationResponse();
    request.setMajorVersion(2);

## CTIOperationResponse - setMessage (cadeia de caracteres mensagem) {#ariaid-title18}

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()](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-getMessage "Retorna a cadeia de caracteres de mensagem definida no objeto CTIOperationResponse atual.") para obter a mensagem e passá-la de volta para o provedor de integração de telefonia e computação.
{#CTIOpResp-setMessage_S__table_eyb_l44_blb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| message | Cadeia de caracteres | Texto da mensagem |
[Tabela 32. Parâmetros]

{#CTIOpResp-setMessage_S__table_eyb_l44_blb} {#CTIOpResp-setMessage_S__table_fyb_l44_blb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 33. Retorna]

{#CTIOpResp-setMessage_S__table_fyb_l44_blb}  

    (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) {#ariaid-title19}

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.
{#CTIOpResp-setMinorVersion_N__table_zqj_52b_zkb__entry__3}

| 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. |
[Tabela 34. Parâmetros]

{#CTIOpResp-setMinorVersion_N__table_zqj_52b_zkb} {#CTIOpResp-setMinorVersion_N__table_arj_52b_zkb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 35. Retorna]

{#CTIOpResp-setMinorVersion_N__table_arj_52b_zkb}  

    var response = new sn_cti_core.CTIOperationResponse();
    response.setMinorVersion(3);

## CTIOperationResponse - setParameter (chave de cadeia de caracteres, valor de objeto) {#ariaid-title20}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-getParameter_S "Retorna o valor de uma chave especificada definida anteriormente no objeto CTIOperationResponse atual.") ou [CTIOperationResponse - getSParameters()](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-getParameters "Retorna os pares de chave-valor para todos os parâmetros que foram definidos anteriormente no objeto CTIOperationResponse atual.").  
Nota:  
Você só deve armazenar objetos que possam suportar uma `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.  
Por exemplo:

    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);

Produz:

    {"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"}}

{#CTIOpResp-setParameter_S_O__table_ab4_k3r_zkb__entry__3}

| 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: * Cadeia de caracteres * Número inteiro * variável * número * booliano * data * objeto {#CTIOpResp-setParameter_S_O__ul_mcs_2sr_zkb} |
[Tabela 36. Parâmetros]

{#CTIOpResp-setParameter_S_O__table_ab4_k3r_zkb} {#CTIOpResp-setParameter_S_O__table_bb4_k3r_zkb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 37. Retorna]

{#CTIOpResp-setParameter_S_O__table_bb4_k3r_zkb}  

    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) {#ariaid-title21}

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)](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-getSessionAttribute_S "Retorna o valor de uma chave de atributo de sessão especificada definida no objeto CTIOperationResponse atual.") ou [CTIOperationResponse - getSessionAttribute()](https://servicenow-prod.fluidtopics.net/lRO8HXCQscdvnBBKkXstBw#CTIOpResp-getSessionAttributes "Retorna os pares de chave-valor para todos os atributos de sessão que foram definidos anteriormente no objeto CTIOperationResponse atual.").  
Nota:  
Você só deve armazenar objetos que possam suportar uma `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.  
Por exemplo:

    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);

Produz:

    {"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"}}

{#CTIOpResp-setSessionAttribute_S_O__table_ihm_rxr_zkb__entry__3}

| 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: * Cadeia de caracteres * Número inteiro * variável * número * booliano * data * objeto {#CTIOpResp-setSessionAttribute_S_O__ul_mcs_2sr_zkb} |
[Tabela 38. Parâmetros]

{#CTIOpResp-setSessionAttribute_S_O__table_ihm_rxr_zkb} {#CTIOpResp-setSessionAttribute_S_O__table_jhm_rxr_zkb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 39. Retorna]

{#CTIOpResp-setSessionAttribute_S_O__table_jhm_rxr_zkb}  

    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) {#ariaid-title22}

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.
{#CTIOpResp-setStatusCode_N__table_inh_4r4_blb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| statusCode | Número | Número inteiro que identifica exclusivamente o status da operação solicitada. |
[Tabela 40. Parâmetros]

{#CTIOpResp-setStatusCode_N__table_inh_4r4_blb} {#CTIOpResp-setStatusCode_N__table_jnh_4r4_blb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 41. Retorna]

{#CTIOpResp-setStatusCode_N__table_jnh_4r4_blb}  

    (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);


