En este codelab, aprenderás a compilar un cliente de Django de frontend para crear una experiencia de conversación para una app de Dialogflow. Específicamente, harás lo siguiente:
- Descarga, configura y ejecuta el cliente de frontend de Django.
- Configura el extremo de detectIntent de Dialogflow para que se llame desde el cliente de frontend de Django.
- Implementa la app en Google Cloud con App Engine.
- Prueba si las invitaciones de Calendario se configuran según la solicitud del usuario.
Requisitos previos
Antes de continuar, debes completar los siguientes codelabs:
- Compila un programador de citas con Dialogflow
- Comprende las entidades en Dialogflow
- Comprende la satisfacción integrando Dialogflow con el Calendario
Qué aprenderás
- Cómo configurar y ejecutar un cliente de frontend de Django para Dialogflow
- Cómo implementar el cliente de frontend de Django en Google Cloud en App Engine
- Cómo probar una app de Dialogflow desde un frontend personalizado
Qué compilarás
- Configurarás y ejecutarás un cliente de frontend de Django para Dialogflow.
- Implementarás el cliente de frontend de Django en Google Cloud en App Engine.
- Probarás una app de Dialogflow desde esa interfaz personalizada.
Requisitos
- Conocimientos básicos de Python
- Conocimientos básicos de Dialogflow
Usarás la experiencia de conversación del Programador de citas que creaste anteriormente y crearás un frontend personalizado para la app. Compilarás el frontend con Django, lo ejecutarás y probarás de forma local, y lo implementarás en App Engine.
El usuario enviará una solicitud de cita a través del frontend, que llamará a la API de detectIntent de Dialogflow para programar una cita para la fecha y hora solicitadas. Luego, la entrega de Dialogflow enviará una solicitud al Calendario para establecer la cita correspondiente y devolver una confirmación al usuario a través de Dialogflow.
El resultado final se verá de la siguiente manera:
- Para clonar el repositorio en tu máquina local, escribe este comando en la terminal local de tu computadora:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- Cambia al directorio que contiene el código. De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
cd Django-Dialogflow-Appointment-Scheduler
Cuando se implementa, tu app usa el proxy de Cloud SQL integrado en el entorno estándar de App Engine para comunicarse con tu instancia de Cloud SQL. Sin embargo, para probar tu app de manera local, debes instalar y usar una copia local del proxy de Cloud SQL en tu entorno de desarrollo. Para obtener más información, consulta Acerca del proxy de Cloud SQL.
Para realizar tareas de administrador básicas en tu instancia de Cloud SQL, puedes usar el cliente de Cloud SQL para MySQL.
Instalar el proxy de Cloud SQL
Descarga y, luego, instala el proxy de Cloud SQL. El proxy de Cloud SQL se usa para conectarse a tu instancia de Cloud SQL cuando se ejecuta de manera local.
Descarga el proxy.
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
Haz que el proxy sea ejecutable.
chmod +x cloud_sql_proxy
Cree una instancia de Cloud SQL
- Crea una instancia de Cloud SQL para MySQL de segunda generación. Asigna a la instancia el nombre "polls-instance" o uno similar. Es posible que la instancia tarde algunos minutos en estar lista. Cuando esté lista, debería aparecer en la lista de instancias.
- Usa la herramienta de gcloud para ejecutar el siguiente comando en el que
[YOUR_INSTANCE_NAME]
representa el nombre de tu instancia. Toma nota del valor que se muestra para el nombre de conexión de la instancia para el siguiente paso, que se muestra en el formato[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
Como alternativa, puedes hacer clic en la instancia para ver el Nombre de conexión de la instancia.
Inicializa la instancia de Cloud SQL
Inicia el proxy de Cloud SQL con el nombre de conexión de la instancia del paso anterior. Reemplaza [YOUR_INSTANCE_CONNECTION_NAME]
por el valor que registraste en el paso anterior. Esto establece una conexión entre tu computadora local y tu instancia para realizar pruebas locales. Mantén el proxy de Cloud SQL en ejecución mientras pruebas tu app de forma local.
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
A continuación, crea un usuario y una base de datos de Cloud SQL nuevos.
- Crea una base de datos nueva con Google Cloud Console para tu instancia de Cloud SQL llamada polls-instance. Por ejemplo, puedes ingresar "Encuestas" como nombre.
- Crea una cuenta de usuario nueva con Cloud Console para tu instancia de Cloud SQL llamada polls-instance.
Configura la base de datos
- Abre
mysite/settings.py
para edición. - En dos lugares, reemplaza
[YOUR-USERNAME]
y[YOUR-PASSWORD]
por el nombre de usuario y la contraseña de la base de datos que creaste en la sección anterior. Esto ayuda a configurar la conexión a la base de datos para la implementación en App Engine y las pruebas locales. - En la línea que dice
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_NAME],'
, reemplaza[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
por el valor que registraste en la sección anterior. - Ejecuta el siguiente comando y copia el valor del nombre de la conexión de la instancia que obtuviste para el siguiente paso.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
- Reemplaza
[YOUR-CONNECTION-NAME]
por el valor que registraste en la sección anterior. - Reemplaza
[YOUR-DATABASE]
por el nombre que elegiste en la sección anterior.
# [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]
- Cierra y guarda
settings.py
.
- En la consola de Dialogflow, haz clic en
. En la pestaña General junto a ID del proyecto, haz clic en Google Cloud
.
- Haz clic en Menú de navegación ☰ > APIs y servicios > Credenciales.
- Haz clic en Crear credenciales > Cuenta de servicio.
- En Detalles de la cuenta de servicio, ingresa "appointment-scheduler" como el Nombre de la cuenta de servicio y, luego, haz clic en Crear.
- En la sección Otorga a esta cuenta de servicio acceso al proyecto, haz clic en Continuar para omitirla.
- En la sección Grant users access to this service account (optional), haz clic en Create Key > JSON > Create.
Se descargará un archivo JSON en tu computadora, que necesitarás en las siguientes secciones de configuración.
- En la carpeta de chat, reemplaza
AppointmentScheduler.json
por tu archivo JSON de credenciales. - En
views.py
de la carpeta de chat, cambiaGOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
por el ID de tu proyecto.
Para ejecutar la app de Django en tu computadora local, tendrás que configurar un entorno de desarrollo de Python que incluya Python, pip y virtualenv. Para obtener instrucciones, consulta Configura un entorno de desarrollo de Python.
- Crea un entorno aislado de Python y, luego, instala las dependencias:
virtualenv env source env/bin/activate pip install -r requirements.txt
- Ejecuta las migraciones de Django para configurar tus modelos.
python3 manage.py makemigrations python3 manage.py makemigrations polls python3 manage.py migrate
- Inicia un servidor web local.
python3 manage.py runserver
- En tu navegador web, ingresa http://localhost:8000/. Deberías ver una página web sencilla como la que se muestra en la siguiente captura de pantalla:
El servidor web de Django que se ejecuta en tu computadora proporciona las páginas de la app de muestra. Cuando quieras avanzar, presiona Control+S
(Command+S
en Macintosh) para detener el servidor web local.
Ejecuta el siguiente comando para mover todos los archivos estáticos de la app a la carpeta que especifica STATIC_ROOT
en settings.py
:
python3 manage.py collectstatic
Para subir la app, ejecuta el siguiente comando en el directorio de la app en el que se encuentra el archivo app.yaml
:
gcloud app deploy
Espera a que aparezca el mensaje que informa que la actualización se completó.
En tu navegador web, ingresa https://<your_project_id>.appspot.com.
Esta vez, un servidor web que se ejecuta en el entorno estándar de App Engine atiende la solicitud.
El comando app deploy
implementa la app como se describe en app.yaml
y establece la versión recién implementada como la versión predeterminada, lo que hace que entregue todo el tráfico nuevo.
Navega a https://<your_project_id>.appspot.com y, luego, ingresa lo siguiente:
- Usuario: "Programa una cita para el registro del vehículo mañana a las 3 p.m.".
- El chatbot responde de la siguiente manera:
- El Calendario reserva la respuesta.
Si planeas completar otros codelabs de Dialogflow, omite esta parte por ahora y vuelve a ella más adelante.
Borra el agente de Dialogflow
- Haz clic en
junto a tu agente existente.
- En la pestaña General, desplázate hasta la parte inferior y haz clic en Borrar este agente.
- Escribe Borrar en la ventana que aparece y haz clic en Borrar.
Creaste un chatbot en Dialogflow y lo integraste con el Calendario. Ya eres un desarrollador de chatbots.
Más información
Consulta los siguientes recursos para obtener más información:
- Integra la API de Vision con Dialogflow
- Muestras de código en la página de Dialogflow en GitHub