Создайте внешний клиент Django для приложения Dialogflow.

1. Прежде чем начать

В этой лабораторной работе вы научитесь создавать внешний клиент Django для создания диалогового интерфейса для приложения Dialogflow. В частности, вы сделаете следующее:

  • Загрузите, настройте и запустите внешний клиент Django.
  • Настройте конечную точку DialogflowDetectIntent для вызова из внешнего клиента Django.
  • Разверните приложение в Google Cloud на App Engine.
  • Проверьте, настраиваются ли приглашения Календаря по запросу пользователя.

Предварительные условия

Прежде чем продолжить, вам необходимо выполнить следующие лабораторные работы:

  1. Создайте планировщик встреч с помощью Dialogflow
  2. Понимание сущностей в Dialogflow
  3. Понимайте выполнение заказов, интегрируя Dialogflow с Календарем.

Что вы узнаете

  • Как настроить и запустить внешний клиент Django для Dialogflow
  • Как развернуть внешний клиент Django в Google Cloud на App Engine
  • Как протестировать приложение Dialogflow из пользовательского интерфейса

Что ты построишь

  • Вы настроите и запустите внешний клиент Django для Dialogflow.
  • Вы развернете внешний клиент Django в Google Cloud на App Engine.
  • Вы протестируете приложение Dialogflow из этого пользовательского интерфейса.

Что вам понадобится

  • Базовое понимание Python
  • Базовое понимание Dialogflow

2. Архитектурный обзор

Вы воспользуетесь ранее созданным интерфейсом беседы в Планировщике встреч и создадите собственный интерфейс для приложения. Вы создадите интерфейс с помощью Django, запустите и протестируете его локально, а затем развернете в App Engine.

Пользователь отправит запрос на встречу через интерфейс, который вызовет API DialogflowDetectIntent, чтобы назначить встречу на запрошенную дату и время. Затем выполнение Dialogflow отправит запрос в Календарь, чтобы назначить соответствующую встречу, и вернет подтверждение пользователю через Dialogflow.

84515171be610d4.png

Конечный результат будет выглядеть так:

7146cd729c50f7c1.png

3. Загрузите и запустите интерфейсное приложение.

  1. Клонируйте репозиторий на свой локальный компьютер, введя эту команду в локальном терминале вашего компьютера:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. Перейдите в каталог, содержащий код. Кроме того, вы можете загрузить образец в виде zip-архива и распаковать его.
cd Django-Dialogflow-Appointment-Scheduler

4. Настройте локальную среду

При развертывании ваше приложение использует прокси-сервер Cloud SQL, встроенный в стандартную среду App Engine, для связи с вашим экземпляром Cloud SQL. Однако для локального тестирования приложения необходимо установить и использовать локальную копию Cloud SQL Proxy в своей среде разработки. Дополнительную информацию см. в разделе О прокси-сервере Cloud SQL .

Для выполнения основных задач администрирования на вашем экземпляре Cloud SQL вы можете использовать клиент Cloud SQL для MySQL.

Установите прокси-сервер Cloud SQL.

Загрузите и установите прокси-сервер Cloud SQL. Прокси-сервер Cloud SQL используется для подключения к вашему экземпляру Cloud SQL при локальном запуске.

Загрузите прокси.

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

Сделайте прокси исполняемым.

chmod +x cloud_sql_proxy

Создайте экземпляр Cloud SQL

  1. Создайте экземпляр Cloud SQL для MySQL второго поколения. Назовите экземпляр «polls-instance» или что-то подобное. Подготовка экземпляра может занять несколько минут. После того, как он будет готов, он должен появиться в списке экземпляров.
  2. Используйте инструмент gcloud для запуска следующей команды, где [YOUR_INSTANCE_NAME] представляет имя вашего экземпляра. Запишите значение, указанное в качестве имени соединения экземпляра, для следующего шага, которое отображается в формате [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

Альтернативно вы можете нажать на экземпляр, чтобы увидеть имя подключения к экземпляру .

c11e94464bf4fcf8.png

Инициализируйте экземпляр Cloud SQL

Запустите прокси-сервер Cloud SQL, используя имя подключения экземпляра из предыдущего шага. Замените [YOUR_INSTANCE_CONNECTION_NAME] значением, которое вы записали на предыдущем шаге. При этом будет установлено соединение вашего локального компьютера с вашим экземпляром для целей локального тестирования. Не отключайте прокси-сервер Cloud SQL во время локального тестирования приложения.

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

Затем создайте нового пользователя и базу данных Cloud SQL.

  1. Создайте новую базу данных с помощью Google Cloud Console для своего экземпляра Cloud SQL с именем polls-instance . Например, вы можете ввести в качестве имени «опросы». a3707ec9bc38d412.png
  2. Создайте новую учетную запись пользователя с помощью Cloud Console для своего экземпляра Cloud SQL с именем polls-instance . f4d098fca49cccff.png

Настройте параметры базы данных

  1. Откройте mysite/settings.py для редактирования.
  2. В двух местах замените [YOUR-USERNAME] и [YOUR-PASSWORD] именем пользователя и паролем базы данных, которые вы создали в предыдущем разделе. Это помогает настроить подключение к базе данных для развертывания App Engine и локального тестирования.
  3. В строке 'HOST': 'cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN CE_NAME] ' замените [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] на значение, которое вы записали в предыдущем разделе.
  4. Выполните следующую команду и скопируйте выведенное значение имени соединения экземпляра для следующего шага.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. Замените [YOUR-CONNECTION-NAME] значением, которое вы записали в предыдущем разделе.
  2. Замените [YOUR-DATABASE] на имя, которое вы выбрали в предыдущем разделе.
# [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. Закройте и сохраните settings.py .

5. Настройка сервисного аккаунта

  1. В консоли Dialogflow нажмите e8a0a7d752849e01.png . На вкладке «Общие» рядом с идентификатором проекта нажмите Google Cloud. a9c6ff6374afe489.png .
  2. Нажмите меню навигации ☰ > API и службы > Учетные данные .
  3. Нажмите Создать учетные данные > Учетная запись службы . 86f51af0e7886fdd.png
  4. В разделе «Сведения об учетной записи службы» введите «appointment-scheduler» в качестве имени учетной записи службы , затем нажмите « Создать» .

845d25f3e07ff770.png

  1. Там, где написано «Предоставить этому сервисному аккаунту доступ к проекту» , нажмите « Продолжить» , чтобы пропустить его.
  2. Там, где написано «Предоставить пользователям доступ к этой учетной записи службы (необязательно)» , нажмите «Создать ключ» > JSON > «Создать» .

На ваш компьютер будет загружен файл JSON, который понадобится вам в следующих разделах настройки.

а424cec60144d707.png

6. Настройте конечную точку DialogflowDetectIntent для вызова из приложения.

  1. В папке чата замените AppointmentScheduler.json файлом JSON ваших учетных данных.
  2. В views.py в папке чата измените GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" на идентификатор вашего проекта.

7. Создайте и запустите приложение локально.

Чтобы запустить приложение Django на локальном компьютере, вам необходимо настроить среду разработки Python, включая Python, pip и virtualenv. Инструкции см. в разделе «Настройка среды разработки Python» .

  1. Создайте изолированную среду Python и установите зависимости:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. Запустите миграцию Django, чтобы настроить свои модели.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. Запустите локальный веб-сервер.
python3 manage.py runserver
  1. В веб-браузере введите http://localhost:8000/ . Вы должны увидеть простую веб-страницу, как показано на следующем снимке экрана:

d40910969aa71020.png

Примеры страниц приложения доставляются веб-сервером Django, работающим на вашем компьютере. Когда вы будете готовы двигаться дальше, нажмите Control+S ( Command+S на Macintosh), чтобы остановить локальный веб-сервер.

8. Разверните приложение в стандартной среде App Engine.

Выполните следующую команду, чтобы переместить все статические файлы приложения в папку, указанную STATIC_ROOT в settings.py :

python3 manage.py collectstatic

Загрузите приложение, выполнив следующую команду в каталоге приложения, где находится файл app.yaml :

gcloud app deploy

Дождитесь сообщения, уведомляющего вас о завершении обновления.

9. Протестируйте внешний клиент

В веб-браузере введите https://<your_project_id>.appspot.com.

На этот раз ваш запрос обслуживается веб-сервером, работающим в стандартной среде App Engine.

Команда app deploy развертывает приложение, как описано в app.yaml , и устанавливает вновь развернутую версию в качестве версии по умолчанию, заставляя ее обслуживать весь новый трафик.

10. Производство

11. Когда вы будете готовы использовать свой контент в рабочей среде, измените переменную DEBUG на False в файле mysite/settings.py.

12. Проверьте своего чат-бота

Перейдите по адресу https://<your_project_id>.appspot.com и введите следующее:

  1. Пользователь: «Назначьте встречу для регистрации автомобиля завтра на 15:00».
  2. Чат-бот отвечает следующим образом:

3b0abfec8f4ba279.png

  1. Календарь записывает ответ.

eb49089765b84fc6.png

13. Очистка

Если вы планируете выполнить другие лабораторные работы по коду Dialogflow, пропустите эту часть и вернитесь к ней позже.

Удалить агент Dialogflow

  1. Нажмите e8a0a7d752849e01.png рядом с вашим существующим агентом.
  2. 520c1c6bb9f46ea6.png
  3. На вкладке «Общие» прокрутите страницу вниз и нажмите «Удалить этого агента» .
  4. Введите «Удалить» в появившемся окне и нажмите «Удалить» .

14. Поздравления

Вы создали чат-бота в Dialogflow и интегрировали его с Календарем. Теперь вы разработчик чат-бота!

Узнать больше

Чтобы узнать больше, посетите следующие ресурсы: