- Introdução
- Para administradores
- Projetos de fluxo de trabalho de RPA
- Como criar um fluxo de trabalho de RPA a partir de uma ideia
- Criação de um projeto
- Como iniciar um fluxo de trabalho de RPA
- Gerenciamento de arquivos e pastas do projeto
- Conectar fluxos de trabalho de RPA às suas contas
- Configuração de atividades
- Gerenciamento de atividades em um projeto
- Como transmitir valores entre atividades
- Como iterar por itens
- Como gerenciar os dados em um projeto
- Configuração de um projeto para usar seus dados
- Como usar recursos de arquivos e pastas
- Local setup for RPA workflow and app projects
- Projeto do aplicativo
- Apps no Studio Web
- Definir um contexto externo usando parâmetros de consulta
- Definir um contexto externo usando eventos externos
- Use matrizes para preencher os controles Lista suspensa, Lista suspensa multiseleção e Botão de rádio
- Usar controles tabulares com entidades do Data Service em projetos de aplicativos
- Incorporar agentes de conversa
- Atividades do aplicativo
- Processos com agentes
- Agents
- Soluções
- Fluxos de trabalho da API
- Testes

Guia do usuário do Studio Web
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.


-
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
-
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
- incidenteObject— armazena os detalhes enriquecidos do incidente.
-
Abra a janela Configuração de depuração . No campo IncidentNumber obrigatório, digite INC0026701.
-
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.
- Selecione sua conexão do ServiceNow.
- Conecte a ID de incidente à seguinte variável: workflow > entrada > IncidentNumber.
- Renomeie a saída do contexto da atividade para
$context.outputs.incident_1.
-
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 -
Na ramificação Then , se qualquer incidente for encontrado, prossiga para validar o
caller_id_linke busque mais detalhes. Adicione uma atividade Teste de Captura .-
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. -
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. -
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`.
-
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. -
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_1Renomeie a atividade para "Assign incidenteObject". O nome da saída de contexto permanece como
$context.outputs.Assign_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. -
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.
-
-
Saia da atividade Try Catch e adicione uma Response vazia na ramificação Else . Renomeie a atividade Response para "Nenhum resultado encontrado".
-
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- 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. - 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"- 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.-
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. -
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. -
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á.
-
Saia do loop For Each e adicione uma atividade Response vazia.
-
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".
- Resposta—
- 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