Jak testować zewnętrzne API podczas pracy z botem?

Jak testować zewnętrzne API podczas pracy z botem

Praca z botami to nie tylko projektowanie rozmowy, ale także interakcja bota z naszym backendem – zapisywanie informacji do bazy, pobieranie ich, integracja z zewnętrznymi systemami czy odpytywanie różnego rodzaju usług. Zdarza się, że usługi, z którymi się bot komunikuje mają już stworzone API, ale dużo częściej musimy je sami (lub z pomocą programistów) zaimplementować. Platformy wspomagające budowanie chatbotów, np. Dialogflow, Chatfuel czy ManyChat umożliwiają integrację z zewnętrzną usługą, ale warunkiem jest publiczny dostęp do takiego endpoint’a (adres url) oraz SSL. Ale co możemy zrobić jeśli nie mamy jeszcze wdrożonej usługi lub nawet nie zaczęliśmy jej tworzyć, a chcielibyśmy jednocześnie nie blokować projektowania rozmowy bota? Dziś pokażę Wam 2 sposoby jak testować zewnętrzne API podczas pracy z botem.

 

Ngrok

Ngrok to narzędzie szerzej znane wśród programistów. Pozwala tymczasowo stworzyć publiczny, bezpieczny endpoint, który tuneluje requesty do naszej lokalnej maszyny. Kiedy może nam się to przydać?  Załóżmy, że tworzysz lokalnie API i uruchamiasz je na swoim komputerze. Co się wtedy dzieje? Możesz je odpytywać, sprawdzać, testować, ale możesz to zrobić tylko Ty – prawdopodobnie API wystawione jest na lokalnym serwerze, dostępnym pod adresem podobnym do tego: https://localhost:61282.

Chcemy jednak to API zintegrować z istniejącym botem (Dialogflow, Chatfuel lub inne narzędzie), a warunkiem integracji jest publicznie dostępny adres URL usługi. Jak możemy to zrobić? Z pomocą przychodzi nam właśnie Ngrok.

W pierwszej kolejności ściągamy programik ze strony: https://ngrok.com/ i rozpakowujemy go. Ngrok to aplikacja konsolowa więc uruchamiamy ją z linii komend następującą komendą:

ngrok http 61282

gdzie 61282 to port, pod którym wystawiona jest usługa lokalnie. Efekt?

Jak testować zewnętrzne API podczas pracy z botem

Widać na screenie, że ngrok upublicznił naszą usługę pod następującym URL’em – https://28d7097e.ngrok.io.

Dzięki temu możemy w tym momencie zintegrować naszego bota z usługą i przetestować jego działanie (W Dialogflow ten URL podajemy jako URL Fulfillmentu, a w Chatfuel jako URL JSON Api). 

Jak to zrobić pokażę Wam później.

Mockservice.io

Drugi scenariusz testowania integracji bota z zewnętrznym API odnosi się do sytuacji, gdy jeszcze nie zaczęliśmy implementacji usługi. W takim przypadku mamy dwie opcje:

  • przerywamy pracę nad botem do czasu, aż nie powstanie usługa
  • możemy zasymulować działanie usługi za pomocą jednego z dostępnym narzędzi

Ta druga opcja brzmi zdecydowanie lepiej i nie spowoduje przesunięcia pracy nad chatbotem. Osobny zespół/osoba może pracować nad usługą, a w tym czasie projektant bota może pracować nad implementacją rozmowy, używając wcześniej stworzonych mock-upów, nowotworzonego API.

Jednym z narzędzi, które coś takiego umożliwiają jest Mockservice.io, o którym pisałem już wcześniej. Dzięki niemu możemy w prosty sposób stworzyć tzw. endpoint, który będzie symulował naszą usługę i zwracał, wcześniej odpowiednio stworzoną odpowiedź.

Tworzenie takiego endpointa pokażę na przykładzie z dokumentacji Chatfuel, którą znajdziecie tutajJSON Api to plugin do Chatfuel’a, który umożliwia odpytanie zewnętrznego API o odpowiednio sformatowaną odpowiedź. Jeśli odpowiedź taka nadejdzie, Chatfuel potrafi ją zamienić na tekst, galerię, przyciski czy inne elementy dostępne w Messengerze. Aby Chatfuel potrafił przekonwertować odpowiedź na odpowiedni element, musi być ona odpowiednim JSON’em, których przykłady znajdziecie w ww. dokumentacji.

Na potrzeby artykułu, ja spróbuję zwrócić z naszego endpoint’a przykładowe przyciski.

Kroki jakie musicie wykonać to:

  • Logowanie/Rejestracja w Mockservice.io
  • Stworzenie nowego projektu
  • Stworzenie nowego endpoint’a:
    • Name: buttontest
    • Path: /buttontest
    • Http Method: GET

Jak testować zewnętrzne API podczas pracy z botem

Mamy już stworzony szkielet endpoint’a, więc pozostaje nam zdefiniować odpowiedź, jaką generować będzie ten endpoint. Scrollujemy ekran do sekcji Response, jako typ ustawiamy JSON i w polu Body wklejamy JSON’a z dokumentacji. Efekt powinien być mniej więcej taki:

Jak testować zewnętrzne API podczas pracy z botem

Po zapisaniu nasz endpoint powinien być już publiczny. Aby to sprawdzić skopiujcie jego URL i wklejcie do do przeglądarki. Jako odpowiedź powinniśmy otrzymać wcześniej wklejonego JSON’a.

Testowanie endpointa

Integracja z Chatfuel

Teraz pozostaje zintegrować nasze fake’owe API do Chatfuel. W tym celu logujemy się do naszego bota i dodajemy plugin JSON Api.

JSON Api

Wklejamy URL, który skopiowaliśmy z Mockservice i możemy już przetestować bota.

Test JSON'a

Podsumowanie

Dzisiejszy artykuł poświęcony był sposobom integracji i testowania bota z zewnętrznymi usługami. Jeden z nich, użycie Ngroka, przydać się może w przypadku, gdy jesteśmy na etapie implementacji API i chcemy ją przetestować w chatbotcie. Dzięki temu narzędziu jesteśmy w stanie stworzyć tunel, który pozwoli na publiczny dostęp do naszego komputera. Drugi sposób przyda się, gdy nie rozpoczęliśmy jeszcze tworzenia zewnętrznej usługi. Wtedy z pomocą przyjdzie nam Mockservice.io – dzięki, któremu stworzymy w kilka minut w pełni działające fake’owe endpointy, które zwracają zdefiniowane przez nas odpowiedzi. Takie endpointy możemy wykorzystać tymczasowo w chatbocie na etapie wczesnego projektowania lub prototypowania.