W tym ćwiczeniu z programowania dowiesz się, jak utworzyć klienta Django po stronie klienta, aby zapewnić interaktywną obsługę aplikacji Dialogflow. W szczególności wykonasz te czynności:
- Pobierz, skonfiguruj i uruchom klienta frontendowego Django.
- Skonfiguruj punkt końcowy detectIntent Dialogflow, aby można go było wywoływać z klienta frontendu Django.
- wdrożyć aplikację w Google Cloud w App Engine,
- Sprawdź, czy zaproszenia w Kalendarzu są konfigurowane zgodnie z żądaniem użytkownika.
Wymagania wstępne
Zanim przejdziesz dalej, musisz ukończyć te ćwiczenia:
- Tworzenie harmonogramu spotkań za pomocą Dialogflow
- Informacje o encjach w Dialogflow
- Realizacja zamówień dzięki integracji Dialogflow z Kalendarzem
Czego się nauczysz
- Konfigurowanie i uruchamianie klienta frontendowego Django dla Dialogflow
- Wdrażanie klienta frontendu Django w Google Cloud w App Engine
- Testowanie aplikacji Dialogflow z niestandardowego interfejsu
Co utworzysz
- Skonfigurujesz i uruchomisz klienta frontendu Django dla Dialogflow.
- Wdrożysz klienta frontendu Django w Google Cloud w App Engine.
- Będziesz testować aplikację Dialogflow z tego niestandardowego frontendu.
Czego potrzebujesz
- podstawowa znajomość języka Python,
- Podstawowa znajomość Dialogflow
Wykorzystasz utworzoną wcześniej funkcję konwersacyjną Harmonogram spotkań i stworzysz niestandardowy interfejs aplikacji. Zbudujesz go za pomocą Django, uruchomisz i przetestujesz lokalnie, a następnie wdrożysz w App Engine.
Użytkownik wyśle żądanie spotkania za pomocą interfejsu, który wywoła interfejs Dialogflow detectIntent API, aby umówić spotkanie na wybraną datę i godzinę. Realizacja Dialogflow wyśle wtedy do Kalendarza prośbę o ustawienie odpowiedniego spotkania i zwróci użytkownikowi potwierdzenie za pomocą Dialogflow.
Wynik końcowy będzie wyglądać tak:
- Sklonuj repozytorium na komputer lokalny, wpisując to polecenie w lokalnym terminalu komputera:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- Przejdź do katalogu zawierającego kod. Możesz też pobrać próbkę jako plik ZIP i ją rozpakować.
cd Django-Dialogflow-Appointment-Scheduler
Po wdrożeniu aplikacja używa serwera proxy Cloud SQL wbudowanego w środowisko standardowe App Engine do komunikacji z instancją Cloud SQL. Aby jednak przetestować aplikację lokalnie, musisz zainstalować i użyć lokalnej kopii serwera proxy Cloud SQL w środowisku programistycznym. Więcej informacji znajdziesz w artykule Informacje o serwerze proxy Cloud SQL.
Aby wykonywać podstawowe zadania administracyjne na instancji Cloud SQL, możesz użyć klienta Cloud SQL for MySQL.
Instalowanie Cloud SQL Proxy
Pobierz i zainstaluj serwer proxy Cloud SQL. Serwer proxy Cloud SQL służy do łączenia się z instancją Cloud SQL podczas uruchamiania lokalnego.
Pobierz serwer proxy.
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
Ustaw plik serwera proxy jako wykonywalny.
chmod +x cloud_sql_proxy
Tworzenie instancji Cloud SQL
- Utwórz instancję Cloud SQL for MySQL drugiej generacji. Nazwij instancję „polls-instance” lub podobnie. Przygotowanie instancji może potrwać kilka minut. Gdy będzie gotowa, powinna być widoczna na liście instancji.
- Użyj narzędzia gcloud, aby uruchomić to polecenie, gdzie
[YOUR_INSTANCE_NAME]
to nazwa instancji. Zapisz wartość wyświetlaną w przypadku nazwy połączenia instancji, która będzie potrzebna w następnym kroku. Jest ona podana 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.
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ą zapisaną w poprzednim kroku. Ustanawia to połączenie między komputerem lokalnym a instancją na potrzeby testów lokalnych. Podczas testowania aplikacji lokalnie serwer proxy Cloud SQL powinien być uruchomiony.
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
Następnie utwórz nowego użytkownika i bazę danych Cloud SQL.
- Utwórz nową bazę danych za pomocą konsoli Google Cloud dla instancji Cloud SQL o nazwie polls-instance. Możesz na przykład wpisać „ankiety”.
- Utwórz nowe konto użytkownika w konsoli Google Cloud dla instancji Cloud SQL o nazwie polls-instance.
Konfigurowanie ustawień bazy danych
- Otwórz plik
mysite/settings.py
do edycji. - W 2 miejscach zastąp
[YOUR-USERNAME]
i[YOUR-PASSWORD]
nazwą użytkownika i hasłem bazy danych utworzonymi w poprzedniej sekcji. Pomaga to skonfigurować połączenie z bazą danych na potrzeby wdrożenia w App Engine i testowania lokalnego. - W wierszu
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_NAME],'
zastąp[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
wartością zapisaną w poprzedniej sekcji. - Uruchom to polecenie i skopiuj wartość nazwy połączenia instancji, która pojawi się w danych wyjściowych. Będzie ona potrzebna w następnym kroku.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
- Zastąp
[YOUR-CONNECTION-NAME]
wartością zapisaną w poprzedniej sekcji. - 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]
- Zamknij i zapisz
settings.py
.
- W konsoli Dialogflow kliknij
. Na karcie Ogólne obok pozycji Identyfikator projektu kliknij Google Cloud
.
- Kliknij Menu nawigacyjne ☰ > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Konto usługi.
- W sekcji Szczegóły konta usługi wpisz „appointment-scheduler” jako Nazwę konta usługi, a następnie kliknij Utwórz.
- W sekcji Przyznaj temu kontu usługi dostęp do projektu kliknij Dalej, aby pominąć ten krok.
- 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, który będzie potrzebny w kolejnych sekcjach konfiguracji.
- W folderze chat zastąp
AppointmentScheduler.json
plikiem JSON z danymi logowania. - W pliku
views.py
w folderze czatu zmieńGOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
na identyfikator projektu.
Aby uruchomić aplikację Django na komputerze lokalnym, musisz skonfigurować środowisko programistyczne Pythona, w tym Python, pip i virtualenv. Instrukcje znajdziesz w artykule Konfigurowanie środowiska programistycznego w Pythonie.
- Utwórz izolowane środowisko Pythona i zainstaluj zależności:
virtualenv env source env/bin/activate pip install -r requirements.txt
- Uruchom migracje Django, aby skonfigurować modele.
python3 manage.py makemigrations python3 manage.py makemigrations polls python3 manage.py migrate
- Uruchom lokalny serwer WWW.
python3 manage.py runserver
- W przeglądarce wpisz http://localhost:8000/. Powinna wyświetlić się prosta strona internetowa, jak na tym zrzucie ekranu:
Strony aplikacji przykładowej są dostarczane przez serwer WWW Django działający na Twoim komputerze. Gdy wszystko będzie gotowe, naciśnij Control+S
(Command+S
na komputerze Macintosh), aby zatrzymać lokalny serwer WWW.
Uruchom to polecenie, aby przenieść wszystkie pliki statyczne aplikacji do folderu określonego przez STATIC_ROOT
w 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ą o zakończeniu aktualizacji.
W przeglądarce wpisz https://<your_project_id>.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ę zgodnie z opisem w app.yaml
i ustawia nowo wdrożoną wersję jako domyślną, co powoduje, że obsługuje ona cały nowy ruch.
Otwórz stronę https://<your_project_id>.appspot.com i wpisz:
- Użytkownik: „Umów mnie na jutro na godzinę 15:00 na rejestrację pojazdu”.
- Chatbot odpowie w ten sposób:
- Kalendarz zarezerwuje odpowiedź.
Jeśli planujesz ukończyć inne samouczki Dialogflow, na razie pomiń tę część i wróć do niej później.
Usuwanie agenta Dialogflow
- Kliknij
obok istniejącego agenta.
- Na karcie Ogólne przewiń do dołu i kliknij Usuń tego agenta.
- W wyświetlonym oknie wpisz Usuń i kliknij Usuń.
Czatbot został utworzony w Dialogflow i zintegrowany z Kalendarzem. Jesteś teraz deweloperem chatbotów.
Więcej informacji
Więcej informacji znajdziesz w tych materiałach:
- Integracja interfejsu Vision API z Dialogflow
- Przykłady kodu na stronie Dialogflow w GitHubie