ServiceNow

Contact Center AI Platform (plataforma CCAI) oferece integração com o CRM do ServiceNow.

Configurações de desenvolvedor do ServiceNow

Requisitos mínimos preferenciais da versão do ServiceNow: Tokyo patch 1

Configurar um usuário de autenticação básica

É provável que a conta de administrador do ServiceNow tenha a verificação em duas etapas ativada e associada a esse usuário. Por isso, não é possível usá-lo para conseguir acesso de administrador na plataforma CCAI. Para isso, crie uma conta de usuário no ServiceNow.

Crie um usuário básico com credenciais:

  1. Acesse Usuário > Novo.

  2. Preencha os detalhes e selecione "Acesso somente ao serviço da Web".

  3. Anote o ID do usuário e a senha.

Funções necessárias no ServiceNow

As funções padrão no ServiceNow são pré-configuradas para fornecer acesso e permissões específicas na plataforma. Os administradores podem criar e configurar funções que concedem permissões específicas, que regem o que os usuários e grupos com essa função podem fazer.

Para fazer essa integração, você precisa ter as seguintes funções no ServiceNow:

  • user_admin: essa função foi criada para administradores que precisam gerenciar usuários, grupos, locais e empresas na instância do ServiceNow.

  • sn_incident_read: esse papel oferece acesso somente leitura ao aplicativo de gerenciamento de incidentes e às funções relacionadas. Ele permite que os usuários vejam registros de incidentes.

  • sn_incident_write: essa função concede acesso de gravação ao aplicativo de gerenciamento de incidentes e às funções relacionadas, permitindo que os usuários criem e modifiquem registros de incidentes.

  • personalize_dictionary: permite personalizar entradas e rótulos do dicionário para atender a requisitos específicos da empresa.

  • function_field_admin: essa função é destinada a usuários que precisam criar, editar e visualizar campos de função especificamente no designer de relatórios. Ela não permite criar ou excluir campos de função na lista ou no formulário da plataforma.

Configurar visualizações de instâncias

As seções a seguir descrevem as mudanças de configuração necessárias para visualizações de instâncias.

(Opcional) Adicionar favoritos

Os favoritos são uma maneira rápida de encontrar os links mais usados na instância do ServiceNow. Para adicionar um favorito, selecione o ícone de estrela ao lado de um campo no painel Navegador. Se quiser filtrar o painel do navegador para ver apenas seus favoritos, selecione o ícone de estrela diretamente abaixo do campo do navegador de filtros no painel "Navegador".

Exemplos de favoritos úteis:

  • Incidentes: associações a registros para CRM personalizado.
  • Usuários: associações a contas para CRM personalizado.
  • Rest API Explorer: uma boa maneira de testar a API.

Adicionar campos personalizados manualmente

Selecione o ícone de expansão (três linhas horizontais) no canto superior esquerdo dentro da visualização do objeto que você quer mudar. Isso pode ser feito na visualização de autoatendimento ou padrão.

  1. No menu, selecione Configurar > Design do formulário para abrir o Designer de formulários.

  2. Na coluna à esquerda, selecione a guia Tipos de campo.

  3. Arraste o tipo de campo personalizado que você quer adicionar.

  4. Depois de soltar o tipo de campo na seção desejada, selecione o ícone de engrenagem para ver as Configurações.

  5. Dentro da janela, mude o rótulo e anote o nome. O nome é o que você usa nas configurações do app da plataforma CCAI.

  6. Selecione Salvar no canto superior direito da tela.

Mapear dados de sessão para o CRM

Você precisa mapear os dados de sessão adequados do CCAIP usando o Dialogflow e usar os seguintes parâmetros:

Dados do agente virtual

{
  "ujet": {
    "session_variable": {
      "capture_target": "payload",
      "payload": {
        "value_one": "$session.params.payload_value_one"
      };
      "capture_type": [ "comment", "field" ] // optional, default of ["comment"]
    }
  }
}

Metadados

https://INSTANCE.service-now.com/api/now/table/sys_dictionary?sysparm_query=name%3Dsys_user https://INSTANCE.service-now.com/api/now/table/sys_dictionary?sysparm_query=name%3Dincident

Rótulo: column_label

Chave de API: element

Os campos personalizados estão no mesmo nível dos campos padrão na resposta de sys_user ou incident.

Fazer upload de um arquivo da plataforma CCAI para o CRM

https://INSTANCE_URL.service-now.com/api/now/attachment/upload

Método: POST

Formato dos dados da solicitação: property

Local dos dados de resposta: data.result

Tipo: Multi-part form

Tipo de anexo: Attachment Url

URL do anexo: download_link

Parâmetros: table below

Exemplo de solicitação:

{
    file: FILE_DATA,
    table_name: incident,
    table_sys_id: RECORD_ID
}

Integrar adaptadores de agentes (formulários personalizados)

As etapas a seguir mostram como ativar adaptadores de agente e a função Clique para ligar na instância do ServiceNow.

Instalar e configurar o OpenFrame

  1. Acesse Todos > Aplicativos do sistema > Todos os aplicativos disponíveis > Todos.

  2. Pesquise OpenFrame.

  3. Instale o OpenFrame.

  4. Depois de instalado, acesse Todos > OpenFrame > Configurações.

  5. Crie uma configuração com um URL. Se você tiver várias configurações em uma instância do ServiceNow, talvez o usuário não tenha acesso a uma configuração recém-criada. Verifique seus grupos e a lista de pedidos de configuração do OpenFrame para determinar qual configuração seu usuário está usando.

  6. Digite sys_properties.list na pesquisa.

  7. Editar glide.ui.concourse.onmessage_enforce_same_origin_whitelist.

  8. Adicione o novo URL à lista de valores.

  9. Editar sn_openframe.cross.origin.access.

  10. Adicione autoplay à lista de valores.

Ativar a nova experiência de interface para usuários

  1. Digite sys_properties.list na barra de navegação e clique em Enter.

  2. Defina a propriedade do sistema glide.ui.polaris.experience como true.

  3. Defina a preferência do usuário glide.ui.polaris.use como false para o sistema.

  4. Defina a preferência do usuário glide.ui.polaris.use como true para um usuário. (Você pode criar uma linha de preferências do usuário.)

Atualizar propriedades do sistema

  1. Digite sys_properties.list na barra de navegação e clique em Enter.

  2. Editar glide.ui.concourse.onmessage_enforce_same_origin_whitelist.

  3. Adicione o URL à lista de valores. Vários valores precisam ser separados por vírgulas.

  4. Editar sn_openframe.cross.origin.access.

  5. Adicione a reprodução automática à lista de valores.

  6. Editar glide.ui.polaris.experience.

  7. Mude para false, porque alguns recursos não funcionam se estiverem ativados.

Adicionar o recurso "Clique para ligar" à parte de cima do formulário

  1. Acesse Interface do sistema > Ações da interface.

  2. Selecione Criar nova ação.

  3. No formulário ilustrado, selecione a tabela a que o recurso "Clique para ligar" vai pertencer.

  4. Para formulários com uma referência a um contato ou usuário, use a API g_form.getReference para acessar o número de telefone do usuário. Para tabelas personalizadas, o ID de referência e os atributos resultantes podem ser diferentes. A comunicação com a plataforma de CCAI será a mesma. Portanto, o payload e a estrutura de dados precisam permanecer idênticos ao seguinte:

    function clickToDial() {
      var user = g_form.getReference('caller_id',function(res) {
        var phone = res.phone || res.mobile_phone;
        var payload = {"name": "clicktodial", "number": phone}; 
        var data = {"payload": payload, "method": "openframe_communication" }; 
        CustomEvent.fireAll("openframe_request", data);
      });
    }
    
  5. Para formulários com um número dentro do formulário para chamar, use a API g_form.getValue para recuperar os valores relevantes. Este é um exemplo da ação da UI para a tabela "Usuários". Para tabelas personalizadas, os nomes dos campos de formulário podem ser diferentes. A comunicação com a plataforma de CCAI será a mesma. Portanto, a carga útil e a estrutura de dados precisam permanecer idênticas ao seguinte:

    function clickToDial() {
      var phone = g_form.getValue('phone') || g_form.getValue('mobile_phone');
      var payload = {"name": "clicktodial", "number": phone}; 
      var context = {"payload": payload, "method" : "openframe_communication" }; 
      CustomEvent.fireAll("openframe_request", context);
    }
    

Adicionar o recurso "Clique para ligar" ao lado das referências

  1. O botão de chamada ao lado das referências a contatos precisa ser editado no formulário. Clique com o botão direito do mouse no campo e navegue até Configurar dicionário. Para atributos, adicione o valor show_phone ou show_phone_customer_service ao valor ref_contributions.

  2. Em macros de interface, edite show_phone e show_phone_customer_service.

  3. Substitua:

Anterior:

var task =    {"entity": p.attr('data-task-table'), "query" :"sys_id="+p.attr('data-task-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-task-value'),"label":p.attr('data-task-label')};
                                        var company = {"entity": p.attr('data-company-table'),"query":"sys_id="+p.attr('data-company-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-company-value'),"label":p.attr('data-company-label')};
                                        var caller = {"entity": p.attr('data-caller-table'),"query": "sys_id="+p.attr('data-caller-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-caller-value'),"label":p.attr('data-caller-label')};
                                        
                                        var callContext = [];
                                        callContext.push(task);
                                        callContext.push(company);
                                        callContext.push(caller);
                
                                        var metaData = {"phoneNumber":p.attr('data-caller-phone'),"taskId":p.attr('data-task-id')};
                                        
                                        var data =    {"metaData":metaData , "data": callContext};
                                        var payload = {"type": "OUTGOING_CALL", "data" : data};
                                        var createInteractionData ={};
                                        createInteractionData.interactionSysId = -1;
                                        createInteractionData.direction = 'outbound';
                                        createInteractionData.context_document = p.attr('data-task-id');
                                        createInteractionData.context_table = p.attr('data-task-table');
                                        createInteractionData.account = p.attr('data-company-id');
                                        if(p.attr('data-caller-table') === 'customer_contact')
                                                createInteractionData.contact = p.attr('data-caller-id');
                                        createInteractionData.opened_for = p.attr('data-caller-id');
        
                                        var ga = new GlideAjax('sn_openframe.OpenFrameAjaxUtility');
                                        ga.addParam('sysparm_name', 'createInteractionWithPropertyCheck');
                                        ga.addParam('context', JSON.stringify(createInteractionData));
                                        ga.getXML(function(serverResponse) {
                                                var result = serverResponse.responseXML.getElementsByTagName("result");
                                                var output = JSON.parse(result[0].getAttribute("data"));
                                                if(output.status == "success"){
                                                        var interaction = {"entity": "interaction", "query" :"sys_id="+output.fields.interactionSysId, "value":output.fields.number, "label":"Interaction", "display":false};
                                                        payload.data.data.push(interaction);
                                                }
                                                var context = {"payload": payload, "method" : "openframe_communication" };
                                                jslog("context with interaction : "+ JSON.stringify(context));
                                                CustomEvent.fireAll("openframe_request", context);
                                        });

Novo:

var phone = p.attr('data-caller-phone')
                   var payload = {"name": "clicktodial", "number": phone}; 
                   var data = {"payload": payload, "method": "openframe_communication" }; 
                   CustomEvent.fireAll("openframe_request", data);

Configurações de CRM

As etapas a seguir ilustram como conectar a API ao ServiceNow usando o portal da plataforma CCAI.

  1. No portal da plataforma CCAI, navegue até Configurações > Configurações do desenvolvedor > CRM.

  2. Na seção "Plataforma do agente", selecione ServiceNow.

  3. Insira as informações do seu domínio do ServiceNow no campo Domínio do ServiceNow. Pode ser uma instância de desenvolvedor ou de fornecedor, conforme necessário, mas é uma correlação direta com a instância e é a primeira parte do URL no endereço da Web do portal do ServiceNow: https://{your instance}.servicenow.com.

  4. No campo Seleção da nuvem do ServiceNow, selecione Incident para um tipo de tíquete básico. Se você selecionar Custom, outras opções vão aparecer. Incidentes são extensões da tabela de tarefas. Objetos personalizados precisam ser extensões de incidentes.

  5. Nos campos Credenciais de autenticação, insira seu nome de usuário e senha.

  6. Se você selecionou Incident para o tipo de campo de seleção do Cloud, os seguintes campos vão aparecer:

    • O objeto de pesquisa de conta inclui três campos suspensos: Object Type, Phone Number lookup fields e Phone number primary field.
  7. Se você selecionou Custom para o tipo de campo de seleção do Cloud, os seguintes campos vão aparecer:

    • Objeto de registro de pesquisa:
      • Tipo de objeto de registro de base: selecione um tipo de tabela task ou incident.
      • Tipo de objeto de registro: esse campo será preenchido com dados se uma tabela de incidentes tiver sido estendida, e você poderá selecioná-lo se necessário.
    • O objeto de pesquisa de conta inclui três campos suspensos: Object Type, Phone Number lookup fields e Phone number primary field.
  8. Campos de ID do usuário personalizados: marque esta caixa se quiser ativar campos de pesquisa de usuário personalizados para sessões do SDK para dispositivos móveis ou da Web.

  9. Formato do número de telefone: permite selecionar o formato que você quer usar para mostrar números de telefone.

  10. Arquivo de metadados da sessão: marque esta caixa para anexar metadados da sessão aos registros do CRM.

  11. Clique em Salvar para armazenar suas seleções. Se você marcou a caixa Campos de ID do usuário personalizados, poderá criar campos personalizados para registros. Isso vai adicionar guias de campos personalizados à parte de baixo de cada incidente do ServiceNow, abaixo das seções de código e observações de resolução da página.

Campos personalizados para registros

São campos personalizados que já foram criados para a instância do ServiceNow no Designer de formulários. As instruções sobre como criar outros campos personalizados estão na documentação do ServiceNow em Configuração do CRM do ServiceNow, seção Adicionar campos personalizados manualmente.

Campo Tipo Definição
u_ujet_custom_field_after_call_work String Duração do trabalho após a ligação
u_ujet_custom_field_call_duration String Duração da chamada
u_ujet_custom_field_comm_id Número inteiro ID de chamada ou chat, dependendo do tipo de contato
u_ujet_custom_field_rating Número inteiro Pontuação de CSAT
u_ujet_custom_field_email_via_web String E-mail enviado da Web
u_ujet_custom_field_feedback String Feedback
u_ujet_custom_field_from_phone_number String Número de telefone do autor da chamada
u_ujet_custom_field_hold_duration String Tempo total de espera
u_ujet_custom_field_menu_path String Seleção de menu
u_ujet_custom_field_queue_name String Nome da fila
u_ujet_custom_field_session_type String Tipo de sessão
u_ujet_custom_field_verification Verdadeiro/falso Confirmar que a verificação foi concluída
u_ujet_custom_field_wait_time String Tempo de espera total

Configurar o OAuth

Para configurar o OAuth, crie um aplicativo OAuth no ServiceNow. Em seguida, insira as credenciais (ID e chave secreta do cliente OAuth) em Configurações do desenvolvedor > CRM > Método de autenticação.

Criar um aplicativo OAuth no ServiceNow

  1. Na sua conta do ServiceNow, acesse Todos > OAuth do sistema > Registro de aplicativos.

  2. Crie um aplicativo OAuth e selecione Criar um endpoint de API OAuth para clientes externos.

  3. Configure os seguintes campos:

    • Nome: insira um nome exclusivo.

    • ID do cliente: o ID do cliente é gerado automaticamente pelo servidor OAuth do ServiceNow.

    • Chave secreta do cliente: a chave secreta do cliente para o aplicativo OAuth. Deixe em branco para gerar automaticamente.

    • Ciclo de vida do token de atualização: o tempo, em segundos, em que o token de atualização será válido.

    • Ciclo de vida do token de acesso: o tempo, em segundos, em que o token de acesso será válido.

    • URL de redirecionamento: insira o URL do seu ambiente mais o subdiretório. Exemplo: https://servicenow.yourcompany.co/v1/servicenow/oauth_callback

    • Aplicar restrição de token: restringe o uso do token de acesso às APIs definidas nas políticas de acesso à API REST encontradas na documentação do ServiceNow. Se você desmarcar essa opção, o token de acesso poderá ser usado em outras APIs REST.

  4. Clique em Enviar.

  5. Depois de criar o aplicativo, volte ao registro e recupere o ID do cliente e a chave secreta do cliente recém-criada.

Atualizar configurações nas opções do desenvolvedor

  1. Acesse Configurações do desenvolvedor > CRM.

  2. Verifique se as configurações foram inseridas e definidas conforme as etapas anteriores.

  3. Em "Método de autenticação", clique em OAuth.

  4. Insira o ID e a chave secreta do cliente OAuth. Consulte a etapa 5 acima.

  5. Clique em Salvar.

  6. Clique em Vincular credenciais.

Mapeamento de campos personalizados para o agente virtual

Se você estiver usando o agente virtual, configure esse campo na tela Mapeamentos de campos personalizados. Isso permite que as variáveis do agente virtual sejam transferidas do payload da sessão do agente virtual para o ServiceNow. Os nomes de variáveis podem ser qualquer string. Os rótulos de campo listados aqui são um exemplo.

Na tela Mapeamentos de campos personalizados, configure a conexão entre as variáveis criadas pelas definições de payload usadas na configuração inicial do agente virtual e a variável relevante no ServiceNow.

Título do mapeamento de campo Rótulo do campo de CRM Rótulo do campo de dados personalizado
Feedback do agente virtual ccaip_custom_field_incident_feedback va_feedback

Definir outras configurações

As outras configurações que permitem integrar corretamente a plataforma CCAI à sua instância do ServiceNow estão no menu suspenso Configurações. Consulte os links na lista a seguir para mais informações sobre como configurar cada seção.

Testar saídas

Agora é possível verificar a funcionalidade dos fluxos de chamada e chat clicando nos botões relevantes na parte de cima da tela do portal da CCAI Platform. É importante garantir que o bloqueador de pop-ups esteja desativado ao executar esse teste.

Um incidente será criado no ServiceNow, com o contato da chamada ou do chat listado na seção Atividades do incidente. Isso aparece como uma Observação de trabalho, e não como um comentário de incidente, para que essa atividade de back-end não fique visível para os clientes.

A descrição do caso será preenchida automaticamente com "Chamada usando a plataforma CCAI" ou "Chat usando a plataforma CCAI" e talvez precise ser atualizada pelos agentes.

Quando estiver satisfeito com as saídas da sua ligação ou conversa, insira um código e uma observação de resolução (se os campos de código e observações de resolução do ServiceNow estiverem configurados) e feche o caso.

Para verificar se o caso foi encerrado, talvez seja necessário clicar no botão de navegação back do navegador. É esperado que, na instância do ServiceNow, depois de resolver o caso, ele seja fechado automaticamente e você seja direcionado para uma página de registro do cliente.