Spam filtr přes Flow? Nějak to jde!

03.03.2023

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

  1. Vytvoříme nový objekt, který nazveme "Spam Email"
  2. 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
  3. Objekt máme připravený, stačí ho již jen naplnit potřebnými informacemi
  4. 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í