luktom.net
  • blog
  • kontakt
  • english





SmogBot – stan projektu po dwu tygodniach konkursu DSP2017

15 mar, 2017
Chatboty, Daj się poznać 2017
Brak komentarzy
Odsłony : 3850

Ostatnie wpisy dotyczyły głównie organizacji projektu i technologii użytej w projekcie SmogBota, dzisiaj pora na małe podsumowanie tego co wydarzyło się w projekcie w ciągu ostatnich kilkunastu dni, zapraszam :)

Zobaczmy, które założenia projektowe udało mi się już teraz zrealizować:

Musi integrować się z przynajmniej jednym źródłem danych o zanieczyszczeniu powietrza

Zrealizowane, obecnie korzystam z informacji z Głównego Inspektoratu Ochrony Środowiska. Na potrzeby pobierania tych danych stworzyłem bibliotekę kliencką, dostępna jest na GitHubie oraz NuGetcie.

Wnioski na tę chwilę: GIOS ma spore opóźnienie w aktualizacji danych ze stacji wojewódzkich i powiatowych, planuję w przyszłości dodać np. PIOŚ w Krakowie, aby dane były szybciej dostępne dla bota a co za tym idzie – aby mógł szybciej powiadamiać użytkowników o zmianach poziomów zanieczyszczeń. Konieczna będzie tutaj przebudowa bazy o uwzględnianie kilku źródeł – na razie nie komplikowałem sprawy i zrobiłem to najprościej jak się da.

Musi umożliwiać użytkownikowi sprawdzenie ostatnich przekroczeń norm zanieczyszczeń dla danego miasta

Zrealizowane, użytkownik na żądanie może zapytać bota o bieżący stan przekroczeń norm. Wygląda to tak (w Skype):

Tutaj wymagane są jeszcze szlify graficzne, np. prezentowanie obrazków dla danych stacji w zależności od tego jak bardzo złe jest powietrze w danej chwili.

Powinien zapamiętywać określone przez użytkownika miasto jako jego domyślne, aby przy następnych sprawdzeniach nie trzeba było go określać

Zrealizowane, w tym momencie przy pierwszym sprawdzeniu bot pyta o miasto i zapisuje je w usłudze stanu BotFramework (widok z emulatora):

Tutaj zmiany będzie wymagać miejsce przechowywania informacji o wybranym mieście – obecnie jest to usługa stanu oferowana przez BotFramework, docelowo będzie to baza danych SmogBota, zmiana ta jest konieczna w związku z wysyłaniem notyfikacji oraz ostrzeżeń – inne komponenty muszą znać wybrane przez użytkownika miasto, a tworzenie zależności tych komponentów od usługi stanu BotFramework jest niepotrzebną komplikacją.

Powinien oferować możliwość rozpoznawania nazw miast podanych w przypadkach innych niż mianownik

Tutaj miałem dość dużą zagwozdkę jak to zrobić. Oczywiście można wytoczyć działa w postaci full text search lub zintegrować się z jakimś api geolokalizacyjnym, natomiast – aby nie komplikować projektu na tym etapie zaimplementowałem „poor man’s fuzzy logic” – rozpoznawanie najdłuższych prefiksów nazw miast oraz pytania doprecyzowujące, jeśli dopasowań prefiksów jest kilka:

Działa to całkiem sprawnie, zwłaszcza, jeśli z zapytania oraz nazw miast pozbędziemy się polskich znaków, więc na tę chwilę nie planuję tego mechanizmu ulepszać.

Może oferować kilka wariantów szablonów odpowiedzi.

Zrealizowane, zaimplementowałem wygodne helpery, które pozwalają w osobnych klasach definiować zestawy odpowiedzi dla danej sytuacji.

Problem, jaki tutaj napotkałem to odmiana nazw miast w języku polskim. Otóż nie znalazłem żadnej biblioteki, która pomagałaby odmieniać nazwy miast w języku polskim, stąd wszystkie odpowiedzi zawierające nazwy miast trzeba pisać tak, aby w sposób naturalny wkomponowywały nazwę miasta w mianowniku do odpowiedzi.

Powinien być zaprojektowany jako rozwiązanie cloud native, powinien być zrealizowany w architekturze serverless

Tutaj niestety tylko częściowy sukces, gdyż samego BotFrameworka (a konkretnie BotBuildera) nie udało mi się uruchomić w ramach Azure Bot Service. Tym samym bot jest wykonany jako standardowa aplikacja ASP.NET MVC, hostowana w Azure Web App.

Dodatkowe usługi związane z botem (usługa pobierania danych o zanieczyszczeniu powietrza, usługa powiadomień użytkowników) zostały natomiast z sukcesem zrealizowane jako Azure Functions typu timer, a więc dla nich mamy spełnione założenie architektury typu serverless.

Co dalej?

Jadę na wakacje, nie będzie mnie do końca przyszłego tygodnia :P

A jeśli chodzi o projekt to pracuję obecnie nad uruchomieniem powiadomień o zadanych godzinach. Następne w planach są ostrzeżenia o przekroczeniu norm zanieczyszczenia, gdy tylko takowe zostaną zanotowane. W międzyczasie postaram się także zintegrować drugie źródło danych o zanieczyszczeniu.

Po ukończeniu powyższych podrasuję UX bota i udostępnię wersję testową dla Was do poklikania:)



Tagi :   chatbotydsp2017smogbot

Powiązane wpisy

  • Chatboty i sztuczna inteligencja – część 1: wprowadzenie

  • Chatboty i sztuczna inteligencja – część 2: podstawy Wit.ai

  • SmogBot – kilka dobrych praktyk z zakresu bezpieczeństwa bazy danych

  • SmogBot – stack technologiczny

  • Dodaj komentarz

    Click here to cancel reply

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>





    Łukasz Tomaszkiewicz

    Łukasz Tomaszkiewicz

    Pasjonat chmury, szczególnie AWSa, który nieustannie automatyzuje powtarzające się czynności i optymalizuje procesy, przy okazji wdrażając dobre praktyki dotyczące bezpieczeństwa. Jego szerokie doświadczenie w zakresie tworzenia oprogramowania, projektowania baz danych, a także wirtualizacji serwerów i zarządzania infrastrukturą w chmurze pozwala mu spojrzeć przekrojowo na współczesny stack technologiczny.

    W wolnym czasie fotograf, sporadycznie piszący blogger :) a także regularny prelegent na krakowskich grupach związanych z IT.

    Wyznawca Vim'a :)

    Kategorie

    • Ansible
    • AWS
    • C#
    • Chatboty
    • Cloud
    • Daj się poznać 2017
    • Docker
    • Inne
    • Linux
    • Open source
    • Organizacyjne
    • Prelekcje
    • Sieci komputerowe
    • SQL Server
    • Windows
    • Windows Server
    • Wirtualizacja

    Najczęściej czytane

    • Creating single node VSAN cluster
    • SQL Server – walidacja numerów PESEL i NIP
    • Konfiguracja serwera DHCP na routerach Cisco
    • Aktywacja routingu IP w Windows 7 / Windows Server 2008
    • Konwersja maszyn wirtualnych z ESXi do Hyper-V przy użyciu SCVMM 2012
    • Jak podłączyć program R do SQL Servera?

    Tagi

    .net ai ansible asp.net mvc aws aws cli bot builder bot framework c# centos certyfikaty chatbot chatboty cisco cmd docker dsp2017 esxi hyperv kontenery konteneryzacja linux mvc nlp openvpn plssug pobieranie powershell prelekcje rancher redhat router sieci smogbot sql server ssd ssl vmware vsphere windows windows mobile windows server wirtualizacja wit.ai wrzuta

    Copyright © 2006-2018 by Łukasz Tomaszkiewicz. Wszelkie prawa zastrzeżone