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:
- Tworzenie harmonogramu spotkań przy użyciu Dialogflow
- Omówienie encji w Dialogflow
- 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.
Efekt będzie wyglądał tak:
3. Pobieranie i uruchamianie aplikacji frontendowej
- Skopiuj repozytorium na komputer lokalny, wpisując w lokalnym terminalu to polecenie:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- 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
- 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.
- 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.
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.
- 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” .
- Za pomocą konsoli Cloud utwórz nowe konto użytkownika instancji Cloud SQL o nazwie polls-instance.
Skonfiguruj ustawienia 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 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. - W wierszu
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_NAME]'
zastąp[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
wartością zarejestrowaną w poprzedniej sekcji. - Uruchom poniższe polecenie i skopiuj wartość wyjściową nazwy połączenia instancji w następnym kroku.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
- Zastąp
[YOUR-CONNECTION-NAME]
wartością zarejestrowaną 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 plik
settings.py
.
5. Konfigurowanie konta usługi
- W konsoli Dialogflow kliknij . Na karcie Ogólne obok Identyfikatora projektu kliknij Google Cloud.
- Kliknij Menu nawigacyjne OK > Interfejsy API Usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Konto usługi.
- W polu Szczegóły konta usługi wpisz „appointment-scheduler”. w polu Nazwa konta usługi, a następnie kliknij Utwórz.
- W sekcji Przyznaj temu kontu usługi dostęp do projektu kliknij Dalej, aby go pominąć.
- 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.
6. Skonfiguruj punkt końcowy wykrywania intencji Dialogflow, który będzie wywoływany z aplikacji
- W folderze czatu 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.
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.
- 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 widoczna na tym zrzucie ekranu:
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:
- Użytkownik: „Umów się na spotkanie w sprawie rejestracji pojazdu na jutro na 15:00”.
- Reakcja czatbota jest taka:
- Kalendarz rezerwuje odpowiedź.
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
- Kliknij obok obecnego agenta.
- Na karcie General (Ogólne) przewiń w dół i kliknij Delete this Agent (Usuń tego agenta).
- 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:
- Integracja interfejsu Vision API z Dialogflow
- Przykładowy kod na stronie Dialogflow GitHub