Sdílet prostřednictvím


Digitalizace formulářů v aplikaci Customer Insights - Journeys

Digitalizace formuláře se používá k získávání příspěvků z existujících formulářů, které nebyly vytvořeny pomocí editoru formulářů Customer Insights - Journeys. Digitalizace formuláře se doporučuje, pokud váš stávající formulář odesílá položky také do jiných systémů než Dynamics 365 nebo pokud existující formulář obsahuje složitou logiku, kterou nelze snadno znovu vytvořit v editoru formulářů Customer Insights - Journeys. Pokud lze existující formulář znovu vytvořit pomocí editoru formulářů Customer Insights - Journeys, nedoporučuje se používat funkci digitalizace formuláře.

Zachycení formulářů používá ke zpracování odeslání stejné rozhraní API jako standardní formuláře. Pro zachycení formuláře platí stejné bezpečnostní upozornění.

Důležité

Digitalizace formuláře vyžaduje pomoc vývojáře. Vždy je snazší vytvořit formulář pomocí editoru formulářů Customer Insights - Journeys a vložit ho do své stávající stránky.

Důležité

Snímání formuláře vyžaduje řešení DynamicsMKT_Forms verze 1.1.35355 nebo vyšší. Při zřizování zkušební instance nebudete mít vždy automaticky nejnovější verzi. Ujistěte se, že jste provedli aktualizaci Customer Insights - Journeys před pokusem o zachycení formuláře.

Zapnutí zachycení formuláře

Funkce zachycení formuláře je ve výchozím nastavení vypnutá. Přepínač Zachycení formuláře můžete zapnout v části Nastavení>Přepínače funkcí>Formuláře.

Zapněte zachycení formuláře v přepínačích funkcí.

Jak funguje digitalizace formuláře

Digitalizace formuláře napodobuje odeslání standardního Customer Insights - Journeys formuláře. Chcete-li propojit odeslání vašeho stávajícího formuláře s Customer Insights - Journeys, musíte vytvořit formulář pomocí editoru formulářů Customer Insights - Journeys. Jakmile formulář publikujete, můžete získat skript pro digitalizaci formuláře, který je třeba vložit do webové stránky obsahující váš stávající formulář. Skript obsahuje definici existujících polí formuláře mapujících atributy potenciálního zákazníka nebo entity kontaktu. Všechny příspěvky a analýzy najdete uvnitř Customer Insights - Journeys. Tento formulář můžete také použít při orchestraci cesty se spouštěčem Odeslání marketingového formuláře . Toto odeslání formuláře může také vytvořit nebo aktualizovat souhlas kontaktního místa a související účely nebo témata.

Průvodce digitalizací formulářů krok za krokem

Vytvoření digitalizace formuláře v editoru formulářů Customer Insights - Journeys

  1. Chcete-li vytvořit nový skritp digitalizace formuláře, přejděte na Customer Insights - Journeys>Kanály>Formuláře a vyberte položku Nový na panelu příkazů.

  2. Pojmenujte formulář a vyberte správnou cílovou skupinu. Důležitý je výběr cílové skupiny. Skript pro digitalizaci formuláře ->mapování polí a atributů je k dispozici pouze pro atributy zvolené cílové skupiny (entity).

  3. Přidejte všechna pole, která chcete namapovat, do stávajících polí formuláře. Tento krok není povinný, mapování atributu > pole je definováno v kódu pro zachycení formuláře. Přidáním správných polí do formuláře se vygenerují zástupné znaky pro mapování atributů ve skriptu pro digitalizaci formuláře, což usnadňuje definici mapování.

  4. Přidejte prvky souhlasu, jako je účel nebo téma, abyste je vytvořili a nakonfigurovali. Zjistěte další informace, jak spravovat souhlas s e-mailovými a textovými zprávami v Customer Insights - Journeys.

    Důležité

    Definice souhlasu musí být provedena v editoru formulářů. Změny provedené v nastavení souhlasu provedené ve fragmentu kódu pro digitalizaci formuláře budou ignorovány.

  5. Přidejte tlačítko Odeslat. Tlačítko Odeslat je nutné pro úspěšné ověření formuláře před publikováním.

  6. Publikujte formulář pomocí tlačítka Publikovat v pravém horním rohu obrazovky. Zkopírujte fragment kódu pro digitalizaci formuláře a vložte fragment kódu na svou webovou stránku s existujícím formulářem nebo předejte fragment kódu svému vývojáři. Fragment kódu již obsahuje odkaz na dokumentaci, která poskytuje pokyny vašemu vývojáři.

    Přidejte prvek souhlasu do formuláře.

    Důležité

    Název domény, kde je hostován váš stávající formulář, musí být povolen pro externí hostování formuláře, jinak nebude odeslání formuláře digitalizováno. Další informace o ověřování domény.

Vložení skriptu digitalizace do vaší stránky a definice mapování

Fragment kódu zkopírovaný v předchozím kroku slouží jako šablona a je třeba jej upravit pro konkrétní případ použití. Musíte vyměnit všechny prvky označené jako ***Please fill*** ve vygenerované šabloně a přizpůsobte logiku svému scénáři.

Vaše stávající předložení formuláře je odesláno na adresu Customer Insights - Journeys pomocí JavaScript API, které je definováno v souboru FormCapture.bundle.js a je součástí fragmentu.

Nastavení digitalizace formulářů se skládá z těchto kroků:

  1. Získejte odkaz na prvek formuláře na stránce.
  2. Definujte mapování polí formuláře na pole (atributy entity) v Customer Insights - Journeys.
  3. Definujte mapování polí souhlasu na modelu souhlasu v Customer Insights - Journeys.
  4. Odešlete předložení formuláře na Customer Insights - Journeys.

1. Získání odkazu na prvek formuláře

Chcete-li získat odkaz na prvek formuláře, můžete použít pomocnou funkci waitForElement. Pracuje také s dynamicky vykreslovanými prvky a vrací příslib, který je vyřešen, jakmile je prvek s daným selektorem nalezen na stránce. Pro odkaz na selektory CSS, viz tato dokumentace.

Příklad:

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

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

2. Definujte mapování polí formuláře

Pole ve formuláři je třeba namapovat na příslušná pole (atributy entity) v Customer Insights - Journeys. Mapování je definováno ve funkci d365mktformcapture.serializeForm(form, mappings).

Příklad:

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

Parametr form je načten funkcí waitForElement popsanou v předchozí části. Parametr mappings je pole s prvky následující struktury:

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
}

Funkce je synchronní a vrací výsledek serializace s následujícím kontraktem:

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
}

Ujistěte se, že zpracováváte všechny chyby vrácené serverem FormFieldMappingResults. Můžete vytvořit užitečné zatížení pro Customer Insights - Journeys zavoláním serializedForm.SerializedForm.build().

2.1 Mapování polí sady OptionSet

Pro pole OptionSet musíte definovat mapování na příslušnou hodnotu, která má být uložena v Customer Insights - Journeys. Ve vlastnosti DataverseFieldValue můžete mapovat své stávající hodnoty polí OptionSet formuláře.

Příklad:

<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 Mapování vyhledávacích polí
Nastavení výchozí hodnoty pro vyhledávací pole

V logice mapování pro vyhledávací pole můžete použít pouze statické (výchozí) hodnoty. Musíte definovat název pole a hodnotu, která má být uložena v Customer Insights - Journeys.

Příklad:

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

<script>
  ...
  const mappings = [
    {
        DataverseFieldName: "currency",
        DataverseFieldValue: "{\"Id\":\"ffffd6c1-b32d-ee11-bdf3-6045bded6105\",\"LogicalName\":\"transactioncurrency\"}"
    },
  ];
  ...
</script>
Mapujte hodnotu vyhledávacího pole na pole ve formuláři

Hodnotu vyhledávacího pole můžete také namapovat na příslušnou hodnotu v existujícím poli formuláře.

Příklad:

<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 Mapování hodnot polí s vícenásobným výběrem

Pro pole multi-select musíte definovat mapování na příslušnou hodnotu, která má být uložena v Customer Insights - Journeys. Ve vlastnosti DataverseFieldValue můžete mapovat své stávající hodnoty polí s vícenásobným výběrem formuláře.

Příklad:

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

Pole souhlasu je třeba nakonfigurovat v editoru formulářů v Customer Insights - Journeys. Podle toho se automaticky generují mapování DataverseFieldName a DataverseFieldValue.

Příklad:

<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. Odešlete předložení formuláře na Customer Insights - Journeys.

Jakmile získáte odkaz na formulář, definujete mapování a serializujete formulář, můžete přidat posluchače událostí k události submit přidat posluchače události a odeslat jej pomocí funkce d365mktformcapture.submitForm(captureConfig, payload). Toto volání vrátí příslib a chyby lze ošetřit v logice catch.

Důležité

Pokud máte zavedenou vlastní validaci nebo kontrolu Captcha, ujistěte se, že jste formulář odeslali na Customer Insights - Journeys pouze v případě úspěšného ověření (například zkontrolujte isDefaultPrevented na submit událost nebo explicitně zavolejte submitForm až po úspěšném ověření)

Příklad:

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

Řešení problému

Volání koncového bodu odeslání selže s chybou CORS

Cross-Origin Resource Sharing (CORS) může způsobit selhání zachycení odeslání formuláře. Povolte doménu pro externí hostování formuláře. Další informace o ověřování domény.

Nastavte příslušná pole souhlasu v editor formulářů (viz Vytvoření digitalizace formuláře v editoru formulářů Customer Insights - Journeys) a použijte správné mapování vygenerovaná v procesu publikování.