Skip to main content

Vytěžování leadu z emailu

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

  • Načtení vstupu e-mailu

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

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

  • Sjednocení zdrojů do jednoho textového bloku

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

removeHtmlTags

z additional-functions.xsl;

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

  • Normalizace textu

  • Odebrání okrajových mezer.

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

  • Rozbití na jednotlivé logické řádky.

  • Transformace pomocí XSL šablony

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

  • Rozlišení typů řádků:

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

  • note — pokud neobsahují „:“.

Použita šablona

textToRowNodes

z additional-functions.xsl;

  • Vytěžení obsahu leadu

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

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

  • <div> </div>

  • prázdné <p>

  • 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á:

  • trimování mezer

  • odstranění duplicitních whitespace

  • odstranění HTML entit

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

4. Syntéza @name

@name je generován algoritmem:

  • Lowercase

  • Odstranění diakritiky

  • Mezery → -

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

  • samostatné sdělení

  • 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á:

  • v akci typu TF_proc-run / transform

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

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

  • <p>, <div>, <span>

  • seznamy <ul><li>

  • tabulky <table><tr><td>

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

  • validaci (pole + hodnoty)

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

  • generování dokumentů FDT

  • napojení na CRM/servisní workflow