Dijeli putem


Snimanje obrazaca u usluzi Customer Insights - Journeys

Prikupljanje obrazaca koristi se za dobivanje podnesaka iz postojećih obrazaca koji nisu stvoreni pomoću Customer Insights - Journeys uređivač obrazaca. Prikupljanje obrazaca preporučuje se ako postojeći obrazac šalje i podneske sustavima koji nisu Dynamics 365 ili ako postojeći obrazac sadrži složenu logiku koja se ne može lako ponovno stvoriti u Customer Insights - Journeys uređivač obrazaca. Ako se postojeći obrazac može ponovno stvoriti pomoću Customer Insights - Journeys uređivač obrazaca, nije preporučljivo koristiti značajku hvatanja obrazaca.

Prikupljanje obrazaca koristi isti API kao i standardni obrasci za obradu podnesaka. Ista sigurnosna obavijest vrijedi i za snimanje obrasca.

Važno

Za hvatanje obrazaca potrebna je pomoć razvojnog programera. Uvijek je lakše stvoriti obrazac pomoću uređivač obrazaca Customer Insights - Journeys i ugraditi ga na postojeću stranicu.

Važno

Za snimanje obrasca potrebna je verzija rješenja DynamicsMKT_Forms 1.1.35355 ili novija. Prilikom dodjele resursa probnoj instanci nećete uvijek automatski imati najnoviju verziju. Provjerite jeste li ažurirali Customer Insights - Journeys prije pokušaja snimanja obrasca.

Omogući hvatanje obrazaca

Značajka hvatanja obrasca po zadanom je onemogućena. Možete omogućiti preklopnik Hvatanje obrazaca u Postavkama>Značajka parametri>obrazaca.

Omogućite hvatanje obrazaca u skretnicama značajki.

Kako funkcionira hvatanje obrazaca

Hvatanje obrasca oponaša slanje standardnog Customer Insights - Journeys obrasca. Da biste povezali podneske postojećeg obrasca u Customer Insights - Journeys, morate stvoriti obrazac pomoću Customer Insights - Journeys uređivač obrazaca. Nakon što objavite taj obrazac, možete dobiti skriptu za hvatanje obrazaca koju je potrebno ugraditi u web-stranicu koja sadrži vaš postojeći obrazac. Skripta uključuje definiciju postojećih polja obrasca koja se preslikavaju na atribute entiteta potencijalnog klijenta ili kontakta. Sve podneske i analitiku možete vidjeti unutra Customer Insights - Journeys. Ovaj obrazac možete koristiti i u orkestraciji putovanja s okidačem Poslani marketinški obrazac. Ovo slanje obrasca također može stvoriti ili ažurirati pristanak na kontaktnu točku i povezane svrhe ili teme.

Detaljni vodič za hvatanje obrazaca

Stvaranje hvatanja obrasca u uređivač obrazaca Customer Insights - Journeys

  1. Da biste stvorili novu skriptu obrasca za snimanje, idite na Customer Insights - Journeys>Obrasci>kanala i na naredbenoj traci odaberite Novo.

  2. Dodijelite naziv obrascu i odaberite pravu publika. Izbor ciljne publika je važan. Mapiranje atributa> skripte skripte za hvatanje obrazaca dostupno je samo za atribute odabranog ciljnog publika (entiteta).

  3. Dodajte sva polja koja želite mapirati u postojeća polja obrasca. Ovaj korak nije obavezan; Mapiranje atributa > polja definirano je u kodu za hvatanje obrasca. Dodavanje pravih polja u obrazac generira rezervirana mjesta za mapiranje atributa u skripti za hvatanje obrazaca što olakšava definiciju mapiranja.

  4. Dodajte elemente pristanka kao što su Svrha ili tema da biste ih oblikovali i konfigurirali. Saznajte više o tome kako upravljati pristankom za e-poštu i tekstne poruke u Customer Insights - Journeys.

    Važno

    Definicija privole mora se izvršiti u uređivač obrazaca. Promjene postavki pristanka izvršene u isječak koda za hvatanje obrasca zanemarit će se.

  5. Dodajte gumb Pošalji . Gumb za slanje potreban je za uspješnu provjeru valjanosti obrasca prije objavljivanja.

  6. Objavite obrazac pomoću gumba Objavi u gornjem desnom kutu zaslona. Kopirajte isječak koda za hvatanje obrazaca i ugradite isječak koda na web-stranicu s postojećim obrascem ili predajte isječak koda razvojnom programeru. Isječak koda već uključuje vezu na dokumentaciju koja će voditi vašeg razvojnog programera.

    Dodajte element pristanka obrascu.

    Važno

    Naziv domene u kojoj se nalazi postojeći obrazac mora biti omogućen za vanjski hosting obrasca, inače slanje obrasca neće biti zabilježeno. Saznajte više o provjeri autentičnosti domene.

Ugrađivanje skripte za snimanje na stranicu i definicija mapiranja

Isječak koda kopiran u prethodnom koraku predložak je i mora se prilagoditi određenom slučaju upotrebe. Morate zamijeniti sve elemente označene kao ***Please fill*** u generiranom predlošku i prilagoditi logiku scenariju.

Vaše postojeće slanje obrasca šalje se Customer Insights - Journeys pomoću JavaScript API-ja, definiranog u datoteci FormCapture.bundle.js i uključenog u isječak.

Postava hvatanja obrazaca sastoji se od sljedećih koraka:

  1. Pronađite referencu na element obrasca na stranici.
  2. Definirajte mapiranje polja obrasca na poljima (atributima entiteta) u Customer Insights - Journeys.
  3. Definirajte mapiranje polja suglasnosti na modelu pristanka u Customer Insights - Journeys.
  4. Pošaljite slanje obrasca primatelju Customer Insights - Journeys.

1. Pronađite referencu na element obrasca

Da biste dobili referencu na element obrasca, možete koristiti pomoćnu waitForElement funkciju. Također radi s dinamički prikazanim elementima i vraća obećanje koje se rješava nakon što se element s danim biračem pronađe na stranici. Za referencu CSS birača pogledajte ovu dokumentaciju.

Primjer:

<form id="form1">
...
</form>

<script>
d365mktformcapture.waitForElement("#form1").then(form => {
  ...
});
</script>

2. Definirajte mapiranje polja obrasca

Polja u obrascu moraju se mapirati u odgovarajuća polja (atributi entiteta) u Customer Insights - Journeys. Mapiranje je definirano u funkciji d365mktformcapture.serializeForm(form, mappings).

Primjer:

<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>

Parametar form se dohvaća funkcijom opisanom waitForElement u prethodnom odjeljku. Parametar mappings je polje s elementima sljedeće strukture:

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
}

Funkcija je sinkrona i vraća rezultat serijalizacije sa sljedećim ugovorom:

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
}

Provjerite rješavate li sve pogreške koje FormFieldMappingResults je vratio. Korisni teret možete kreirati pozivom Customer Insights - Journeys serializedForm.SerializedForm.build().

2.1 Mapiranje polja skupa mogućnosti

Za OptionSet polja morate definirati mapiranje na odgovarajuću vrijednost u kojoj treba pohraniti Customer Insights - Journeys. Postojeće vrijednosti polja skupa DataverseFieldValue mogućnosti obrasca možete mapirati u svojstvu.

Primjer:

<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 Mapiranje polja pretraživanja
Postavljanje zadane vrijednosti za polje pretraživanja

Statičke (zadane) vrijednosti možete koristiti u logici mapiranja za polja pretraživanja. Morate definirati naziv polja i vrijednost u kojoj treba pohraniti Customer Insights - Journeys.

Primjer:

<form id="form1">
  ...
</form>

<script>
  ...
  const mappings = [
    {
        DataverseFieldName: "currency",
        DataverseFieldValue: "{\"Id\":\"ffffd6c1-b32d-ee11-bdf3-6045bded6105\",\"LogicalName\":\"transactioncurrency\"}"
    },
  ];
  ...
</script>
Mapiranje vrijednosti polja pretraživanja u polje u obrascu

Vrijednost polja pretraživanja možete mapirati i na odgovarajuću vrijednost u postojećem polju obrasca.

Primjer:

<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 Mapiranje vrijednosti polja s višestrukim odabirom

Za multi-select polja morate definirati mapiranje na odgovarajuću vrijednost u kojoj treba pohraniti Customer Insights - Journeys. Postojeće vrijednosti polja za višestruki DataverseFieldValue odabir obrasca možete mapirati u svojstvu.

Primjer:

  <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>

Polja pristanka moraju biti konfigurirana u uređivač obrazaca u sustavu Customer Insights - Journeys. Mapiranja DataverseFieldName i DataverseFieldValue automatski se generiraju u skladu s tim.

Primjer:

<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. Pošaljite podnesak obrasca na Customer Insights - Journeys

Nakon što dobijete referencu na obrazac, definirate mapiranja i serijalizirate obrazac, možete dodati slušatelja submit događaja događaju i poslati ga pomoću d365mktformcapture.submitForm(captureConfig, payload) funkcije. Ovaj poziv vraća obećanje, a pogreške se mogu rješavati catch logikom.

Važno

Ako imate prilagođenu provjeru valjanosti ili Captcha provjeru, obavezno pošaljite obrazac Customer Insights - Journeys samo u slučaju uspješne provjere valjanosti (na primjer, provjerite isDefaultPrevented submit događaj ili izričito nazovite submitForm tek nakon prolaska provjere valjanosti)

Primjer:

<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>

Rješavanje problema

Poziv na krajnja točka za slanje ne uspijeva zbog CORS pogreške

Dijeljenje resursa s više izvora (CORS) može uzrokovati neuspjeh snimanja slanja obrasca. Omogućite domenu za vanjski hosting obrazaca. Saznajte više o provjeri autentičnosti domene.

Provjerite jeste li postavili odgovarajuća polja pristanka u uređivač obrazaca (pogledajte Stvaranje prikupljanja obrazaca u Customer Insights - Journeys uređivač obrazaca) i jeste li koristili ispravna mapiranja generirana u postupku objavljivanja.