- Démarrage
- Pour les administrateurs
- Projets de workflow RPA
- Créer un workflow RPA à partir d'une idée
- Créer un projet
- Comment démarrer un workflow RPA
- Gestion des fichiers et dossiers du projet
- Connecter des workflows RPA à vos comptes
- Configurer les activités
- Gérer les activités d'un projet
- Transmission de valeurs entre les activités
- Naviguer dans les éléments
- Gérer les données d'un projet
- Configurer un projet pour utiliser vos données
- Utiliser des ressources de fichiers et de dossiers
- Projets d'application
- Applications dans Studio Web
- Concevoir des projets d'application
- Débogage de projets d'application
- Publier, déployer et mettre à niveau des projets d’application
- Importer et exporter des projets d'application
- Travailler avec des entités dans un projet d'application
- Créer des applications accessibles
- Ajout de descripteurs accessibles
- Le libellé Accessible
- Utilisation de la commande Onglet pour l'accessibilité
- Concevoir des listes et des en-têtes accessibles
- Conception d'application réactive
- Taux de contraste des couleurs
- Prédéfinir les styles et les mappages au niveau de l'air pour la commande En-tête
- Limites connues
- Définir un contexte externe à l'aide de paramètres de requête
- Définir un contexte externe à l'aide d'événements externes
- Utiliser des tableaux pour remplir les commandes Liste déroulante, Liste déroulante à sélection multiple et Bouton radio
- Utiliser des contrôles tabulaires avec des entités Data Service dans les projets d'application
- Intégrer des agents conversationnels
- Activités d'application
- Processus d’agent
- Agents
- Solutions
- Workflows d’API
- Tests

Guide de l'utilisateur Studio Web
Récupérer les détails d'un ticket
Ce didacticiel montre comment utiliser les workflows d'API et récupérer les détails des tickets qui sont ensuite intégrés à Agents et Maestro.
Le workflow d'API vise à récupérer les détails de l'incident à partir de ServiceNow, puis à valider et à récupérer des informations supplémentaires sur le créateur du ticket et leur entreprise associée à partir de Salesforce, si disponibles.


-
Ouvrez le gestionnaire de données et ajoutez l' incidentNumber en tant que propriété Input , avec les propriétés suivantes :
- Type : chaîne de caractères
- Description : référence du numéro de ticket entrant
- Obligatoire : True
-
Dans le Gestionnaire de données, ajoutez incidentObject et isValidCallerIdLink en tant que variables, avec les propriétés suivantes :
- incidentObject : stocke les détails de l’incident enrichi.
- Type : d'objet
- Valeur par défaut : laisser vide
- isValidCallerIdLink— vérifie si l' appelant_id_link récupéré à partir de ServiceNow est une URL valide.
- Type : Booléen
- Valeur par défaut : faux
- incidentObject : stocke les détails de l’incident enrichi.
-
Ouvrez la fenêtre de configuration Débogage . Dans le champ obligatoire IncidentNumber , entrez UNC0026701.
-
Ajoutez une activité Connector et configurez-la pour utiliser l'activité ServiceNow suivante : Rechercher des incidents par numéro d'incident. Cela récupère les détails de l'incident en fonction du numéro d'incident fourni en entrée.
- Sélectionnez votre connexion ServiceNow.
- Connectez l' ID d'incident à la variable suivante : workflow > input > incidentNumber.
- Renommez la sortie du contexte d'activité en
$context.outputs.incident_1.
-
Pour vérifier si un incident a été trouvé dans l’étape précédente, ajoutez une activité If avec la condition suivante :
$context.outputs.incident_1.content && $context.outputs.incident_1.content.length > 0$context.outputs.incident_1.content && $context.outputs.incident_1.content.length > 0 -
Dans la branche Puis , si un incident est trouvé, procédez à la validation de
caller_id_linket récupérez plus de détails. Ajoutez une activité Essayer de détecter .-
Dans le bloc Try , ajoutez une activité Script avec le code suivant :
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;Renommez l'activité « Valider le lien Caller_id » et le nom de la sortie contextuelle en
$context.outputs.Validate_Caller_ID_Link. -
Dans le même bloc Try , ajoutez une activité If avec la Condition suivante :
$context.variables.isValidCallerIdLink. Renommez l'activité « Si l'appelant_id_lien est valide » et le nom de la sortie contextuelle par$context.outputs.If_Caller_ID_Valid. -
Dans la branche Puis (lien valide) de l'activité Si précédente, ajoutez une activité Connecteur , Demande HTTP Service Now, avec la configuration suivante :
- Connexion ServiceNow—Compte Développeur ServiceNow
- Méthode—GET
- URL de la demande—
$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`.
-
Dans la branche Sinon (lien invalide) de l'activité Si précédente, ajoutez une activité Script avec le code suivant :
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;Renommez l'activité « Consigner un lien_ID_identifiant non valide » et le nom de la sortie contextuelle est
$context.outputs.Log_Invalid_Caller_ID. -
En dehors de l'activité If , mais toujours à l'intérieur du bloc Try , ajoutez une activité Script avec le Code suivant. Cette activité combine les détails de l’incident initial avec les détails du créateur récupérés en un seul objet d’incident.
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 };
Renommez l’activité « JS - Incident Object ». Le nom de la sortie du contexte restera sous la forme
$context.outputs.Javascript_1. 6. Affectez l'objet d'incident à une variable : ajoutez l'activité Affecter avec la configuration suivante :-
To variable : sélectionnez la variable incidentObject définie au début.
-
Set value : référencer le nom de contexte de l’activité de script précédente :
$context.outputs.Javascript_1$context.outputs.Javascript_1Renommez l’activité en « Assign incidentObject ». Le nom de la sortie du contexte restera sous la forme
$context.outputs.Assign_1.
-
Dans le bloc d'interception de l'activité Try Catch actuelle, ajoutez une activité Script avec le code suivant :
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;Renommez l'activité « Détails de l'erreur du journal » et le nom de la sortie contextuelle par
$context.outputs.Log_Error_Catch. -
Si une erreur se produit, ajoutez une activité Assign pour utiliser l'objet d'incident simplifié avec les détails initiaux de ServiceNow :
- To variable : sélectionnez la variable incidentObject définie au début.
- Définir la valeur— ``` ($incidentDetails) => ({ id : $incidentDetails.sys_id, number : $incidentDetails.number, short_description : $incidentDetails. short_description, description : $incidentDetails.description, état : $incidentDetails.state, urgence : $incidentDetails.urgence, impact : $incidentDetails.impact, ouvert_à : $incidentDetails.opened_at, fermé_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.
-
-
Quittez l'activité Try Catch et ajoutez une Réponse vide dans la branche Else . Renommez l'activité Réponse en « Aucun résultat trouvé ».
-
Pour vérifier si un objet d'incident contient des informations suffisantes sur l'e-mail du créateur et l'ID du compte de l'entreprise, ajoutez une activité If avec la condition suivante :
$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- Dans la branche Puis , ajoutez une activité Connecteur et configurez-la pour utiliser l'activité Salesforce : Rechercher à l'aide de SOQL. Renommez l'activité « Obtenir un contact » et le nom de la sortie contextuelle par
$context.outputs.soqlQuery_1. - Dans le champ Requête , ouvrez l' éditeur d'expressions et écrivez :
"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"- Dans la branche Then , ajoutez une activité If avec la condition suivante :
$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.-
Dans la branche Puis de l'activité "Si le contact trouvé", ajoutez une activité Connecteur et configurez-la pour utiliser l'activité Obtenir le compte Salesforce :
- Connexion Salesforce— Compte Salesforce Developer
- ID de compte—
$context.variables.incidentObject.company.account_id$context.variables.incidentObject.company.account_id
Renommez la sortie contextuelle en
$context.outputs.curated_account_1. Cette activité récupère les détails du compte Salesforce à l’aide de l’ identifiant_compte de l’ objet incident enrichi . -
Dans la branche Puis de l'activité « Si le contact est trouvé », ajoutez une activité Pour chaque et configurez-la
$context.outputs.soqlQuery_1.contentCette boucle parcourt les résultats de la recherche de contact Salesforce (alors que la requête SOQL se limite à 1). À l’intérieur de la boucle, il tente de récupérer les détails de l'incident liés au contact trouvé. -
Dans le corps de la boucle For Each , ajoutez une activité Connector , Service Now HTTP Request, avec la configuration suivante :
- Connexion ServiceNow—Compte Développeur Salesforce
- Méthode—GET
- URL de la demande—
"/services/data/v64.0/sobjects/Case/" + $currentItem.Id"/services/data/v64.0/sobjects/Case/" + $currentItem.Id
Renommez l’activité « Détails du cas ». Le nom de la sortie du contexte restera tel quel.
-
Quittez la boucle For Each et ajoutez une activité Response vide.
-
Dans la branche Sinon de l’activité « Si le contact a été trouvé », ajoutez une activité Réponse avec la Réponse suivante :
- Réponse—
No Salesforce Contact found for the incident creator email."No Salesforce Contact found for the incident creator email."
Renommez l’activité « Renvoyer l’erreur Aucun contact trouvé ».
- Réponse—
- Dans la branche Puis , ajoutez une activité Connecteur et configurez-la pour utiliser l'activité Salesforce : Rechercher à l'aide de SOQL. Renommez l'activité « Obtenir un contact » et le nom de la sortie contextuelle par