Praca w IT

Od czego powinieneś zacząć tworzenie chatbota? Cz.1

O chatbotach mówi się, że to “The Next Big Thing”. Stały się one ważnym punktem agend konferencji organizowanych przez Facebooka, Microsoft, Apple czy Google. Nic więc dziwnego, że developerzy bacznie się im przyglądają. Chatboty same się przecież nie napiszą i w niedługim czasie popyt na tego typu specjalizacje wzrośnie. Stąd warto zainteresować się nimi już dzisiaj. Jak stworzyć własnego chatbota?


Michał Pawełczyk. CTO w KODA Bots Front-end i back-end developer. Pasjonat UX, interfejsów i testowania oprogramowania. Łączy kodowanie z kreatywnym spojrzeniem na potrzeby użytkownika. Autor platformy KODA Bots. Tworzył projekty dla McDonald’s, Coty, K-MAG, Wedel czy PayU.


 

Czym jest chatbot i dlaczego stał się popularny?

Infografika przedstawiająca historię powstania i rozwoju sztucznej inteligencji | źródło: digitalintelligencetoday.com

Definicji chatbotów powstało wiele. W uproszczeniu są to aplikacje symulujące rozmowę z człowiekiem. I co ważne, nie są nowością. Eliza, pierwsza na świecie cyfrowa pani psycholog, świętuje w tym roku swoje 52. urodziny.

Skoro chatboty nie są wynalazkiem ostatnich dni, to dlaczego właśnie teraz są na topie komunikacyjnej machiny? Sztuczna inteligencja oraz zasięg odgrywają tu kluczową rolę. W ostatnim czasie obserwujemy gwałtowny rozwój “inteligentnych algorytmów”, które wraz ze wzrostem mocy obliczeniowej oraz zwiększoną dostępnością danych, pomagają nam w coraz to trudniejszych zagadnieniach. A komunikatory takie jak np. Messenger (1,2 mld użytkowników na świecie, 10 mln w Polsce), WeChat czy KiK, sprawiają, że chatboty stały się dostępne dla ogromnej ilości osób z całego świata. I nic nie zapowiada, by coś zmieniło się w tej kwestii. Bo ludzie odkryli interfejsy konwersacyjne na nowo. To tam czują się najlepiej. A chatboty traktują jak coś ciekawego i chętnie nawiązują z nimi kontakt, by sprawdzić co się za nimi kryje.

Gdzie szukać chatbotów?

Znajdziemy je najczęściej w dwóch miejscach. Na półce w domu, kiedy korzystamy z głosowego asystenta (Alexa Echo/Dot- Amazon, Google Home, Homepod-Apple) lub w swoim komputerze czy smartfonie, gdzie rozpoczynamy rozmowę z nimi przy pomocy wiadomości email/sms oraz wspomnianych komunikatorów typu Messenger, Skype, Kik, WeChat, Slack itd.

Jak działa chatbot?

Chatbot to nic innego jak aplikacja, która udostępnia swoje api komunikatorom — najczęściej przy pomocy protokołu http. A co za tym idzie, nie ma uniwersalnych języków, które są narzucone programiście mającym stworzyć chatbota, inaczej niż podczas programowania aplikacji mobilnych. Bez względu na to, czy lubisz języki skryptowe czy kompilowane, uwielbiasz klamry czy wcięcia, preferujesz tabulatury czy spacje, to jeśli w danej technologii będziesz w stanie napisać api “rest-owe”, napiszesz też chatbota.

Link URL do swojego api wraz z kluczem weryfikującym podajesz w panelu ustawień bota. W przypadku Messengera jest to strona konfiguracji aplikacji w developers.facebook.com. Bez względu na rodzaj komunikatora, wszystko zaczyna się od interakcji użytkownika. Poza podstawową funkcją, związaną z wysłaniem wiadomości, w zależności od platformy, możemy np. wysłać plik, kliknąć w przycisk lub udostępnić swoją lokalizację.

Później, informacja o tym zdarzeniu, trafia do naszej aplikacji przy pomocy zapytania http. Json, która mówi o tym, że użytkownik <PSID> wysłał do strony <PAGE_ID> wiadomość “Cześć”. W przypadku messengera wygląda to następująco:

{
"sender":{
"id":"<PSID>"
},
"recipient":{
"id":"<PAGE_ID>"
},
"timestamp":1458692752478,
"message":{
"mid":"<MID>", // id wiadomości
"text":"Cześć",
}
}

Dalej jest już tylko ciekawiej. Bo przetwarzamy wiadomość przy pomocy modułu do rozpoznawania tekstu. Przyjmijmy, że w naszym uproszczonym przykładzie korzystamy z wyrażeń regularnych, które wyszukują w tekście zdefiniowanych wcześniej słów kluczowych, pobranych z konfiguracji bota.

W razie potrzeby możemy również wysłać zapytanie do zewnętrznego api czy zapisać dane w sesji konkretnej osobie. Gdy mamy przygotowaną odpowiedź, skorzystamy z api (w tym przypadku Graph Api) do wysłania odpowiedzi.

curl -X POST -H "Content-Type: application/json" -d '{
"messaging_type": "RESPONSE",
"recipient": {
"id": "<PSID>"
},
"message": {
"text": "Cześć Michał, co tam słychać? :)”
}
}' "https://graph.facebook.com/v2.6/me/messages?access_token=<PAGE_ACCESS_TOKEN>"

Proces jest bardzo podobny dla wszystkich komunikatorów, jednak jak to zwykle bywa, diabeł tkwi w szczegółach.

Potrzebuję chatbota, który będzie dostępny wszędzie, damy radę?

Komunikatory znacząco się od siebie różnią. Nie tylko pod względem takich oczywistości jak struktura czy format danych, ale także rozbieżności w postaci i funkcji i interfejsów. Przykładowo Messenger pozwala na wysłanie lokalizacji, a na Skypie trzeba wpisać adres w wiadomości. Microsoft zauważył ten problem i go rozwiązał udostępniając Microsoft Bot Framework z SDK dla Node.js oraz C#, dzięki któremu w łatwy sposób da się zaprogramować uniwersalnego bota. Niemniej jak to często bywa podczas normalizacji, odbywa się to zawsze kosztem czegoś. Gdy skorzystamy z tego narzędzia, możemy się pożegnać z niektórymi funkcjami, które są dostępne tylko na danej platformie (w danym przykładzie będzie to funkcja lokalizacji).

Stąd jeśli chcemy napisać chatbota tylko na jeden komunikator, warto mieć na uwadze czy z czasem nie przydadzą się inne funkcje, których nie wspiera ten framework. Z tego względu, w KODA Bots poszliśmy krok dalej i stworzyliśmy autorskie rozwiązanie, które niweluje ten problem.

Z czym się zmierzysz?

Każda aplikacja wymaga przemyślenia kilku kluczowych spraw, które wraz z rozwojem mogą stwarzać problemy. Zanim rzucisz się w wir pracy w swoim ulubionym IDE, odpowiedz sobie na kilka pytań.

Jaki hosting wybrać?

To kluczowa sprawa, która może dotknąć Cię finansowo. Jeśli tworzysz chatbota dla zabawy, nie ma sensu, abyś płacił za jego utrzymanie. W tej sytuacji pomocną dłoń poda ci Heroku z jego planem darmowym. Wspiera popularne języki programowania więc na pewno wybierzesz coś dla siebie. Oprócz hostingu przyda ci się baza danych, gdzie przechowasz dane sesji użytkowników i konfigurację bota. Polecam Ci do tego NoSQL. Ale za bazę MongoDB u tego dostawcy już zapłacisz. Zaglądając do wyszukiwarki dowiesz się, że Firebase się sprawdza i w planie darmowym daje radę. Gdy jednak znajdziesz jakieś ukryte monety, przypomnij sobie, że Chatboty lubią Serverless.

Czy zrobiłem wszystko co mogłem w kwestii bezpieczeństwa?

Nie ma aplikacji w 100% bezpiecznej, jednak w tym przypadku masz małą przewagę. Chatbot jest “ukryty” pod danym komunikatorem. Co to znaczy? Adresu URL Twojej aplikacji nie widać publicznie, co może sprawić problemy osobie chcącej namieszać w Twoim rozwiązaniu. Niemniej pamiętaj, że to i tak nie daje Ci prawa do poczucia bezpieczeństwa. Stąd zwróć uwagę na:

  • HTTPS to konieczność, nie ma wymówki, certyfikaty są darmowe dzięki np. letsencrypt;
  • Gdy Twój chatbot korzysta z obrazków, podejrzenie adresu Twojej aplikacji przy pomocy inspektora w przeglądarce nie stanowi problemu (w przypadku webowych wersji komunikatora). Trzymaj zawsze takie pliki na innym serwerze, aby nie rezygnować z opisanej powyżej przewagi;
  • Sprawdzaj pochodzenie przychodzących zapytań. W każdym komunikatorze wygląda to inaczej. Zapoznaj się z dokumentacją jak robić to poprawnie. Gdy zechcesz umieścić swoje rozwiązanie na Messengerze, sprawdź tutaj jak tego dokonać;

Czy będę przetwarzał dane osobowe?

Został niecały miesiąc do wprowadzeniem dyrektywy Unii Europejskiej GDPR (General Data Protection Regulation). Strach przed zapowiedzianymi karami finansowymi unosi się w powietrzu. Kancelarie prawnicze prześcigają się w szkoleniach na ten temat. Nikt nie wie, w jakiej formie ustawa będzie uchwalona w Polsce (każdy kraj będzie miał swoją, która ma bazować na ogólnej). Tak wygląda sytuacja na początku maja 2018 roku. Możliwe, że czytasz ten tekst w czasie, gdy dyrektywa obowiązuje i wiele kwestii się wyjaśniło, ale już dzisiaj pamiętaj, że nawet jak stworzysz chatbota dla zabawy i udostępnisz go światu, musisz pamiętać o tej regulacji.

Nie ma jednak co panikować. Po prostu, przed jakimkolwiek “insertem” do bazy, pomyśl dwa razy, czy posiadane dane są ci do czegoś potrzebne. Messenger twórcom chatbotów udostępnia takie informacje:

  • Facebook Scoped ID (to podstawa; pozwala wysłać wiadomość konkretnemu użytkownikowi. Jest to klucz, dzięki któremu pobieramy informacje z bazy danych o konkretnym użytkowniku)
  • Imię (nie zapisuj, dana osobowa)
  • Nazwisko (nie zapisuj, dana osobowa)
  • URL do zdjęcia profilowego (nie zapisuj, dana osobowa)
  • Język (nie zapisuj)
  • Płeć (nie zapisuj).

Według rozporządzenia, każdy użytkownik ma prawo do informacji, jakie informacje są przechowywane na jego temat oraz do ich usunięcia. Stąd zaplanuj taką funkcję w swojej aplikacji.

By chatbot widniał publicznie na platformie Messenger, Twoja facebookowa aplikacja musi przejść weryfikację. Do tego niezbędna jest polityka prywatności, która musi zawierać takie informacje o tym:

  • jakie informację są przetwarzane;
  • kto je przetwarza;
  • dlaczego są zbierane;
  • jak długo będą przechowywane;
  • czy dane będą przekazywane firmom trzecim;
  • jak można pobrać swoje dane oraz je usunąć;

Zwróć także szczególną uwagę na zapisy logów aplikacji. Tam również mogą znaleźć się wrażliwe informacje, jak imiona, nazwiska, wiadomości wysłane i otrzymane.

Podsumowanie

Poznałeś właśnie podstawowe informacje dotyczące tego, jak stworzyć chatbota. W pierwszej części tego artykułu opisaliśmy sposób działania przykładowego chatbota, ale też problemy i wzywania, na które możesz napotkać pisząc swoją pierwszą aplikację tego typu. W drugiej części artykułu, odpowiem na takie pytania jak: co zrobić, żeby chatbot rozumiał pytania użytkowników, jak sprawić, by nigdy nie zamulał oraz jak przetestować chatbota.


Aktualizacja 11.05.2018: Opublikowaliśmy drugą część tego artykułu. Znajdziesz ją tutaj.

najwięcej ofert html

Redaktor naczelny w Just Geek IT

Od pięciu lat rozwija jeden z największych polskich portali contentowych dot. branży IT. Jest autorem formatu devdebat, w którym zderza opinie kilku ekspertów na temat wybranego zagadnienia. Od 10 lat pracuje zdalnie.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://geek.justjoin.it/czego-powinienes-zaczac-przygode-chatbotem-cz-1/" order_type="social" width="100%" count_of_comments="8" ]