Mappage des données de Salesforce vers un formulaire
- Dernière mise à jour2024/07/18
Mappage des données de Salesforce vers un formulaire
Vous pouvez utiliser cet exemple pour modéliser le code lors du développement du Widget iFrame en vue de transférer et de consommer les données de l'hôte depuis Salesforce.
Vous devez ajouter la Control Room à la page URL de confiance du fournisseur de services de contenu, sinon les données ne seront pas transmises de l'hôte vers Automation Co-Pilot et provoqueront des erreurs.
Présentation
Dans l'exemple suivant, nous utilisons Salesforce comme application hôte pour illustrer l'utilisation de HTML et de JavaScript permettant le transfert de données de l'hôte (Salesforce) vers un Widget iFrame Automation Co-Pilot. Le développement et la configuration du Widget iFrame sont spécifiques aux paramètres de Salesforce. L'exemple de code mappe les valeurs existantes de la page hôte aux éléments de formulaire initiaux d'un processus automatisé, exploité dans Automation Co-Pilot. Dans cet exemple, le code est générique et peut être utilisé pour modéliser la structure dans des applications similaires. Un développeur doit modifier les éléments du code pour qu'ils correspondent à vos éléments de formulaire initiaux. Cela permettra de mapper les données de Salesforce à votre widget et de créer des champs pré-remplis lors de l'exécution de l'automatisation, qui incluront les données nécessaires à votre activité spécifique.
- Utiliser les autorisations AAE_Robotic_Administrator pour configurer le Widget iFrame Automation Co-Pilot et avoir le code d'intégration à portée de main. Consultez Configurer un widget iFrame dans une application Web.
- Disposer d'un accès de développeur à votre application Web Salesforce qui prend en charge la technologie iFrame.
- Disposer des éléments et attributs documentés de l'automatisation des processus qui apparaîtront dans le iFrame.En particulier, l'ID de processus et les ID des fichiers de saisie du formulaire initial.
- L'ID de processus : L'utilisateur disposant des autorisations AAE_Robotic_Administrator peut afficher un processus en le sélectionnant dans votre liste de processus. Remarque la valeur numérique dans l'URL (https://URL>/aari#/processes/97).
- ID du fichier de saisie : Champs du formulaire initial du processus dans le concepteur de formulaires. Vous utiliserez les champs ID élément pour tous les fichiers de saisie qui doivent être mis en correspondance avec les données Salesforce.
Développer un composant Web Lightning pour Salesforce
- L'exercice Trailhead suivant peut vous aider à mettre en place votre environnement VSCode, si vous n'en avez pas déjà un. Configurer l'environnement de développement de Visual Studio
- Cet exercice Trailhead peut vous guider dans la configuration des extensions Salesforce. Toutes les étapes ne sont pas obligatoires. Les étapes de création d'un projet et d'authentification de votre instance Salesforce vous aideront principalement à démarrer. Commencer à coder avec Visual Studio
Procédure
- Créez un nouveau fichier HTML et insérez l'exemple HTML pour cette section.
- Saisissez le nom et la description du composant (p. ex, Case_Record_CoPilot).
- Entre les balises <template>, ajoutez votre extrait iFrame personnalisé généré par Automation Anywhere (code d'intégration). Rendez-vous à l'étape 6 pour découvrir l'exemple HTML, qui contient également une balise lightning-card permettant d'afficher un titre sur le composant.
- Remplacez
YOUR CONTROL ROOM URL
par une valeur qui pointe vers votre Control Room. - Veillez à ce que le paramètre
referrerpolicy=”origin”
figure dans votre modèle HTML afin d'éviter les problèmes entre origines.
- Enregistrez votre widget.
- Identifiez le fichier de votre Javascript et insérez l'exemple de Javascript. Ce fichier représente votre contrôleur.
- Saisissez le nom (p. ex, Case-Record-CoPilot.js).
- Modifiez les
Case field names
en fonction des données à transférer. Utilisez une liste de noms d'API séparés par des virgules qui correspondent aux champs de Salesforce à partir desquels les données sont mappées. - Remplacez
YOUR CONTROL ROOM URL
par le domaine de votre Control Room. - Remplacez l'
Process ID
par l'ID de processus Automation Co-Pilot (vous le trouverez dans l'URL du processus). - Veillez à remplacer
TextBox0
etDropdown3
par des ID d'éléments correspondant aux éléments de formulaire initiaux dans Automation Co-Pilot. Ajoutez des champs supplémentaires si nécessaire. - Les données qui seront mappées au champ du formulaire sont représentées par
this.caseRec.fields.Status.value
.caseRec
est un objet qui possède un certain nombre de valeurs de champ accessibles par la notation par points.- Le nom du
field
que vous souhaitez mapper suit les champs et value
garantit que la valeur des données est celle qui est récupérée et mappée.
- Une fois le mappage terminé, faites un clic droit sur votre fichier JS.
- Dans le menu, sélectionnez SFDX : Déployer la source dans l'organisation. Cette opération génère votre nouveau composant et le rend disponible dans votre instance Salesforce.
- Enfin, ouvrez l'Éditeur de mise en page à partir de l'enregistrement du cas ou du composant que vous mappez, et faites glisser votre LWC sur la mise en page.
- Enregistrez vos modifications.
- Testez votre processus. Les données doivent être mappées avec les entrées. Si vous ne voyez aucune donnée, c'est que le code comporte peut-être une erreur. Utilisez les outils de développement de Chrome pour inspecter les journaux de la console et localiser le problème.
Exemple de modèle HTML
<template>
<lightning-card>
<h3 slot="title">
Automation Co-Pilot
</h3>
<iframe src='https://aa-pmorgdemo.cloud.automationanywhere.digital/copilot?tags=%5B%22Insurance%22%5D'
name="aari-embedded-app"
id="aari-embedded-app"
width="100%"
height="450px"
referrerpolicy="origin"
sandbox="allow-same-origin allow-scripts allow-forms allow-popups allow-modals"
style="border: none;"></iframe>
</lightning-card>
</template>
L'exemple de code connectera l'iFrame aux données de l'enregistrement Salesforce à l'aide de la méthode PostMessage (service filaire). Spécifiez la liste des champs de votre formulaire pour obtenir la constante CHAMP et fournissez-la à getRecord. Le service filaire alimentera les données qui seront ensuite mappées dans des variables et ajoutées à la charge utile postMessage. Voici un exemple que vous pouvez modifier en fonction des besoins de votre entreprise.
Exemple de Javascript
import { LightningElement,api,wire } from 'lwc'; import { getRecord } from 'lightning/uiRecordApi'; const FIELDS = ['Policy_Holder__c.First_Name__c', 'Policy_Holder__c.Last_Name__c', 'Policy_Holder__c.Contact_Phone__c', 'Policy_Holder__c.Contact_Email__c', 'Policy_Holder__c.Policy_Holder_ID__c', 'Policy_Holder__c.Street__c', 'Policy_Holder__c.City__c', 'Policy_Holder__c.State__c','Policy_Holder__c.ZIPPostalCode__c','Policy_Holder__c.Country__c']; const crorigin = https://aa-pmorgdemo.cloud.automationanywhere.digital; export default class PolicyHolderLWC extends LightningElement { @api recordId; phCustomer; firstName; lastName; phone; email; phID; street; city; state; country; zip; @wire(getRecord, { recordId: '$recordId', fields: FIELDS }) policyholderdata({data, error}){ console.log(' data --> ' + JSON.stringify(data) + ' error --> ' + JSON.stringify(error) ) if(data){ this.phCustomer = data; this.firstName = this.phCustomer.fields.First_Name__c.value; this.lastName = this.phCustomer.fields.Last_Name__c.value; this.phone = this.phCustomer.fields.Contact_Phone__c.value; this.email = this.phCustomer.fields.Contact_Email__c.value; this.phID = this.phCustomer.fields.Policy_Holder_ID__c.value; this.street = this.phCustomer.fields.Street__c.value; this.city = this.phCustomer.fields.City__c.value; this.state = this.phCustomer.fields.State__c.value; this.zip = this.phCustomer.fields.ZIPPostalCode__c.value; this.country = this.phCustomer.fields.Country__c.value; } else if(error){ this.error = error; } } /*****Called on LOAD of LWC *****/ connectedCallback() { // Binding EventListener here when Data received from iframe console.log("Adding Event Listener"); window.addEventListener("message", this.handleResponse.bind(this)); } handleResponse(event) { console.log("Checking Event Origin"); if ((event.origin || event.originalEvent.origin) !== crorigin) { // Not the expected origin: Reject the message! console.log("Not the expected origin; Reject the message!"); return; } else{ this.handleFiretoCoPilot(event); } } handleFiretoCoPilot(event) { console.log("Sending postmessage data"); if (event.data.aariDataRequest === "aari-data-request") { if (event.data.processId === "9") { var postData = {"data": { "TextBox0": this.firstName, "TextBox1": this.lastName, "TextBox2": this.phone, "TextBox3": this.email, "TextBox4": this.phID, "TextBox5": this.street, "TextBox7": this.city, "TextBox8": this.state, "TextBox9": this.zip, "Dropdown2": this.country, "hiddenVariable0":this.recordId }} console.log(postData); //Firing an event to send data to iframe this.template.querySelector("iframe").contentWindow.postMessage(postData, crorigin); } } } }