Tworzenie klienta Django frontendu dla aplikacji Dialogflow

1. Zanim zaczniesz

Z tego ćwiczenia w Codelabs dowiesz się, jak utworzyć klienta Django frontendu, aby utworzyć środowisko konwersacyjne w aplikacji Dialogflow. Przede wszystkim musisz wykonać te czynności:

  • Pobierz, skonfiguruj i uruchom klienta frontendu Django.
  • Skonfiguruj punkt końcowy wykrywania intencji Dialogflow, który będzie wywoływany z klienta frontendu Django.
  • wdrożyć aplikację w Google Cloud w App Engine,
  • Sprawdź, czy zaproszenia w Kalendarzu są konfigurowane na prośbę użytkownika.

Wymagania wstępne

Zanim przejdziesz dalej, musisz ukończyć te ćwiczenia z programowania:

  1. Tworzenie harmonogramu spotkań przy użyciu Dialogflow
  2. Omówienie encji w Dialogflow
  3. Informacje o realizacji przez integrację Dialogflow z Kalendarzem

Czego się nauczysz

  • Jak skonfigurować i uruchomić klienta frontendu Django dla Dialogflow
  • Jak wdrożyć klienta frontendu Django w Google Cloud w App Engine
  • Jak przetestować aplikację Dialogflow z wykorzystaniem niestandardowego frontendu

Co utworzysz

  • Skonfigurujesz i uruchomisz klienta frontendu Django na potrzeby Dialogflow.
  • Wdrożysz klienta frontendu Django w Google Cloud z użyciem App Engine.
  • Przetestujesz aplikację Dialogflow z tego niestandardowego frontendu.

Czego potrzebujesz

  • Podstawowa znajomość języka Python
  • Podstawowa znajomość interfejsu Dialogflow

2. Przegląd architektury

Użyjesz utworzonego wcześniej interfejsu rozmowy Harmonogram spotkań i utworzysz własny frontend aplikacji. Skompilujesz frontend w środowisku Django, uruchomisz go i przetestujesz lokalnie oraz wdrożysz w App Engine.

Użytkownik wyśle przez frontend prośbę o spotkanie, która wywoła interfejs Dialogflow DetectionIntent API, aby skonfigurować spotkanie w wybranym dniu i o wybranej godzinie. W ramach realizacji Dialogflow do Kalendarza zostanie wysłana prośba o ustawienie odpowiedniego spotkania i zwrócenie użytkownikowi potwierdzenia przez Dialogflow.

84515171be610d4.png

Efekt będzie wyglądał tak:

7146cd729c50f7c1.png

3. Pobieranie i uruchamianie aplikacji frontendowej

  1. Skopiuj repozytorium na komputer lokalny, wpisując w lokalnym terminalu to polecenie:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. Przejdź do katalogu zawierającego kod. Możesz też pobrać przykładowy plik jako plik ZIP i go rozpakować.
cd Django-Dialogflow-Appointment-Scheduler

4. Konfigurowanie środowiska lokalnego

Po wdrożeniu aplikacja do komunikacji z instancją Cloud SQL używa serwera proxy Cloud SQL wbudowanego w standardowe środowisko App Engine. Aby jednak przetestować aplikację lokalnie, musisz zainstalować lokalną kopię serwera proxy Cloud SQL i używać jej w środowisku programistycznym. Więcej informacji znajdziesz w artykule Informacje o serwerze proxy Cloud SQL.

Do wykonywania podstawowych zadań administracyjnych w instancji Cloud SQL możesz użyć klienta Cloud SQL for MySQL.

Instalowanie serwera proxy Cloud SQL

Pobierz i zainstaluj serwer proxy Cloud SQL. Serwer proxy Cloud SQL służy do nawiązywania połączenia z instancją Cloud SQL, gdy działasz lokalnie.

Pobierz serwer proxy.

curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64

Ustaw serwer proxy jako wykonywalny.

chmod +x cloud_sql_proxy

Tworzenie instancji Cloud SQL

  1. Tworzenie instancji Cloud SQL for MySQL drugiej generacji. Nazwij instancję „polls-instance” lub podobnym. Przygotowanie instancji może potrwać kilka minut. Gdy będzie gotowy, powinien być widoczny na liście instancji.
  2. Za pomocą narzędzia gcloud uruchom podane niżej polecenie, w którym [YOUR_INSTANCE_NAME] reprezentuje nazwę Twojej instancji. Zanotuj wartość wyświetlaną jako nazwę połączenia instancji w następnym kroku, która jest wyświetlana w formacie [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

Możesz też kliknąć instancję, aby wyświetlić nazwę połączenia instancji.

c11e94464bf4fcf8.png

Inicjowanie instancji Cloud SQL

Uruchom serwer proxy Cloud SQL, używając nazwy połączenia instancji z poprzedniego kroku. Zastąp [YOUR_INSTANCE_CONNECTION_NAME] wartością zarejestrowaną w poprzednim kroku. Nawiązuje to połączenie między komputerem lokalnym a instancją na potrzeby lokalnych testów. Podczas testowania aplikacji lokalnie nie wyłączaj Cloud SQL Proxy.

./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

Następnie utwórz nowego użytkownika i nową bazę danych Cloud SQL.

  1. Za pomocą konsoli Google Cloud utwórz nową bazę danych dla instancji Cloud SQL o nazwie polls-instance. Na przykład możesz wpisać „ankiety” . a3707ec9bc38d412.png
  2. Za pomocą konsoli Cloud utwórz nowe konto użytkownika instancji Cloud SQL o nazwie polls-instance. f4d098fca49cccff.png

Skonfiguruj ustawienia bazy danych

  1. Otwórz plik mysite/settings.py do edycji.
  2. W 2 miejscach zastąp [YOUR-USERNAME] i [YOUR-PASSWORD] nazwą użytkownika i hasłem do bazy danych utworzonymi w poprzedniej sekcji. Ułatwia to skonfigurowanie połączenia z bazą danych na potrzeby wdrażania App Engine i testów lokalnych.
  3. W wierszu ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]' zastąp [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] wartością zarejestrowaną w poprzedniej sekcji.
  4. Uruchom poniższe polecenie i skopiuj wartość wyjściową nazwy połączenia instancji w następnym kroku.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. Zastąp [YOUR-CONNECTION-NAME] wartością zarejestrowaną w poprzedniej sekcji.
  2. Zastąp [YOUR-DATABASE] nazwą wybraną w poprzedniej sekcji.
# [START db_setup]
if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]'
        }
    }
# [END db_setup]
  1. Zamknij i zapisz plik settings.py.

5. Konfigurowanie konta usługi

  1. W konsoli Dialogflow kliknij e8a0a7d752849e01.png. Na karcie Ogólne obok Identyfikatora projektu kliknij Google Clouda9c6ff6374afe489.png.
  2. Kliknij Menu nawigacyjne OK > Interfejsy API Usługi > Dane logowania.
  3. Kliknij Utwórz dane logowania > Konto usługi. 86f51af0e7886fdd.png
  4. W polu Szczegóły konta usługi wpisz „appointment-scheduler”. w polu Nazwa konta usługi, a następnie kliknij Utwórz.

845d25f3e07ff770.png

  1. W sekcji Przyznaj temu kontu usługi dostęp do projektu kliknij Dalej, aby go pominąć.
  2. W sekcji Przyznaj użytkownikom dostęp do tego konta usługi (opcjonalnie) kliknij Utwórz klucz > JSON > Utwórz.

Na komputer zostanie pobrany plik JSON potrzebny do konfiguracji w kolejnych sekcjach.

a424cec60144d707.png

6. Skonfiguruj punkt końcowy wykrywania intencji Dialogflow, który będzie wywoływany z aplikacji

  1. W folderze czatu zastąp AppointmentScheduler.json plikiem JSON z danymi logowania.
  2. W pliku views.py w folderze czatu zmień GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" na identyfikator projektu.

7. Kompilowanie i uruchamianie aplikacji lokalnie

Aby uruchomić aplikację Django na komputerze lokalnym, musisz skonfigurować środowisko programistyczne Pythona, w tym Python, pip i virtualenv. Odpowiednie instrukcje znajdziesz w artykule Konfigurowanie środowiska programistycznego w Pythonie.

  1. Utwórz izolowane środowisko Pythona i zainstaluj zależności:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. Uruchom migracje Django, aby skonfigurować modele.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. Uruchom lokalny serwer WWW.
python3 manage.py runserver
  1. W przeglądarce wpisz http://localhost:8000/. Powinna wyświetlić się prosta strona internetowa widoczna na tym zrzucie ekranu:

d40910969aa71020.png

Strony aplikacji przykładowych są dostarczane przez serwer WWW Django uruchomiony na Twoim komputerze. Gdy wszystko będzie gotowe, naciśnij Control+S (Command+S na Macu), aby zatrzymać lokalny serwer WWW.

8. Wdrażanie aplikacji w standardowym środowisku App Engine

Uruchom to polecenie, aby przenieść wszystkie pliki statyczne aplikacji do folderu określonego przez funkcję STATIC_ROOT w narzędziu settings.py:

python3 manage.py collectstatic

Prześlij aplikację, uruchamiając to polecenie w katalogu aplikacji, w którym znajduje się plik app.yaml:

gcloud app deploy

Poczekaj na komunikat z informacją, że aktualizacja została zakończona.

9. Testowanie klienta frontendu

W przeglądarce wpisz https://<identyfikator_projektu>.appspot.com.

Tym razem Twoje żądanie jest obsługiwane przez serwer WWW działający w standardowym środowisku App Engine.

Polecenie app deploy wdraża aplikację w sposób opisany w sekcji app.yaml i ustawia nowo wdrożoną wersję jako wersję domyślną, co powoduje, że obsługuje ona cały nowy ruch.

10. Produkcja

11. Aby wyświetlić treści w wersji produkcyjnej, zmień zmienną DEBUG na Fałsz w pliku mojawitryna/settings.py.

12. Testowanie czatbota

Otwórz stronę https://<identyfikator_projektu>.appspot.com i wpisz:

  1. Użytkownik: „Umów się na spotkanie w sprawie rejestracji pojazdu na jutro na 15:00”.
  2. Reakcja czatbota jest taka:

3b0abfec8f4ba279.png

  1. Kalendarz rezerwuje odpowiedź.

eb49089765b84fc6.png

13. Czyszczenie danych

Jeśli planujesz ukończyć inne ćwiczenia z programowania Dialogflow, na razie pomiń tę część i wróć do niej później.

Usuwanie agenta Dialogflow

  1. Kliknij e8a0a7d752849e01.png obok obecnego agenta.
  2. 520c1c6bb9f46ea6.png
  3. Na karcie General (Ogólne) przewiń w dół i kliknij Delete this Agent (Usuń tego agenta).
  4. W wyświetlonym oknie wpisz Usuń i kliknij Usuń.

14. Gratulacje

Udało Ci się utworzyć czatbota w Dialogflow i zintegrować go z Kalendarzem. Jesteś teraz czatbotem.

Więcej informacji

Aby dowiedzieć się więcej, zapoznaj się z tymi materiałami: