studio-web
latest
false
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo. A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.
UiPath logo, featuring letters U and I in white

Guia do usuário do Studio Web

Última atualização 25 de nov de 2025

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.
docs image
docs image
  1. Crie um fluxo de trabalho da API.
  2. 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
  3. 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
  4. Abra a janela Configuração de depuração . No campo IncidentNumber obrigatório, digite INC0026701.
  5. 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.
  6. 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
  7. Na ramificação Then , se qualquer incidente for encontrado, prossiga para validar o caller_id_link e buscar 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$context.outputs.incident_1.content[0].caller_id_link
      Renomeie a atividade para "Get Ticket Designer". O nome da saída de contexto permanece como $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. Atribuir 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.
    7. 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.
    8. 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.
      • Definir valor

        (($incidentDetails) => ({ id: $incidentDetails.sys_id, number: $incidentDetails.number, short_description: $incidentDetails.short_description, description: $incidentDetails.description, state: $incidentDetails.state, urgency: $incidentDetails.urgency, impact: $incidentDetails.impact, opened_at: $incidentDetails.opened_at, closed_at: $incidentDetails.closed_at }))($context.outputs.curated_search_incident_1.content[0])(($incidentDetails) => ({ id: $incidentDetails.sys_id, number: $incidentDetails.number, short_description: $incidentDetails.short_description, description: $incidentDetails.description, state: $incidentDetails.state, urgency: $incidentDetails.urgency, impact: $incidentDetails.impact, opened_at: $incidentDetails.opened_at, closed_at: $incidentDetails.closed_at }))($context.outputs.curated_search_incident_1.content[0]) 
      O nome da atividade e o nome da saída de contexto permanecem como estão.
  8. Saia da atividade Try Catch e adicione uma Response vazia na ramificação Else . Renomeie a atividade Response para "Nenhum resultado encontrado".
  9. 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"
    3. 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$context.outputs.soqlQuery_1.content && $context.outputs.soqlQuery_1.content.length > 0
      Renomeie a atividade para "If ContactFound" e o nome de saída de contexto para $context.outputs.If_Contact_Found. Essa atividade condicional verifica se um contato foi encontrado no Salesforce.
    4. 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.
    5. 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.
    6. 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á.
    7. Saia do loop For Each e adicione uma atividade Response vazia.
    8. 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?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo
Confiança e segurança
© 2005-2025 UiPath. Todos os direitos reservados.