Capturar formularios en Customer Insights - Journeys
A captura de formularios utilízase para obter envíos de formularios existentes que non se crearon mediante o Customer Insights - Journeys editor de formularios. Recoméndase a captura de formularios se o formulario existente tamén envía envíos a sistemas distintos de Dynamics 365 ou se o formulario existente contén lóxica complexa que non se pode recrear facilmente no Customer Insights - Journeys editor de formularios. Se se pode recrear o formulario existente usando Customer Insights - Journeys editor de formularios, non se recomenda utilizar a función de captura de formularios.
A captura de formularios usa a mesma API que os formularios estándar para procesar os envíos. O mesmo aviso de seguridade aplícase á captura de formularios.
Importante
A captura de formularios require asistencia do programador. Sempre é máis doado crear un formulario usando o Customer Insights - Journeys editor de formularios e incorporalo na túa páxina existente.
Importante
A captura de formularios require a versión da solución de DynamicsMKT_Forms 1.1.35355 ou superior. Ao aprovisionar unha instancia de proba, non sempre terá a versión máis recente automaticamente. Asegúrate de ter actualizado Customer Insights - Journeys antes de tentar capturar formularios.
Activa a captura de formularios
A función de captura de formularios está desactivada por defecto. Podes activar a Captura de formularios activar Configuración>Conmutadores de funcións>Formularios.
Como funciona a captura de formularios
A captura de formularios imita o envío dun Customer Insights - Journeys formulario estándar. Para vincular os envíos do teu formulario existente a Customer Insights - Journeys, tes que crear un formulario usando o Customer Insights - Journeys editor de formularios. Unha vez que publiques ese formulario, podes obter un script de captura de formularios, que debes inserir na páxina web que contén o teu formulario existente. O script inclúe a definición da asignación de campos de formulario existentes nos atributos da entidade de contacto ou cliente potencial. Podes ver todos os envíos e análises dentro de Customer Insights - Journeys. Tamén podes usar este formulario na orquestración de viaxes co activador Formulario de marketing enviado . Este formulario tamén pode crear ou actualizar o consentimento do punto de contacto e os fins ou temas relacionados.
Guía paso a paso para capturar formularios
Creando a captura de formulario no Customer Insights - Journeys editor de formularios
Para crear un novo script de formulario de captura, vai a Customer Insights - Journeys>Canles>Formularios e selecciona Novo na barra de comandos.
Nomea o formulario e escolle o público axeitado. A elección do público obxectivo é importante. O campo do script de captura de formulario->asignación de atributos só está dispoñible para os atributos do público obxectivo escollido (entidade).
Engade todos os campos que queres asignar aos teus campos de formulario existentes. Este paso non é obrigatorio; a campo > a asignación de atributos defínese no código de captura do formulario. Engadir os campos correctos ao formulario xera marcadores de posición para a asignación de atributos no script de captura de formularios, facilitando a definición da asignación.
Engade elementos de consentimento como Propósito ou Tema para formalos e configuralos. Obtén máis información sobre como xestionar o consentimento das mensaxes de correo electrónico e de texto en Customer Insights - Journeys.
Importante
A definición de consentimento debe facerse no editor de formularios. Ignoraranse os cambios realizados na configuración de consentimento no formulario de captura fragmento de código.
Engade un botón Enviar . O botón enviar é necesario para a validación exitosa do formulario antes de publicalo.
Publica o formulario mediante o botón Publicar , situado na esquina superior dereita da pantalla. Copia a captura de formulario fragmento de código e incrusta o fragmento de código na túa páxina web co formulario existente ou entrégalle o fragmento de código ao teu programador. O fragmento de código xa inclúe unha ligazón á documentación para guiar ao teu programador.
Importante
O nome de dominio onde está aloxado o formulario existente ten que estar habilitado para aloxamento externo de formularios, se non, o envío do formulario non se capturará. Obtén máis información sobre a autenticación de dominios.
Incorporando o script de captura na súa páxina e definición de mapeo
O fragmento de código copiado no paso anterior é un modelo e debe axustarse ao caso de uso específico. Debe substituír todos os elementos marcados como ***Please fill***
no modelo xerado e axustar a lóxica ao seu escenario.
A súa presentación de formulario existente envíase a Customer Insights - Journeys través dunha API de JavaScript, definida no ficheiro FormCapture.bundle.js
e incluída no fragmento.
A configuración de captura de forma consta destes pasos:
- Obtén a referencia ao elemento formulario na páxina.
- Definir a cartografía dos campos de formulario sobre campos (atributos de entidade) en Customer Insights - Journeys.
- Definir a cartografía dos campos de consentimento sobre o modelo de consentimento en Customer Insights - Journeys.
- Enviar o formulario de envío a Customer Insights - Journeys.
1. Obter unha referencia ao elemento de forma
Para obter unha referencia ao elemento de formulario, pode usar a waitForElement
función de axudante. Tamén funciona con elementos renderizados dinámicamente e devolve unha promesa que se resolve unha vez que o elemento co selector dado se atopa na páxina. Para unha referencia de CSS selectores, consulte esta documentación.
Exemplo:
<form id="form1">
...
</form>
<script>
d365mktformcapture.waitForElement("#form1").then(form => {
...
});
</script>
2. Definir a cartografía dos campos de formulario
Os campos do formulario deben ser mapeados nos respectivos campos (atributos de entidade) en Customer Insights - Journeys. A cartografía está definida na función d365mktformcapture.serializeForm(form, mappings)
.
Exemplo:
<form id="form1">
<p>FirstName: <input type="text" name="firstName"/></p>
</form>
<script>
d365mktformcapture.waitForElement("#form1").then(form => {
const mappings = [
{
FormFieldName: "firstName",
DataverseFieldName: "firstname",
},
];
...
const serializedForm = d365mktformcapture.serializeForm(form, mappings);
// console.log(JSON.stringify(serializedForm)); // NOTE: enable for debugging
const payload = serializedForm.SerializedForm.build();
});
</script>
O parámetro form
é recuperado waitForElement
pola función descrita no apartado anterior. O parámetro mappings
é un conxunto con elementos da seguinte estrutura:
export interface IFormFieldMapping {
FormFieldName?: string; // name of form field
DataverseFieldName: string; // name of field on Dynamics 365 side
DataverseFieldValue?: string | IFormValueMapping[]; // optional - either a fixed value or a value mapping
}
export interface IFormValueMapping {
FormValue: string; // form field value
DataverseValue: string; // mapped value for that form field value that will be sent to Dynamics 365
}
A función é síncrona e devolve o resultado de serialización co seguinte contrato:
export interface IFormSerializationResult {
FormFieldMappingResults: IFormFieldMappingResult[]; // Status for each of the defined mappings
SerializedForm: IFormSerializationBuilder; // The serialized form
}
export interface IFormFieldMappingResult {
Mapping: IFormFieldMapping; // The defined mapping
FormFieldMappingStatus: FormFieldMappingStatus; // Status of the mapping (see below for status values)
Message: string; // Optional - an error/warning message for the mapping
}
export enum FormFieldMappingStatus {
Success = 0,
NotFound = 1,
Error = 2
}
Asegúrese de xestionar todos os erros devoltos pola mesma FormFieldMappingResults
. Podes crear a carga útil a Customer Insights - Journeys través de chamadas serializedForm.SerializedForm.build()
.
2.1 Mapa dos campos de OptionSet
Para OptionSet
os campos, cómpre definir a cartografía ao valor respectivo que se debe almacenar Customer Insights - Journeys. Podes mapear o teu formulario existente OptionSet valores de DataverseFieldValue
campos na propiedade.
Exemplo:
<form id="form1">
<p>Radio: <input type="radio" name="radioInput" value="option1"/><input type="radio" name="radioInput" value="option2"/></p>
</form>
<script>
...
const mappings = [
{
FormFieldName: "radioInput",
DataverseFieldName: "dvradioInput",
DataverseFieldValue: [
{ FormValue: "option1", DataverseValue: "1" },
{ FormValue: "option2", DataverseValue: "2" },
]
},
];
...
</script>
- 2.2 Mapa de campos de busca
Configurar o valor predeterminado para o campo de busca
Podes usar valores estáticos (por defecto) na lóxica de mapas para campos de busca. Hai que definir o nome do campo e o valor que se debe almacenar Customer Insights - Journeys.
Exemplo:
<form id="form1">
...
</form>
<script>
...
const mappings = [
{
DataverseFieldName: "currency",
DataverseFieldValue: "{\"Id\":\"ffffd6c1-b32d-ee11-bdf3-6045bded6105\",\"LogicalName\":\"transactioncurrency\"}"
},
];
...
</script>
Mapea o valor do campo de busca a un campo da túa forma
Tamén podes mapear o valor de campo de busca a un valor respectivo no teu campo de formulario existente.
Exemplo:
<form id="form1">
<p>Radio: <input type="radio" name="currency" value="usd"/><input type="radio" name="currency" value="eur"/></p>
</form>
<script>
...
const mappings = [
{
FormFieldName: "currency",
DataverseFieldName: "transactioncurrencyid",
DataverseFieldValue: [
{ FormValue: "usd", DataverseValue: "{\"Id\":\"cd2cff48-08a3-ea11-a813-000d3a0a82b4\",\"LogicalName\":\"transactioncurrency\"}", },
{ FormValue: "eur", DataverseValue: "{\"Id\":\"91f1a052-259c-4719-a3ae-3a1d2987a3ed\",\"LogicalName\":\"transactioncurrency\"}", },
]
},
];
...
</script>
2.3 Mapeando valores de campo multiseleccionados
Para multi-select
os campos, cómpre definir a cartografía ao valor respectivo que se debe almacenar Customer Insights - Journeys. Podes mapear o teu formulario existente valores de campo multiseleccionados DataverseFieldValue
na propiedade.
Exemplo:
<form id="form1">
<p>Fieldset: <fieldset name="multiOptionInput">
<input type="checkbox" name="multiOptionInput" value="100000000">0</input>
<input type="checkbox" name="multiOptionInput" value="100000001">1</input>
<input type="checkbox" name="multiOptionInput" value="100000002">2</input>
</fieldset></p>
</form>
<script>
...
const mappings = [
{
FormFieldName: "multiOptionInput",
DataverseFieldName: "dvmultiOptionInput",
DataverseFieldValue: [
{ FormValue: "100000000", DataverseValue: "0" },
{ FormValue: "100000001", DataverseValue: "1" },
{ FormValue: "100000002", DataverseValue: "2" },
]
},
];
...
</script>
3. Definir o mapeo de campo de consentimento
Os campos de consentimento deben configurarse nos editor de formularios in Customer Insights - Journeys. Os DataverseFieldName
mapas e DataverseFieldValue
mapas son autoxenerados en consecuencia.
Exemplo:
<form id="form1">
<p>Consent: <input type="checkbox" name="consentField"/></p>
</form>
<script>
...
const mappings = [
{
FormFieldName: "consentField",
DataverseFieldName: "msdynmkt_purposeid;channels;optinwhenchecked",
DataverseFieldValue: "10000000-0000-0000-0000-000000000004;Email;true",
},
];
...
</script>
4. Enviar o formulario de presentación a Customer Insights - Journeys
Unha vez que obteñas unha referencia ao formulario, definir os mapas e serializar o formulario, podes engadir un oínte de eventos ao submit
evento e envialo usando a d365mktformcapture.submitForm(captureConfig, payload)
función. Esta chamada devolve unha promesa, e os catch
erros pódense manexar na lóxica.
Importante
Se tes unha validación personalizada no lugar ou unha comprobación Captcha, asegúrese de enviar o formulario só en Customer Insights - Journeys caso de validación exitosa (por exemplo, comprobe isDefaultPrevented
o submit
evento ou chame submitForm
explicitamente só despois dos pases de validación)
Exemplo:
<form id="form1">
<p>FirstName: <input type="text" name="firstName"/></p>
</form>
<script>
d365mktformcapture.waitForElement("#form1").then(form => {
const mappings = [
{
FormFieldName: "firstName",
DataverseFieldName: "firstname",
},
];
form.addEventListener("submit", (e) => {
const serializedForm = d365mktformcapture.serializeForm(form, mappings);
// console.log(JSON.stringify(serializedForm)); // NOTE: enable for debugging
const payload = serializedForm.SerializedForm.build();
const captureConfig = {
FormId: "...", // the form id on Dynamics 365 side
FormApiUrl: "..." // the API url of the Dynamics 365 backend service where the form will be submitted to
}
d365mktformcapture.submitForm(captureConfig, payload)
.catch(e => {
// error handling
});
}, true);
});
</script>
Resolución de problemas
A chamada ao punto final de presentación falla cun erro CORS
A compartición de recursos de orixe cruzada (CORS) pode causar que a captura de envío falle. Habilitar o seu dominio para o aloxamento de formularios externos. Obtén máis información sobre a autenticación de dominios.
Os valores de consentimento non se actualizan correctamente
Asegúrese de configurar os respectivos campos de consentimento no editor de formularios (consulte Crear a captura do formulario en Customer Insights - Journeys editor de formularios) e que usou os mapas correctos xerados no proceso de publicación.