Tworzenie chatbotów Facebook Messenger z wykorzystaniem pakietu BotMan
Według badania przeprowadzonego przez Oracle, aż 80% międzynarodowych firm deklaruje wprowadzenie chatbota do końca 2020 roku. W Polsce także coraz więcej biznesów z różnych segmentów decyduje się wykorzystać chatboty by usprawnić obsługę klienta. Ma to szereg zalet: chatbot jest dostępny dla klientów 24 na dobę 7 dni w tygodniu, dzięki niemu zespół obsługi klienta będzie mógł poświęcić więcej czasu konsumentom, o niestandardowych zapytaniach, a wszystkie typowe przypadki użycia mogą zostać zautomatyzowane, ku zadowoleniu obu stron.
Istnieje kilka opcji tworzenia chatbotów na platformę Facebook Messenger. Można je rozdzielić na dwie główne kategorie: do-it-yourself oraz programowalne. Podejście „DIY” do prostych chatbotów nadaje się świetnie, gdyż można „wyklikać” wszystkie pożądane scenariusze i nie potrzebujemy do tego zaawansowanej wiedzy programistycznej. Także świetnie nadają się one do przygotowywania prostych demo czy proof of concept. Najpopularniejsze serwisy tego typu to chatfuel.com, botfuel.com i botsociety.io.
W tym artykule chciałbym opowiedzieć o drugiej opcji z dwóch powodów: ma ona dużo większe możliwości, a także dlatego, że się w niej specjalizujemy.
Jak programujemy chatboty?
Najprościej rzecz ujmując - chatbota możemy porównać do systemu IVR, czyli dobrze znanych infolinii. Podłączamy nasz program do komunikatora. Słucha on wiadomości, które otrzymujemy i jeśli rozpozna wiadomość, do której obsługi został zaprojektowany, to odpowiednio odpowie. Oczywiście, jest to znacznie bardziej zaawansowany sposób komunikacji od infolinii, gdyż nie przyciskamy jedynie numerów, ale komunikujemy się słowem pisanym.
Na czym polega programowanie chatbota? Na pisaniu funkcji rozpoznawania konkretnych intencji użytkownika, a następnie odpowiedzi adekwatnie do tego. Żeby jednak komunikacja nie działała na zasadzie ping-ponga, lecz można było przeprowadzać bardziej złożone procesy komunikacyjne (np. złożenie zamówienia), stosuje się mechanizm konwersacji, czyli zawierania obsługi konkretnych intencji użytkownika w scenariusze. Dzięki temu podejściu jesteśmy w stanie reagować na te same zwroty użytkownika inaczej, zależnie od tego w jakim scenariuszu się znajdujemy.
Ostatnia faza tworzenia chatbota to jego podłączenie do komunikatora, by nasłuchiwał wiadomości od użytkowników i na nie odpowiadał. Trwa to nie dłużej niż 15 minut.
W czym napisać swojego chatbota?
Jest bardzo dużo języków programowania i narzędzi, które pozwalają tworzyć chatboty. W zasadzie wszystkie popularne języki programowania to umożliwiają – C#, PHP, JS, Python, Ruby, Swift czy Go. My na co dzień tworzymy rozwiązania internetowe w PHP, dlatego też naturalne było dla nas wykorzystanie rozwiązań stworzonych dla tego języka. I o jednym szczególnym chcę tu napisać.
Czym jest BotMan?
Jest to najbardziej popularne rozwiązanie do tworzenia chatbotów w PHP. Pakiet BotMan został stworzony na początku 2017 roku przez Marcela Pociota, jednego z najbardziej aktywnych twórców Open Source dla frameworka Laravel.
Pakiet Botman do tworzenia chatbotów we frameworku Laravel.
Botman od początku projektowany był jako rozwiązanie uniwersalne – można z niego korzystać również bez frameworka Laravel. Jest też uniwersalny w kontekście integracji, gdyż obsługuje – poza Messengerem — różne komunikatory, m.in. Skype, WeChat, Telegram, Amazon Alexa. Co ciekawe, pozwala również na posiadanie chatbota na swojej własnej stronie – przypomina to wtedy widget live-chatu.
BotMan widget do tworzenia chatbotów na stronie www.
Oczywiście istnieją inne podobne rozwiązania, ale BotMan wygląda na to najbardziej kompleksowe. Jest on stale utrzymywany i dzięki takim dodatkom jak Web Widget czy Playground (o którym wspomnę zaraz) tworzenie chatbotów stało się szybsze i łatwiejsze.
Napiszmy trochę kodu
BotMan ma bardzo dobrą dokumentację, która opisuje wszystkie jego możliwości i zastosowania, dlatego nie chciałbym za bardzo jej powielać. Pokażę w skrócie jak stworzyć nowy projekt i zaimplementować pierwszą prostą funkcjonalność.
composer global require "botman/installer"
composer create-project --prefer-dist botman/studio
php artisan serve
I już :) Nasz chatbot działa. Mamy możliwość przetestowania go na stronie. Jest on także gotowy by podłączyć go pod Messengera. Dla nas najważniejszy jest plik routes/botman.php, który wygląda tak:
hears('Hi', function ($bot) {
$bot->reply('Hello!');
});
$botman->hears('Start conversation',
App\Http\Controllers\BotManController::class.'@startConversation');
Najpierw tworzona jest instancja, która obsługuje chatbota. Potem prosimy BotMana, by nasłuchiwał słowo „Hi” i jeśli ono wystąpi, by odpisał „Hello”. Natomiast jeśli usłyszymy „Start conversation” – BotMan uruchomi konkretną metodę w podanym kontrolerze. W BotManie kontrolery służą do logicznego grupowania scenariuszy i odpowiedzi.
Skąd czerpać wiedzę o chatbotach?
Bardzo dużo informacji znajduje się w dokumentacji. BotMan posiada też swój kanał na Slacku (#BotMan), gdzie programiści wymieniają się wiedzą i rozwiązują problemy. Dostępne są również kursy w postaci screencastów, a także ebooki, np. ten i ten. Za wykupienie kursu w postaci screencastów (autorstwa Marcela, twórcy BotMana) dostaje się dostęp do interaktywnego edytora kodu online, który pozwoli na testowanie chatbota natychmiast w przeglądarce.
BotMan - testowanie bezpośrednio w przeglądarce.
Jeżeli chcesz dowiedzieć się znacznie więcej szczegółów dotyczących tematu tworzenia chatbotów - polecam również moje wystąpienie na Laravel Poznań Meetup o tworzeniu chatbotów w BotManie. Mówiłem tam także o specyfice Messengera i oferowanych kontrolkach.
Zachęcamy do subskrupcji naszego kanału na YouTube! :)
Czy warto tworzyć Chatboty w BotManie?
Jeśli dotarłeś do tego miejsca, to chyba wiesz już że tak :)
Jeśli jesteś programistą PHP, jest to świetne rozwiązanie, które oferuje te same możliwości co alternatywne rozwiązania w Pythonie, node.js czy Go. Dodatkowo rozwiązanie to cały czas jest rozwijane i wspierane, co jest ważne w kontekście tworzenia chatbotów w celach komercyjnych.
My na co dzień korzystamy z tego rozwiązania do tworzenia chatbotów dla nas i naszych klientów. Przewagą tego podejścia również w stosunku do DIY jest to, że możemy bez problemu informować za pomocą chatbota o dynamicznych danych (np. prognoza pogody, stan zamówienia czy o innych danych, które przechowujemy w bazie danych lub jesteśmy w stanie wyliczyć).
Mam nadzieję, że zachęciłem Cię do zainteresowania się chatbotami, w szczególności BotManem, w którym tworzenie chatbotów jest naprawdę proste i przyjemne.
Chcesz porozmawiać ze mną o chatbotach? Napisz do nas :)