Étendre les formulaires marketing sortant à l’aide de code
Note
Dynamics 365 Marketing et Dynamics 365 Customer Insights sont maintenant Customer Insights - Journeys et Customer Insights - Data. Pour plus d’informations, consultez les Dynamics 365 Customer Insights FAQ
Les nouveaux clients Customer Insights - Journeys reçoivent uniquement des fonctionnalités des parcours en temps réel. Pour en savoir plus, consultez Installation de parcours en temps réel par défaut.
Important
Cet article ne s’applique qu’au marketing sortant, qui sera supprimé du produit le 30 juin 2025. Pour éviter les interruptions, passez aux parcours en temps réel avant cette date. Plus d’informations, voir Vue d’ensemble des transitions
Un formulaire marketing définit un ensemble de champs de saisie organisés selon une mise en page de formulaire. Vous allez probablement générer une petite bibliothèque de formulaires réutilisables que vous pouvez placer sur différentes pages marketing, si nécessaire. Pour ajouter un formulaire marketing à une page marketing spécifique, utilisez un élément de formulaire pour positionner le formulaire et choisir les paramètres locaux qui s’appliquent uniquement à cette page. Pour plus d’informations : Formulaires de marketing sortant
Les formulaires marketing sortant peuvent être étendus à l’aide de JavaScript pour effectuer des actions métier personnalisées dans Dynamics 365 Customer Insights - Journeys. Voici les méthodes disponibles pour étendre les formulaires marketing sortant.
API JavaScript
Nous utilisons la dernière version de l’API JavaScript. Vérifiez que les références au script form-loader.js
ou loader.js
ressemblent à https://mktdplp102cdn.azureedge.net/public/latest/js/form-loader.js?v=[version tag]
ou https://mktdplp102cdn.azureedge.net/public/latest/js/loader.js?v=[version tag]
, respectivement. La section ?v=[version tag]
peut être omise. Les scripts plus anciens (scripts qui ressemblent à https://mktdplp102cdn.azureedge.net/public/static/[version tag]/js/form-loader.js
ou à https://mktdplp102cdn.azureedge.net/public/static/[version tag]/js/loader.js
) sont obsolètes et ne sont plus pris en charge.
Placez le code personnalisé directement après le script form-loader.js
.
Exemple de code :
<script src="https://mktdplp102cdn.azureedge.net/public/latest/js/form-loader.js?v=..."></script>
<script>
// correct - the script will attach event handlers right after form loader script
MsCrmMkt.MsCrmFormLoader.on("afterFormLoad", function() {});
// wrong - the script will attach event handlers after window has finished loading, form already might have been loaded in the meantime and no events will trigger anymore
// window.onload = function() { MsCrmMkt.MsCrmFormLoader.on("afterFormLoad", function() {}); };
</script>
Méthodes MsCrmMkt.MsCrmFormLoader
Nom de la fonction | Description | Nom du paramètre | Type de paramètre | Description du paramètre | Retours |
---|---|---|---|---|---|
.on(eventType,callback) |
Enregistre un rappel à un type d’événements de cycle de vie de formulaire | eventType |
string , l’une de ces valeurs "afterFormLoad" , "afterFormRender" , "afterFormSubmit" , "formLoad" , "formRender" , "formSubmit" |
Type d’événement à accrocher | undefined |
callback |
Fonction de rappel | Function |
|||
.off(eventType) |
Annuler l’enregistrement d’un ou de plusieurs rappels à un événement de cycle de vie de formulaire donné | eventType facultatif |
string , l’une de ces valeurs "afterFormLoad" , "afterFormRender" , "afterFormSubmit" , "formLoad" , "formRender" , "formSubmit" |
Type d’événement à accrocher | undefined |
.sendFormCaptureToCrm(form) |
Soumettre un formulaire dans Dynamics 365 Customer Insights - Journeys, pris en charge uniquement pour le scénario de capture de formulaire | form |
Élément DOM représentant le formulaire ou sélecteur de JQuery représentant le formulaire | Élément DOM du formulaire | Promise<string> |
Événements de formulaire
Nom de l’événement | Déclenché pour les formulaires capturés | Syntaxe | Description |
---|---|---|---|
formLoad |
Oui | MsCrmMkt.MsCrmFormLoader .on("formLoad", function(event) {}) |
Se déclenche quand l’espace réservé du formulaire est reconnu avant que le contenu réel du formulaire soit extrait, pour les déclencheurs de formulaires capturés lorsque le formulaire est reconnu |
formRender |
Non | MsCrmMkt.MsCrmFormLoader .on("formRender", function(event) {}) |
Se déclenche après l’extraction du contenu de formulaire et avant l’injection du contenu du formulaire dans une page. |
afterFormRender |
Non | MsCrmMkt.MsCrmFormLoader .on("afterFormRender", function(event) {}) |
Se déclenche après l’injection du contenu de formulaire dans une page et avant que les crochets de validation ne soient attachés. |
afterFormLoad |
Non | MsCrmMkt.MsCrmFormLoader .on("afterFormLoad", function(event) {}) |
Se déclenche après l’injection du contenu de formulaire dans une page et après que les crochets de validation ont été attachés. |
formSubmit |
Non | MsCrmMkt.MsCrmFormLoader .on("formSubmit", function(event) {}) |
Se déclenche à l’envoi du formulaire avant que cette soumission ne soit envoyée au serveur. |
afterFormSubmit |
Oui | MsCrmMkt.MsCrmFormLoader .on("afterFormSubmit", function(event) {}) |
Se déclenche à l’envoi du formulaire après que cette soumission a été envoyée au serveur. Se déclenche uniquement que si l’envoi est réussi. Il se déclenche avant la redirection ou l’affichage du message de confirmation. |
Pour tous les événements, les méthodes de rappel suivantes sont disponibles :
Nom de la méthode | Description | Type renvoyé |
---|---|---|
.getType() |
Obtient le type d’événement | string , l’une de ces valeurs "afterFormLoad" , "afterFormRender" , "afterFormSubmit" , "formLoad" , "formRender" , "formSubmit" |
.getFormPageId() |
Obtient l’ID de page de formulaire, cela fait référence à l’identificateur unique d’entité msdyncrm_formpage |
string |
.getFormPlaceholder() |
Obtient l’élément DOM représentant le formulaire | Élément DOM |
.preventDefault() |
Annule l’envoi de formulaire, valide uniquement pour l’événement de type formSubmit |
undefined |
.preventFormLoadingProgressBar() |
Masque la toupie pendant le chargement du formulaire, valide uniquement pour le type d’événement formLoad |
undefined |
.setFormNotification(function (n) {}) |
Remplace un rappel pour affiche la notification de formulaire (comme un message d’envoi du formulaire). Sans corps de fonction, aucune notification ne s’affiche. Valable uniquement pour un événement de type formLoad . |
undefined |
Personnalisation du comportement de capture de formulaire
La capture de formulaire est dirigée par l’élément de configuration qui ressemble à <div class="d365-mkt-config" style="display:none" data-website-id="..." data-hostname="...">
. Vous pouvez modifier le comportement de la capture de formulaire en ajoutant les attributs suivants :
Nom de l’attribut | Description |
---|---|
data-ignore-prevent-default="true" |
Lorsque cet élément est spécifié, le formulaire est envoyé indépendamment du fait que .preventDefault() a été appelé sur l’événement. |
data-no-submit="true" |
Lorsque cet élément est spécifié, le script de capture du formulaire ne capturera pas l’événement d’envoi du formulaire, vous devez déclencher MsCrmMkt.MsCrmFormLoader.sendFormCaptureToCrm(form) explicitement. Cette fonction est utile si vous souhaitez soumettre votre formulaire en premier et synchroniser Dynamics 365 Customer Insights - Journeys ultérieurement. |
Note
L’API Javascript n’est disponible que pour les formulaires hébergés sous forme de script. Elle n’est pas prise en charge pour l’option d’hébergement iFrame.
Ajoutez votre extrait de code pendant l’utilisation de Portals
Pour ajouter du code JavaScript, vous devez suivre les étapes ci-dessous :
Accédez à l’application Customer Insights - Journeys et accédez à Pages marketing.
Sélectionnez Nouveau pour créer un page marketing.
Faites glisser et déplacer l’élément Formulaire de l’onglet Boîte à outils dans l’onglet Concepteur et sélectionnez le formulaire de marketing que vous souhaitez utiliser.
Affichez l’onglet HTML et votre extrait de code.
Sélectionnez Enregistrer pour enregistrer vos modifications, puis sélectionnez Mettre en service.
Ajoutez votre extrait de code lorsque vous utilisez votre propre CMS et hébergement de formulaire
Pour ajouter l’extrait de code, vous devez suivre les étapes ci-dessous :
Accédez à l’application Customer Insights - Journeys et accédez aux formulaires marketing dans la zone marketing sortant
Sélectionnez Nouveau pour créer un formulaire marketing.
Sélectionnez Mettre en service.
Sélectionnez l’onglet Hébergement de formulaire et sous Domaines disponibles pour l’hébergement des formulaires, sélectionnez le domaine s’il est disponible ou cliquez sur + Créer un domaine.
Ajoutez votre propre domaine CMS et sélectionnez Enregistrer.
Dans l’onglet À partir de l’hébergement, sous l’onglet Pages de formulaire marketing associées, cliquez sur ..., puis + Nouvelle page de formulaire pour ajouter une page de formulaire marketing.
Cliquez sur Enregistrer.
Sélectionnez à présent la page de formulaire que vous avez créée et copiez le script dans le Presse-papiers.
À présent dans votre CMS, modifiez la page où vous souhaitez inclure le formulaire, ajoutez vos personnalisations et script.
Examples
Validation de l’exemple : vérifie si la zone de texte contient Fabricam ou Contoso. Dans le cas contraire, empêche l’envoi du formulaire.
MsCrmMkt.MsCrmFormLoader.on('formSubmit', function(event) { // sample validation - check if document.getElementById('txt-company-name-message').style.visibility = 'hidden'; var companyName = document.getElementById('txt-company-name').value; if (companyName !== 'Fabricam' && companyName != 'Contoso') { document.getElementById('txt-company-name-message').style.visibility = 'visible'; event.preventDefault(); } });
Remplissage des paramètres de la chaîne de requête entrante dans les champs masqués.
MsCrmMkt.MsCrmFormLoader.on('afterFormLoad', function(event) { var self = window.location.toString(); var queryString = self.split("?"); var hiddenFields = document.querySelectorAll("input[type=hidden]"); if (queryString.length > 1) { var pairs = queryString[1].split("&"); for (var pairIndex in pairs) { var pair = pairs[pairIndex].split("="); if (pair.length !== 2) { continue; } var key = pair[0]; var value = pair[1]; if (key && value) { for (var i = 0; i < hiddenFields.length; i++) { if (hiddenFields[i].id === key) { hiddenFields[i].value = value; } } } } } });
Localiser le formulaire (liste de sélection) - Vous pouvez utiliser l’extensibilité côté client pour localiser les formulaires marketing sortant. La localisation doit avoir lieu après le chargement du formulaire (événement
afterFormLoad
). Dans la page marketing (ou dans le CMS où vous hébergez le formulaire), ajoutez le script de localisation suivant :<script> function translatePicklists(lcid) { var picklists = document.querySelectorAll("select"); for(var i = 0; i < picklists.length; i++) { var picklist = picklists[i]; var relatedDatalist = document.getElementById("localize-" + picklist.name + "-" + lcid.toString()); if (relatedDatalist) { for(var j = 0; j < picklist.options.length; j++) { if (j >= relatedDatalist.options.length) { break; } picklist.options[j].text = relatedDatalist.options[j].text; } } } } MsCrmMkt.MsCrmFormLoader.on("afterFormLoad", function(event) { translatePicklists(1029); }); </script>
Dans le formulaire marketing, assurez-vous que vous avez préparé les traductions. Modifiez le formulaire marketing dans le concepteur HTML, mettez-le en forme (cliquez avec le bouton droit de la souris dans le concepteur, puis choisissez Mettre en forme) et ajoutez les traductions nécessaires.
<div data-editorblocktype="Field-dropdown"> <div class="marketing-field"> <div class="lp-form-field" data-required-field="false"> <label for="f7ae1a98-0d83-4592-afe0-272c85ce607d" class="lp-ellipsis" title="">Marital status</label> <select id="f7ae1a98-0d83-4592-afe0-272c85ce607d" name="f7ae1a98-0d83-4592-afe0-272c85ce607d" class="lp-form-fieldInput" title="" style="width: 100%; box-sizing: border-box;"> <option value=""></option> <option value="1">Single</option> <option value="2">Married</option> <option value="3">Divorced</option> <option value="4">Widowed</option> </select> </div> </div> </div> <!-- format is localize-fieldid-lcid --> <datalist id="localize-f7ae1a98-0d83-4592-afe0-272c85ce607d-1029"> <option></option> <option>Svobodny(a)</option> <option>Zenaty(a)</option> <option>Rozvedeny(a)</option> <option>Vdovec(vdova)</option> </datalist>