Poslední měsíce na internetu a v oboru vývoje aplikací obzvlášť by se daly jednoduše shrnout níže uvedeným memem. Jako by každá společnost a každá služba už měla svého chatbota a vy ho teď možná chcete také. Ale otázkou je – opravdu ho potřebujete?
Hlavním účelem botů jakéhokoli druhu je automatizace všeho, co jde. Slovo chat potom může odkazovat na dvě věci. Buď že komunikace jako taková je předmětem automatizace, nebo odkazuje přímo na komunikační rozhraní.
Nicméně, všichni boti mají něco společného. Všichni totiž slouží k tomu, aby učinili nějakou akci nebo předali nějaké informace uživateli. Čím se liší je, jakým způsobem dokáží uživateli tyto informace doručit.
Budeme se zabývat tím nejběžnějším případem, který používá rozhraní chatu pro automatizaci úkolů nebo získávání informací bez toho, aby byl lidský faktor potřeba na obou stranách. Na té druhé je totiž místo člověka chatbot.
Jak to celé funguje v kontextu vývoje aplikací?
Nejprve potřebujete chatovací rozhraní. Pravděpodobně nejoblíbenější je Facebook Messenger nebo Viber. Nebo můžete vytvořit vlastní, které přidáte na své webové stránky.
Účelem je poskytnout příjemné uživatelské rozhraní pro psaní nebo čtení zpráv. Dalším účelem je také odesílání metadat o konverzaci jako například informace o uživateli, nebo přílohy jako obrázky či jiné související informace k platformě.
To je velmi užitečné nejen proto, že potom nemusíte vytvářet rozhraní jako takové, ale také pro získání nových uživatelů. Lidé tyto platformy znají a denně používají, znají jejich rozhraní a nemusí prohledávat internet, aby vašeho bota vůbec našli a mohli použít.
Takže je to nakonec bez práce?
Vůbec ne. Rozhraní vám jen dává možnost přijímat a odesílat zprávy uživatelům, nicméně veškerá použitá logika kolem vašeho bota vyžaduje hodně práce. Například ovládání, konverzace nebo interakce, to jsou věci, na které jste stále sami a musíte je implementovat.
Musíte mít server, který přijímá požadavky z rozhraní a zvládne je do rozhraní posílat zase zpátky. Je potřeba se také postarat o ukládání informací, které potřebujete pro obchodní záměry. Můžete použít libovolný programovací jazyk, který už využíváte pro vaše servery. Samozřejmě dnes již existuje spousta nástrojů pro node.js, které doporučujeme použít, protože jsou perfektní s asynchronním zpracováním požadavků. Další možností je použít software s otevřeným zdrojovým kódem, který už dnes zvládá spoustu věcí. Je vyvinut právě pro vytváření botů, jako je například Botpress.
Jaké konkrétní úmysly s chatb**otem máte?**
Nejdůležitějším aspektem všech botů je vždy jejich záměr. Jednodušeji řečeno to, co má umět. Pokud je totiž bot naprogramovaný pro ovládání osvětlení, budete mít hodně práce přemluvit ho, aby vám nastavil teplotu v obýváku. :) To ostatně platí i pro vývoj aplikací obecně.
V současné době jsou boti vytvářeni ze dvou hlavních důvodů. První je vykonování príkazů. Například nastavení teploty, objednání smoothie nebo rezervování stolu ve vaší oblíbené restauraci. Druhým případem použití je pro uživatele získávání takových informací, které jsou boti schopni snadno nalézt sami a není nutné do této činnosti zapojovat lidský faktor. Skvělým příkladem je třeba vyhledání programu kina nebo zjištění aktuálního stavu vaší zásilky.
Jak chatbot pozná, co po něm chci?
Tak tohle je nejdůležitější část celého "botového světa". Vedoucí technické společnosti už vyvíjejí NLP algoritmy (zpracování přirozeného jazyka), které mohou programátorům pomoci odhalit záměr a kontext zpráv uživatele. A dělají velké pokroky. Některé z nich jsou už pro programátory dokonce dostupné (wit.ai). Problém s těmito nástroji spočívá v tom, že většinou pracují pouze v angličtině a jiná jazyková podpora je spíše experimentální. Druhá věc je, že není úplně příjemné mít během konverzací spousty rozhodnutí, protože je pak obtížné rozšiřovat kapacity umělé inteligence.
Naštěstí existují ve vývoji aplikací jiná, jednodušší řešení, která jsou pro většinu případů vhodná. Pokud zvolíte jednodušší cestu, musíte ale počítat s tím, že nebudete využívat výhod NLP (určení entit a záměrů z textu), a místo toho vám zbyde pouze "přesná shoda" nebo práce s formáty, které počítač snadno rozpozná (např. oddělení čárkou/mezerou nebo předdefinovaný formát pro uživatele).
Prvním a nejjednodušším přístupem je bot, který provádí jednotlivé příkazy. Pokud jste se někdy setkali s nějakým rozhraním příkazového řádku při práci s počítačem, je to přesně to samé, jen místo toho, abyste zapisovali do "nerdské konzole", píšete si v Messengeru. Prostě napíšete příkaz, bot jej provede a výsledek vám vrátí zpátky.
Situace se komplikuje, pokud byste chtěli komplexnější příběhy, kde bot získává informace od uživatele krok za krokem – což více odpovídá rozhraní chatu/dialogu. Problém pak totiž je, že musíte sledovat konverzace a kontexty, abyste věděli, jak reagovat a co očekávat od uživatele. Můžete začít s jednoduchým if/else, ale postupně vám to způsobí nepořádek, chaos a nakonec katastrofu. Lepším řešením je použít nějaký druh rozhodovacího stromu, kde můžete specifikovat své storyboardy ve snadno editovatelném formátu, který lze také vizualizovat. Skvělým pomocníkem může být Alquist, který používá konečný automat k definování botova toku.
Jak mám začít s vlastním botem?
I když není zas tak složité vytvořit si vlastního bota, měli byste nejprve zvážit, zda je to opravdu to, co potřebujete. Pokud ano, musíte si dobře vybrat, která platforma a backend bude páteří a tváří bota. V neposlední řadě byste měli věnovat pozornost také výběru agentury, která má s vývojem chatbotů dostatek zkušeností. Pokud si stále ještě nejste jisti, mrkněte, jak probíhá vývoj aplikací u nás v Ackee. :)