Vytěžování leadu z emailu

Upravit obsah stránky

Předpoklad je IMAP mapování příchozích emailů do FDT (např. e_mail). Pokud má email jen plain-text obsah, je tento v opakovatelných odstavích, pokud je obsah HTML formátovaný, pak je tento obsah v html příloze.

Kroky akce (stručně)

    bullet

    Načtení vstupu e-mailu

      bullet

      Získání HTML přílohy obsah.html, pokud existuje.

      bullet

      Získání plain-text odstavců z těla zprávy.

    bullet

    Sjednocení zdrojů do jednoho textového bloku

      bullet

      U HTML proběhne odstranění formátování („HTML omáčky“).
      Použita šablona

      removeHtmlTags
      z additional-functions.xsl;

      bullet

      Vše se převede na čistý plain-text.

    bullet

    Normalizace textu

      bullet

      Odebrání okrajových mezer.

      bullet

      Redukce vícenásobných mezer na jednu.

      bullet

      Rozbití na jednotlivé logické řádky.

    bullet

    Transformace pomocí XSL šablony

      bullet

      Každý řádek se převede na element <row/>.

      bullet

      Rozlišení typů řádků:

        bullet

        label, name, value — pokud obsahují „:“.

        bullet

        note — pokud neobsahují „:“.

      Použita šablona
      textToRowNodes
      z additional-functions.xsl;

    bullet

    Vytěžení obsahu leadu

      bullet

      Interpretace <row/> uzlů do datových polí leadu.

      bullet

      Zvládá i více poznámek či více řádků k jednomu labelu.



Popis transformace (HTML →) plain-text → normalizované XML

Tato sekce popisuje, jak se v rámci akce používá XSL šablona, která z HTML obsahu převedeného na text či přímo z textu (typicky těla e-mailu, notifikace, potvrzení formulářů apod.) generuje plně strukturované XML. Výsledkem transformace je jednotný formát vhodný pro další zpracování akcemi, procesy nebo COMEXem.

Cíl transformace

Z původního nestrukturovaného HTML prostřednictvím plain-text obsahu vznikne:
 <zprava pdk="...">
    <obsah>
          <row .../>
        <row .../>
        ...
    </obsah>
</zprava>

Každý relevantní, neprázdný HTML řádek se převede na jeden element <row/>. 
Uzly <zprava/> a <obsah/> se tvoří šablonou pomocnou nebo v akci a uzly <row/> pak pomocí 
textToRowNodes
.

Struktura výstupu  <row /> a význam atributů

Atribut Kdy se vytváří Popis
@label Pokud řádek obsahuje znak ":" (dvojtečku) Normalizovaný text před dvojtečkou.
@name Pokud existuje @label Normalizovaný „název pole“: malé znaky, ASCII, mezery → pomlčky. Bez diakritiky.
@value Pokud existuje @label Normalizovaný obsah za dvojtečkou.
@note Pokud řádek NEobsahuje „:“ Text řádku jako poznámka. Slouží i pro doplňující popisy k předchozím položkám.

Norma chování šablony

1. Každý neprázdný HTML řádek → plain-text

Šablona ignoruje čistě prázdné elementy po stripování HTML:
    bullet

    <div> </div>

    bullet

    prázdné <p>

    bullet

    nadbytečné separátory

2. Řádek obsahující „:“ → položka s label, name, value

V převodu plain-text to XML je důležitý obsah řádku, prázdné jsou ignorovány, řádky s dvojtečkou jsou brány jako klíč:hodnota.
Příklad zdrojového textu:
 Jméno: Jan
Vytvoří:
 <row label="Jméno" name="jmeno" value="Jan"/>

3. Normalizace textu

Probíhá:
    bullet

    trimování mezer

    bullet

    odstranění duplicitních whitespace

    bullet

    odstranění HTML entit

    bullet

    odebrání stylů, tříd, nested struktur

4. Syntéza @name

@name je generován algoritmem:
    bullet

    Lowercase

    bullet

    Odstranění diakritiky

    bullet

    Mezery → -

    bullet

    Jen [a-z0-9-]

Př.:
"Preferovaný termín návštěvy servisu" →  preferovany-termin-navstevy-servisu

5. Řádky bez dvojtečky → @note

Tyto se chápou jako:
    bullet

    samostatné sdělení

    bullet

    doplňující text k předchozí položce (např. u „Poznámka:“)

Příklad:
 Poznámka / doplnění:
První servis – aktuálně cca 37.000 km.
Transformace:
 <row label="Poznámka / doplnění" name="poznamka-_-doplneni"/>
<row note="První servis – aktuálně cca 37.000 km."/>

6. Více @note za sebou

Je zachováno pořadí, neprovádí se spojování.

7. Bloky typu tabulka

Tabulky se rozpadnou na jednotlivé logické řádky (buňky i celé řádky → vlastní <row/>).


Použití XSL šablony v akci

XSL šablona se typicky používá:
    bullet

    v akci typu TF_proc-run / transform

    bullet

    nebo v emailové akci (SMTP/IMAP) jako post-processing

    bullet

    nebo při generování strukturovaných dat z příloh

Struktura použití v akci ( transform):

 <action name="parse-html">
    <transform>
        <input select="/input/html"/>
        <stylesheet name="html-to-rows.xsl"/>
        <output target="/output/zprava"/>
    </transform>
</action>
Výstupem je již očekávaný XML strom <zprava/>.

Příklad: Výsledné XML

Tento výstup odpovídá transformaci obsahu obsaženého v souboru obsah.html (při standardní normalizaci) :
 <zprava pdk="454">
    <obsah>
        <row note="Potvrzení objednávky servisu."/>
        <row note="Dobrý den,"/>
        <row note="obdrželi jsme vaši objednávku servisu vozu ..."/>
        <row label="Vaše kontaktní údaje" name="vase-kontaktni-udaje"/>
        <row label="Jméno" name="jmeno" value="Josef"/>
        <row label="Příjmení" name="prijmeni" value="Novak"/>
        ...
    </obsah>
</zprava>

Implementační poznámky

Robustnost proti různému HTML

Šablona musí umět zpracovat:
    bullet

    <p>, <div>, <span>

    bullet

    seznamy <ul><li>

    bullet

    tabulky <table><tr><td>

    bullet

    inline HTML

Vše se převádí na čistý text v <row/>.

Zajištění konzistentního výstupu

Tento formát je ideální pro:
    bullet

    validaci (pole + hodnoty)

    bullet

    vybudování COMEX komponent (přehled emailových polí)

    bullet

    generování dokumentů FDT

    bullet

    napojení na CRM/servisní workflow