V pátek jsem o půlnoci dostal perfektní nápad. Mohl bych s AI zkusit vygenerovat live chat support appku. Takový ten widget v rohu stránky, na který když kliknete, tak si můžete psát s někým živým. Ve čtyři ráno jsem zjistil, že to byla opravdu hluboká králičí nora.

Řeč je o tomhle:

Widget

Kliknete na bublinku, dostanete chatovací okno. To je postavené na websocketech. Jeden konec má uživatel, druhý konec má prohlížeč, třetí konec appka v telefonu a všechny tyhle konce jsou propojené v backend službě sedící uprostřed. Ta přeposílá jak zprávy, tak stavy. Hrál jsem si občas s myšlenkou, že si to napíšu sám. To bylo ještě v době "před AI", ale je tam tolik detailů, že by to trvalo měsíce a nikdy se to nevrátilo.

Doba se posunula a tak jsem to zkusil. Nejsme totiž spokojení s existujícími komerčními ani open source chaty. Po několika letech se SmartSupp a Tawk.to mohu říct, že to jsou kvalitní služby a obzvláště Tawk.to mohu doporučit, protože fungoval slušně. Ďábel je samozřejmě v detailech.

Pro nás na Roští je kriticky důležitá jedna vlastnost a to notifikace. Když uživatel pošle první zprávu, není nic otravnějšího pro obě strany, než když podpora sedí u notebooku a nedozví se to.

Na SmartSupp se nám stávalo, že po probuzení notebooku se rozhraní ve webovém prohlížeči sice tvářilo připojené na backend ale nebylo, takže zprávy nechodily. Druhý problém byly notifikace na Androidu. Mám podezření, že si je řešili ve své režii a tak aplikace musela běžet stále na pozadí a udržovat TCP spojení na server. Pokud ji systém sestřelil, tak notifikace nepřišla. Zároveň nevíte, že se to stalo. Když appku otevřete a novou zprávu otestujete, tak všechno funguje.

Trochu otravné bylo, že ze strany podpory SmartSupp přišlo jen doporučení, že máme zakázat uspávání SmartSupp appky na telefonu a problém s prohlížečem se jim nestává a tak ho nemají jak vyřešit. Tím naše komunikace skončila. Důvěře nepomohla ani změna ceníku tak, že jsme najednou platili trojnásobek.

Tady doplním, že tohle je zkušenost cca dva až tři roky zpět a dnes může být všechno jinak.

Přešli jsme kvůli tomu na Tawk.to. Ten umí být i zadarmo, i když omezený a bez vašeho loga ve widgetu. Je to odladěná služba, hlavně v prohlížeči funguje spolehlivě. Android appka občas také nedoručí notifikaci a také je podezírám, že používají vlastní socket. Ale pokud funguje spolehlivě prohlížeč, tak to tolik nevadí.

Tawk má jiný problém a to bolestivé UX v rozhraní pro agenty. Obzvláště, pokud nevyužijete 80 % funkcí, které tam jsou, stejně jako my. Když nějakou službu používáte dva roky a doslova v ní každý den hledáte chat, který někdo otevřel a vy jste nestihli reagovat. Tawk má rozdělené aktivní chaty, ukončené konverzace a tickety. Konverzace s uživatelem pak proplouvá mezi těmito třemi stavy a nefunguje to úplně intuitivně.

Ale zpět k našemu novém chatu. Ten na Androidu řeší notifikace přes FCM, což znamená, že backend pošle notifikaci Googlu a ten ji doručí na telefon. Je to energeticky neefektivnější a zároveň nejspolehlivější cesta, jak notifikace na Androidu doručovat.

Rozhraní pro agenty na webu používá Push API a zároveň začne přehrávat velmi otravnou nahrávku "Help, Help, Help". Díky Push API se notifikace doručí i když není otevřený tab s chatem. Stačí mít spuštěný prohlížeč.

Push notifikace v prohlížeči

Backend nepoužívá žádné tickety, dokonce nemá implementovanou ani komunikaci přes email. Pokud uživatel pošle zprávu, vytvoří se konverzace a ta je vidět dokud ji agent neukončí. Pokud ji ukončí, uživatel o tom ví a pokud napíše novou zprávu, vytvoří se konverzace nová. Nestane se tak, že by někdo napsal a začne lov konverzace na třech různých místech.

Notifications

Takhle vypadá rozhraní pro agenty ve webovém prohlížeči:

SPA pro agenty

Tady je Android appka založená na frameworku Capacitor:

Android appka

Když se na to kouknu ekonomicky, tak ročně teď ušetříme necelých 5000 Kč za Tawk.to. Z SmartSupp bychom dávali cca 9000 Kč. Teď ale máme pod kontrolou nejdůležitější nástroj pro komunikaci se zákazníkem. Jsme schopni efektivně integrovat našeho vlastního AI bota a nejsme tlačení do služeb, které nevyužijeme. Příkladem je třeba nemožnost integrovat naši vlastní dokumentaci do Tawk.to, které nás nutilo vytvářet kopii v jejich vlastním nástroji.

Existující služby nutí vlastního AI bota. My si ale můžeme udělat jednoho na míru. Použít vhodný model, který nebude optimalizovaný na to, aby provozovatel ušetřil a můžeme ho vybavit vlastními nástroji a skilly. Ta optimalizace na cenu je vidět třeba v Jira, kde je propastný rozdíl mezi AI chatem přímo v Jiře a MCP Jira serverem třeba v Copilotu. Z té možnosti posunout tenhle projekt směrem, který potřebujeme, mám větší radost než z ušetřených pár tisíc ročně.