Spam filtr přes Flow? Nějak to jde!
Základní informace
Čas od času se stane, že v rámci života Salesforce Consultanta musím řešit logiku emailová, směřování do systému a poslední dobou takové to, jaké emaily chceme obdržet. Spam je kategorie sama o sobě a měla by být řešena na straně providera emailových služeb.
Bohužel ne vždy tomu tak je a velice často slýcháme důvody, proč to nejde, kolik by to stálo času a podobně. Nechci tvrdit, že je to snadné, to asi určitě ne (ostatně nic o tom nevím). Každopádně si nemyslím, že by Salesforce měl dělat službu, co by měla být nastavena na úrovni mailboxu.
No a pak je tu výsledek. Člověk musí vymyslet jak splnit požadavek zákazníka, tedy:
- Nechci mít Spam emails v Salesforce, které mi vyskakují v Cases
- Vlastně je tam občas chci, ale nastav case na uzavřený a označ jako spam
- Vlastně ne všechno je spam, ale označ mi tak automatické odpovědi
- Chtěl bych to plně automatizované, agenti nemají čas klikat na tlačítko
Požadavků by se dalo vymyslet mnohem více, ale pojďme si ukázat jak pomocí Flow a Metadat splnit první dva body.
(Ano, je možné řešení udělat i jednodušeji, třeba ehm, hardcode email values ve Validation rule (bacha na limit!) či Case Assignment rules, ale to určitě není správně. Ostatně ani toto řešení není dokonalé a je ideální spíše na menší effort, ačkoliv mám ověřeno že ustojí i obří implementaci - 500+ agentů)
Metadata
Jelikož pracujeme s živými daty, potřebujeme je někde držet a v případě nutnosti s nimi i pracovat. Ideálním místem pro tyto účely jsou Metadata (Custom Metadata Object).
- Vytvoříme nový objekt, který nazveme "Spam Email"
- V zápětí vytvoříme nové pole, typu Email a s názvem shodným, tedy Email (či Spam Email - ostatně to je na vás). Nebo můžeme jednoduše použít pole "Name" a nevytvářet žádné další. V tomto případě volím pole nové, aby drželo správný datový typ
- Objekt máme připravený, stačí ho již jen naplnit potřebnými informacemi
- Klikneme na Manage "Spam Email" a vytvoříme nový záznam, kde zadáme jméno a email
...tím vše v metadatech končí
(Na objektu můžeme držet například pole "Active", které nás bude informovat o tom, jestli chceme skutečně tento email držet jako "spam" či nikoliv. Toto zabrání mazání a opětovnému přidávání do metadat. Samozřejmě je nutno to reflektovat ve Flow)
Flow
Pojďme se podívat na flow, které bude zodpovědné za řízení procesu. V rámci toho usecase řešíme pouze:
- Cases kde origin je email
- Chceme pracovat pouze při vytvoření case
- Máme dva rozdílné record types a chceme, aby pro ně byl proces rozdílný
(Níže popsaný návod na flow je pouze inspirativní základ)
- Pojďme si vytvořit nové flow typu "Record Trigger"
- Startovací objekt bude Case, flow se bude spouštět pouze při akci "Create"
- Vstupní podmínka je omezena pouze na Case.Origin="Email"
- Flow by mělo být optimalizované "Actions and Related Records"
- Uložíme
- Následně potřebujeme zjistit, jestli náš Spam email máme evidován v Metadatech
- Použijeme komponentu "Get Record"
- Objekt vybereme "Spam email"
- Vstupní podmínka bude "SpamEmail__c.Email__c" = "Case.SuppliedEmail" (či podmínky nakombinujeme)
- Jelikož pracujeme se dvěma typy case, použijeme decision a budeme reagovat na Case Record Type
(Case record type je dynamicky přiřazen pomocí email-to-case na základě emailové adresy, ale jako hodnotu do decision můžeme použít cokoliv, co evidujeme na objektu case. Takže tedy i například "Subject->Contains->Automatická odpověď" či něco podobného.)
- Následně pokračujeme přímo k akcím, které chceme se záznamem provést
- Jedna větev (respektive jeden record type) je určen k přímému smazání a druhá automaticky případ uzavře
- Pro smazání použijeme komponentu "Delete Records" a jako "Records or Record Collection" použijeme "{!$Record}"
- Pro update případu vyhledáme komponentu "Update Records" a zadáme všechny potřebné informace, které má case po update obsahovat. Například případ uzavřít, vyplnit custom field Category na "SPAM" či podobně
- Uložíme a aktivujeme
- Hura testovat!
Závěr
Jak je popsáno nahoře, nejedná se o ideální řešení, ale funguje. Samozřejmě, jako každé flow, jako každá automatizace, má své limity. Při napadení může dojít k dosažení limitu a následnému nevalidnímu chování. Určitě se najde spousty z vás, které napadne lepší řešení, klidně se o něj podělte! info@salesforcestuff.com
Určitě je potřeba doporučeno hlídat si pořadí ve Flow Trigger Exploreru
Toto flow je základ, je možné jej rozšířit dle vlastního uvážení