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