Ampliar formularios de marketing de Customer Insights - Journeys mediante código
Nota
Dynamics 365 Marketing y Dynamics 365 Customer Insights son ahora Customer Insights - Journeys y Customer Insights - Data. Para obtener más información, consulte Preguntas frecuentes de Dynamics 365 Customer Insights
Los nuevos clientes de Customer Insights - Journeys solo reciben características de recorridos en tiempo real. Para obtener más información, consulte Instalación de recorridos en tiempo real predeterminada.
Este artículo explica cómo ampliar los formularios de marketing Customer Insights - Journeys para una personalización avanzada.
API de JavaScript
Los formularios de marketing de Customer Insights - Journeys constan de dos partes:
- Un marcador de posición de formulario, que se parece a esto:
<div>
data-form-id='{msdynmkt_marketingformid}'
data-form-api-url='https://{server}.dynamics.com/api/v1.0/orgs/{organizationid}/landingpageforms/forms/{msdynmkt_marketingformid}'
data-cached-form-url='https://{server}.dynamics.com/{organizationid}/digitalassets/forms/{msdynmkt_marketingformid}'
</div>
- Y un cargador de formularios, que ilumina los marcadores de posición del formulario una vez que se carga la página (se activa un evento
DOMContentLoaded
):
<script src='https://cxppusa1formui01cdnsa01-endpoint.azureedge.net/global/FormLoader/FormLoader.bundle.js'></script>
Eventos personalizados
Evento personalizado | Descripción |
---|---|
d365mkt-beforeformload |
Se activa cuando se reconoce el marcador de posición del formulario antes de que se obtenga el contenido real del formulario. |
d365mkt-formrender |
Se activa después de que se obtiene el contenido del formulario y directamente antes de que se inyecte en el marcador de posición del formulario. |
d365mkt-afterformload |
Se activa después de inyectar el formulario en el marcador de posición. |
d365mkt-formsubmit |
Activado cuando se envía el formulario, cancelable. |
d365mkt-afterformsubmit |
Se desencadena después de que se envía un formulario |
Envío de formulario: propiedades de objeto detalladas de d365mkt-formsubmit
Name | Type | Descripción |
---|---|---|
Carga útil | Objecto | Diccionario con propiedades de formulario para enviar al servidor |
Después del envío del formulario: propiedades detalladas del objeto d365mkt-afterformsubmit
Name | Type | Descripción |
---|---|---|
Correcto | Booleana | Indica si el servidor aceptó el envío o si el envío fue rechazado |
Carga útil | Objecto | Diccionario con propiedades de formulario tal y como fueron enviados al servidor |
Puede adjuntar eventos personalizados utilizando la mecánica de adjuntar eventos estándar:
Código de ejemplo
<script>
document.addEventListener("d365mkt-beforeformload", function() { console.log("d365mkt-beforeformload") });
document.addEventListener("d365mkt-afterformload", function() { console.log("d365mkt-afterformload") });
document.addEventListener("d365mkt-formrender", function() { console.log("d365mkt-formrender") });
document.addEventListener("d365mkt-formsubmit", function(event) {
// example of validation using form submit event - cancelling form submission unless first name is John
if (document.forms[0]["firstname"].value !== "John") {
event.preventDefault();
console.log("blocked mkt-formsubmit");
return;
}
console.log("mkt-formsubmit" + JSON.stringify(event.detail.payload));
});
document.addEventListener("d365mkt-afterformsubmit", function(event) {
console.log("success - " + event.detail.successful);
console.log("payload - " + JSON.stringify(event.detail.payload));
});
</script>
Personalización de comportamiento de formularios
Puede personalizar el comportamiento del formulario incluyendo una secuencia de comandos de configuración antes de que la secuencia de comandos del cargador se inyecte en una página.
<script>
var d365mkt = {
// disables showing of progress bar during form loading
hideProgressBar: true
};
</script>
Representación de un formulario de marketing mediante una API de JavaScript
Esperar por DOMContentLoaded
puede ser un inconveniente, especialmente en escenarios como la carga dinámica de contenido. Para estas situaciones, puede utilizar la función auxiliar createForm
. createForm
devuelve inmediatamente un elemento DOM de div
, que activa la obtención del contenido del formulario en segundo plano (el formulario se inyecta en un marcador de posición en el momento en que se obtiene).
<html>
<body>
<script src="https://cxpiusa1formui01cdnsa01-endpoint.azureedge.net/global/FormLoader/FormLoader.bundle.js"></script>
<div id="root"></div>
<script>
const root = document.getElementById('root');
root.appendChild(d365mktforms.createForm(
'formId',
'formApiBaseUrl',
'formUrl'));
</script>
</body>
</html>
También debe pasar el identificador de evento legible para los formularios de registro de eventos. La sintaxis modificada es la siguiente:
d365mktforms.createForm(
'formId',
'https://{server-api}/api/v1.0/orgs/{organizationid}/eventmanagement',
'https://{server-load}/{organizationid}/digitalassets/forms/{msdynmkt_marketingformid}',
{ 'data-readable-event-id': 'My_Test_Event_123_replace_with_actual_readable_event_id' })
Inyectar un formulario de marketing en una aplicación React
Puede utilizar formularios de marketing dentro de las aplicaciones de React. El cargador de formularios expone el componente d365mktforms.FormPlaceholder
React, que puede inyectar en su aplicación.
<html>
<head>
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://cxppusa1formui01cdnsa01-endpoint.azureedge.net/global/FormLoader/FormLoader.bundle.js"></script>
</head>
<body>
<div id="root"></div>
<script>
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(React.createElement(d365mktforms.FormPlaceholder, {
formId:'{msdynmkt_marketingformid}',
formApiBaseUrl:'https://{server-api}/api/v1.0/orgs/{organizationid}/landingpageforms',
formUrl:'https://{server-load}/{organizationid}/digitalassets/forms/{msdynmkt_marketingformid}'
}, null));
</script>
</body>
</html>
También debe pasar el identificador de evento legible para los formularios de registro de eventos. La sintaxis modificada (introducida en la versión 6.1 de Marketing) es la siguiente:
root.render(React.createElement(d365mktforms.FormPlaceholder, {
formId:'{msdynmkt_marketingformid}',
formApiBaseUrl:'https://{server-api}/api/v1.0/orgs/{organizationid}/eventmanagement',
formUrl:'https://{server-load}/{organizationid}/digitalassets/forms/{msdynmkt_marketingformid}',
readableEventId:'My_Test_Event_123_replace_with_actual_readable_event_id'
}, null));
Nota
Debe reemplazar {msdynmkt_marketingformid}
con el identificador real de la entidad del formulario de marketing y {organizationid}
con el identificador real de su organización. {server-}
debe apuntar a los puntos finales del servidor para su organización. La forma más fácil de obtener la información que necesita es con el comando "Obtener código Javascript" de las opciones de publicación del formulario.
Atributo de widget | Propiedad de componente React |
---|---|
data-form-id | formId |
data-form-api-url | formApiBaseUrl |
data-cached-form-url | formUrl |
Nota
La API de Javascript está disponible solo para formularios alojados como script. No es compatible con la opción de hospedaje iFrame.