studio-web
latest
false
Importante :
Este contenido se ha localizado parcialmente a partir de un sistema de traducción automática. La localización de contenidos recién publicados puede tardar entre una y dos semanas en estar disponible.
UiPath logo, featuring letters U and I in white

Guía del usuario de Studio Web

Última actualización 19 de feb. de 2026

Recuperar detalles del ticket

Este tutorial demuestra cómo utilizar los flujos de trabajo de la API y recuperar los detalles del ticket que luego se integran con los agentes y Maestro.

El flujo de trabajo de la API tiene como objetivo recuperar los detalles del incidente de ServiceNow, luego validar y obtener información adicional sobre el creador del ticket y su empresa asociada de Salesforce, si está disponible.

docs image

docs image

  1. Abre Data Manager y añade el NúmeroDeIncidente como una propiedad de Entrada , con las siguientes propiedades:

    • Tipo: cadena
    • Descripción: referencia para el número de ticket entrante
    • Obligatorio: Verdadero
  2. En Data Manager, añade incidenteObject y isValidCallerIdLink como variables, con las siguientes propiedades:

    • objetoDeIncidente : almacena los detalles del incidente enriquecidos.
      • Tipo: objeto
      • Valor predeterminado: dejar vacío
    • isValidCallerIdLink : verifica si el caller_id_link recuperado de ServiceNow es una URL válida.
      • Tipo: booleano
      • Valor predeterminado: falso
  3. Abre la ventana de configuración de depuración . En el campo obligatorio númeroDeIncidente , introduce INC0026701.

  4. Añade una actividad Conector y configúrala para utilizar la siguiente actividad de ServiceNow : Buscar incidentes por número de incidente. Esto recupera los detalles del incidente en función del número de incidente proporcionado como entrada.

    1. Selecciona tu conexión de ServiceNow.
    2. Conecta el ID de incidente a la siguiente variable: flujo de trabajo > entrada > númeroDeIncidente.
    3. Cambia el nombre de la salida del contexto de la actividad a $context.outputs.incident_1.
  5. Para comprobar si se encontró algún incidente en el paso anterior, añade una actividad Si con la siguiente condición:

    $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. En la rama Entonces , si se encuentra algún incidente, procede a validar el caller_id_link y obtener más detalles. Añade una actividad Intentar capturar .

    1. Dentro del bloque Intentar , añade una actividad de Script con el siguiente 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;
      

      Cambia el nombre de la actividad a "Validar enlace de caller_id" y el nombre de salida de contexto a $context.outputs.Validate_Caller_ID_Link.

    2. Dentro del mismo bloque Intentar , añade una actividad Si con la siguiente Condición: $context.variables.isValidCallerIdLink. Cambia el nombre de la actividad a "If caller_id_link is valid", y el nombre de salida de contexto a $context.outputs.If_Caller_ID_Valid.

    3. En la rama Entonces (enlace válido) de la actividad Si anterior, añade una actividad Conector , Solicitud HTTP de Service Now, con la siguiente configuración:

      • Conexión de ServiceNow : cuenta de desarrollador de ServiceNow
      • Método—GET
      • Solicitar URL :
        $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. En la rama Else (enlace no válido) de la actividad Si anterior, añade una actividad Script con el siguiente código:

      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;
      

      Cambia el nombre de la actividad a "Registrar caller_id_link no válido" y el nombre de salida de contexto a $context.outputs.Log_Invalid_Caller_ID.

    5. Fuera de la actividad Si , pero aún dentro del bloque Intentar , añade la actividad Script con el siguiente Código. Esta actividad combina los detalles iniciales del incidente con los detalles del creador obtenidos en un ú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
      };
      

    Cambia el nombre de la actividad a "JS: objeto de incidente". El nombre de salida de contexto sigue siendo $context.outputs.Javascript_1. 6. Asigna el objeto de incidente a una variable: añade la actividad Asignar con la siguiente configuración:

    • A variable : selecciona la variable IncidentObject definida al principio.

    • Establecer valor : hace referencia al nombre de contexto de la actividad de Script anterior:

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

      Cambia el nombre de la actividad a "Asignar objetoDeIncidente". El nombre de salida de contexto sigue siendo $context.outputs.Assign_1.

    1. En el bloque Capturar de la actividad Intentar capturar actual, añade una actividad Script con el siguiente 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;
      

      Cambia el nombre de la actividad a "Registrar detalles del error" y el nombre de la salida de contexto a $context.outputs.Log_Error_Catch.

    2. Si se produce algún error, añade una actividad Asignar para utilizar el objeto de incidente simplificado con los detalles iniciales de ServiceNow:

      • A variable : selecciona la variable IncidentObject definida al principio.
      • Establecer valor— ``` (($incidentDetails) => ({ id: $incidentDetails.sys_id, número: $incidentDetails.number, short_description: $incidentDetails.short_description, descripción: $incidentDetails.description, state: $incidentDetails.state, urgencia: $incidentDetails.urgencia, impact: $incidentDetails.impact, open_at: $incidentDetails.opened_at, cerrado_en: $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. Sal de la actividad Intentar capturar y añade una Respuesta vacía en la rama Else . Cambia el nombre de la actividad Respuesta a "No se encontraron resultados".

  8. Para comprobar si algún objeto de incidente contiene información suficiente sobre el correo electrónico del creador y el ID de la cuenta de la empresa, añade una actividad Si con la siguiente condición:

    $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. En la rama Entonces , añade una actividad Conector y configúrala para utilizar la actividad de Salesforce : Buscar utilizando SOQL. Cambia el nombre de la actividad a "Obtener contacto" y el nombre de la salida de contexto a $context.outputs.soqlQuery_1.
    2. En el campo Consulta , abre el editor de expresiones y escribe:
    "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. En la rama Entonces , añade una actividad Si con la siguiente Condición: $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. En la rama Entonces de la actividad "Si se encuentra el contacto", añade una actividad Conector y configúrala para utilizar la actividad Obtener cuenta de Salesforce :

      • Conexión de Salesforce : cuenta de desarrollador de Salesforce
      • ID de cuenta :
        $context.variables.incidentObject.company.account_id
        $context.variables.incidentObject.company.account_id
        

      Cambia el nombre de la salida de contexto a $context.outputs.curated_account_1. Esta actividad recupera los detalles de la cuenta de Salesforce utilizando el account_id del IncidentObject enriquecido.

    2. En la rama Entonces de la actividad "Si se encuentra el contacto", añade una actividad Para cada y configúrala en: $context.outputs.soqlQuery_1.content. Este bucle itera a través de los resultados de la búsqueda de contactos de Salesforce (aunque la consulta SOQL se limita a 1). Dentro del bucle, intenta obtener detalles del caso relacionados con el contacto encontrado.

    3. Dentro del cuerpo del bucle Para cada , añade una actividad Conector , Solicitud HTTP de Service Now, con la siguiente configuración:

      • Conexión de ServiceNow : cuenta de desarrollador de Salesforce
      • Método—GET
      • Solicitar URL :
        "/services/data/v64.0/sobjects/Case/" + $currentItem.Id
        "/services/data/v64.0/sobjects/Case/" + $currentItem.Id
        

      Cambia el nombre de la actividad a "Detalles del caso". El nombre de salida de contexto permanece como está.

    4. Sal del bucle Para cada y añade una actividad Respuesta vacía.

    5. En la rama Else de la actividad "Si se encuentra el contacto", añade una actividad Respuesta con la siguiente Respuesta:

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

      Cambia el nombre de la actividad a "Devolver el error No se encontró ningún contacto".

¿Te ha resultado útil esta página?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Uipath Logo
Confianza y seguridad
© 2005-2026 UiPath. Todos los derechos reservados.