UiPath Documentation
studio-web
latest
false

Guia do usuário do Studio Web

Última atualização 23 de abr de 2026

Recuperação de detalhes do tíquete

Este tutorial demonstra como usar fluxos de trabalho de API e recuperar detalhes de tíquetes que são posteriormente integrados a Agentes e ao Maestro.

O fluxo de trabalho da API tem como objetivo recuperar detalhes de incidente do ServiceNow, depois validar e buscar informações adicionais sobre o criador do tíquete e sua empresa associada do Salesforce, se disponível.

Imagem dos documentos

Imagem dos documentos

  1. Abra o Data Manager e adicione o NúmeroIncidente como uma propriedade de Entrada , com as seguintes propriedades:

    • Tipo: string
    • Descrição: referência para o número do tíquete de entrada
    • Obrigatório: True
  2. No Data Manager, adicione IncidentObject e isValidCallerIdLink como variáveis, com as seguintes propriedades:

    • incidenteObject— armazena os detalhes enriquecidos do incidente.
      • Tipo: objeto
      • Valor padrão: deixe em branco
    • isValidCallerIdLink— verifica se o caller_id_link recuperado do ServiceNow é um URL válido.
      • Tipo: Booleano
      • Valor padrão: false
  3. Abra a janela Configuração de depuração . No campo IncidentNumber obrigatório, digite INC0026701.

  4. Adicione uma atividade Connector e configure-a para usar a seguinte atividade do ServiceNow : Pesquisar incidentes pelo Número de incidentes. Isso recupera os detalhes do incidente com base no número do incidente fornecido como entrada.

    1. Selecione sua conexão do ServiceNow.
    2. Conecte a ID de incidente à seguinte variável: workflow > entrada > IncidentNumber.
    3. Renomeie a saída do contexto da atividade para $context.outputs.incident_1.
  5. Para verificar se algum incidente foi encontrado na etapa anterior, adicione uma atividade If com a seguinte condição:

    $context.outputs.incident_1.content && $context.outputs.incident_1.content.length > 0
    $context.outputs.incident_1.content && $context.outputs.incident_1.content.length > 0
    
  6. Na ramificação Then , se qualquer incidente for encontrado, prossiga para validar o caller_id_link e busque mais detalhes. Adicione uma atividade Teste de Captura .

    1. Dentro do bloco Try , adicione uma atividade Script com o seguinte código:

      const callerIdLink = $context.outputs.incident_1.content[0].caller_id_link;
      const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i;
      $context.variables.isValidCallerIdLink = (callerIdLink && urlRegex.test(callerIdLink));
      return $context.variables.isValidCallerIdLink;
      const callerIdLink = $context.outputs.incident_1.content[0].caller_id_link;
      const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i;
      $context.variables.isValidCallerIdLink = (callerIdLink && urlRegex.test(callerIdLink));
      return $context.variables.isValidCallerIdLink;
      

      Renomeie a atividade para "Validate caller_id link" e o nome da saída de contexto para $context.outputs.Validate_Caller_ID_Link.

    2. Dentro do mesmo bloco Try , adicione uma atividade If com a seguinte Condição: $context.variables.isValidCallerIdLink. Renomeie a atividade para "If caller_id_link for válido", e o nome de saída de contexto para $context.outputs.If_Caller_ID_Valid.

    3. Na ramificação Then (link válido) da atividade If anterior, adicione uma atividade Connector , Service Now HTTP Request, com a seguinte configuração:

      • Conexão do ServiceNow— Conta de desenvolvedor do ServiceNow
      • Método—GET
      • URL da solicitação
        $context.outputs.incident_1.content[0].caller_id_link
        ```Rename the activity to "Get Ticket Creator". The context output name remains as `$context.outputs.ServiceNow_HTTP_Request_1`.
        $context.outputs.incident_1.content[0].caller_id_link
        ```Rename the activity to "Get Ticket Creator". The context output name remains as `$context.outputs.ServiceNow_HTTP_Request_1`.
        
    4. Na ramificação Else (link inválido) da atividade If anterior, adicione uma atividade Script com o seguinte Code:

      console.error("Invalid caller_id_link, skipping 'Get Ticket Creator' activity.");
      return null;
      console.error("Invalid caller_id_link, skipping 'Get Ticket Creator' activity.");
      return null;
      

      Renomeie a atividade para "Log invalid caller_id_link" e o nome de saída do contexto para $context.outputs.Log_Invalid_Caller_ID.

    5. Fora da atividade If , mas ainda dentro do bloco Try , adicione a atividade Script com o seguinte Código. Essa atividade combina os detalhes iniciais do incidente com os detalhes do criador buscados em um único objeto de incidente.

      const incident = $context.outputs.incident_1.content[0];
      let creatorDetails = null;
      const creatorOutput = $context.outputs.ServiceNow_HTTP_Request_1.content;
      if (creatorOutput && Array.isArray(creatorOutput) && creatorOutput.length > 0) {
        creatorDetails = creatorOutput[0];
      } else if (creatorOutput && typeof creatorOutput === 'object' && creatorOutput !== null) {
        creatorDetails = creatorOutput;
      }
      
      let companyDetails = null;
      const companyOutput = $context.outputs.ServiceNow_HTTP_Request_1.content;
      if (companyOutput && typeof companyOutput === 'object' && companyOutput !== null) {
        companyDetails = companyOutput;
      } else if (companyOutput && Array.isArray(companyOutput) && companyOutput.length > 0) {
        companyDetails = companyOutput[0];
      }
      
      return {
        ...incident,
        creator: creatorDetails,
        company: companyDetails
      };
      const incident = $context.outputs.incident_1.content[0];
      let creatorDetails = null;
      const creatorOutput = $context.outputs.ServiceNow_HTTP_Request_1.content;
      if (creatorOutput && Array.isArray(creatorOutput) && creatorOutput.length > 0) {
        creatorDetails = creatorOutput[0];
      } else if (creatorOutput && typeof creatorOutput === 'object' && creatorOutput !== null) {
        creatorDetails = creatorOutput;
      }
      
      let companyDetails = null;
      const companyOutput = $context.outputs.ServiceNow_HTTP_Request_1.content;
      if (companyOutput && typeof companyOutput === 'object' && companyOutput !== null) {
        companyDetails = companyOutput;
      } else if (companyOutput && Array.isArray(companyOutput) && companyOutput.length > 0) {
        companyDetails = companyOutput[0];
      }
      
      return {
        ...incident,
        creator: creatorDetails,
        company: companyDetails
      };
      

    Renomeie a atividade para "JS - Objeto de incidente". O nome da saída de contexto permanece como $context.outputs.Javascript_1. 6. Atribua o objeto incidente a uma variável: adicione a atividade Assign com a seguinte configuração:

    • Para a variável— Selecione a variável incidenteObject definida no início.

    • Definir valor— Faz referência ao nome de contexto da atividade Script anterior:

      $context.outputs.Javascript_1
      $context.outputs.Javascript_1
      

      Renomeie a atividade para "Assign incidenteObject". O nome da saída de contexto permanece como $context.outputs.Assign_1.

    1. No bloco Catch da atividade Try Catch atual, adicione uma atividade Script com o seguinte código:

      let errorMessage = `Error in Try_Catch_1: ${$error.title || 'Unknown Error'}`;
      if ($error.detail) {
        errorMessage += `\nDetails: ${$error.detail}`;
      }
      if ($error.data && $error.data.status) {
        const statusCode = $error.data.status;
        if (statusCode === 0 || statusCode === -1) {
          errorMessage += "\nNetwork error: Unable to connect to ServiceNow.";
        } else if (statusCode >= 500 && statusCode < 600) {
          errorMessage += "\nServiceNow server error.";
        }
      }
      console.error(errorMessage);
      console.error("Stack Trace:", $error);
      return null;
      let errorMessage = `Error in Try_Catch_1: ${$error.title || 'Unknown Error'}`;
      if ($error.detail) {
        errorMessage += `\nDetails: ${$error.detail}`;
      }
      if ($error.data && $error.data.status) {
        const statusCode = $error.data.status;
        if (statusCode === 0 || statusCode === -1) {
          errorMessage += "\nNetwork error: Unable to connect to ServiceNow.";
        } else if (statusCode >= 500 && statusCode < 600) {
          errorMessage += "\nServiceNow server error.";
        }
      }
      console.error(errorMessage);
      console.error("Stack Trace:", $error);
      return null;
      

      Renomeie a atividade para "Detalhes do erro de log" e o nome da saída de contexto para $context.outputs.Log_Error_Catch.

    2. Se ocorrer algum erro, adicione uma atividade Assign para usar o objeto de incidente simplificado com os detalhes iniciais do ServiceNow:

      • Para a variável— Selecione a variável incidenteObject definida no início.
      • Defina o valor— ``` (($incidentDetails) => ({ id: $incidentDetails.sys_id, number: $incidentDetails.number, short_description: $incidentDetails.short_description, descrição: $incidentDetails.description, state: $incidentDetails.state, urgência: $incidentDetails.urncy, impacto: $incidentDetails.impacto, installed_at: $incidentDetails.opened_at, attended_at: $incidentDetails.closed_at }))($context.outputs.curated_search_incident_1.content[0])
       The activity name and the context output name remain as they are.
      
       The activity name and the context output name remain as they are.
      
      
  7. Saia da atividade Try Catch e adicione uma Response vazia na ramificação Else . Renomeie a atividade Response para "Nenhum resultado encontrado".

  8. Para verificar se qualquer objeto de incidente contém informações suficientes sobre o email do criador e o ID da conta da empresa, adicione uma atividade If com a seguinte condição:

    $context.variables.incidentObject && $context.variables.incidentObject.creator && $context.variables.incidentObject.creator.email && $context.variables.incidentObject.company && $context.variables.incidentObject.company.account_id
    $context.variables.incidentObject && $context.variables.incidentObject.creator && $context.variables.incidentObject.creator.email && $context.variables.incidentObject.company && $context.variables.incidentObject.company.account_id
    
    1. Na ramificação Then , adicione uma atividade Connector e configure-a para usar a atividade Salesforce : Pesquisar usando SOQL. Renomeie a atividade para "Get Contact" e o nome de saída de contexto para $context.outputs.soqlQuery_1.
    2. No campo Consulta , abra o Editor de expressão e escreva:
    "SELECT Id, Name, Email, AccountId FROM Contact WHERE Email = '" + $context.variables.incidentObject.creator.email + "' LIMIT 1"
    "SELECT Id, Name, Email, AccountId FROM Contact WHERE Email = '" + $context.variables.incidentObject.creator.email + "' LIMIT 1"
    
    1. Na ramificação Then , adicione uma atividade If com a seguinte Condição: $context.outputs.soqlQuery_1.content && $context.outputs.soqlQuery_1.content.length > 0
     Rename the activity to "If Contact Found" and the context output name to `$context.outputs.If_Contact_Found`. This conditional activity checks if a contact was found in Salesforce.
     Rename the activity to "If Contact Found" and the context output name to `$context.outputs.If_Contact_Found`. This conditional activity checks if a contact was found in Salesforce.
    
    1. Na ramificação Then da atividade "If ContactFound", adicione uma atividade Connector e configure-a para usar a atividade Salesforce Get Account :

      • Conexão do Salesforce— Conta de desenvolvedor do Salesforce
      • ID da conta
        $context.variables.incidentObject.company.account_id
        $context.variables.incidentObject.company.account_id
        

      Renomeie a saída de contexto para $context.outputs.curated_account_1. Essa atividade recupera detalhes da conta do Salesforce usando o account_id do incidenteObject enriquecido.

    2. Na ramificação Then da atividade "If ContactFound", adicione uma atividade For Each e configure-a para procurar em: $context.outputs.soqlQuery_1.content. Esse loop itera pelos resultados da pesquisa de contatos do Salesforce ( embora a consulta de SOQL se limite a 1). Dentro do loop, ele tenta buscar detalhes de caso relacionados ao contato encontrado.

    3. Dentro do corpo do loop For Each , adicione uma atividade Connector , Service Now HTTP Request, com a seguinte configuração:

      • Conexão do ServiceNow— Conta de desenvolvedor do Salesforce
      • Método—GET
      • URL da solicitação
        "/services/data/v64.0/sobjects/Case/" + $currentItem.Id
        "/services/data/v64.0/sobjects/Case/" + $currentItem.Id
        

      Renomeie a atividade para "Detalhes do caso". O nome da saída de contexto permanece como está.

    4. Saia do loop For Each e adicione uma atividade Response vazia.

    5. Na ramificação Else da atividade "If ContactFound", adicione uma atividade Response com a seguinte Response:

      • Resposta
        No Salesforce Contact found for the incident creator email."
        No Salesforce Contact found for the incident creator email."
        

      Renomeie a atividade para "Retornar erro de contato encontrado".

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades