Créer un client d'interface Django pour une application Dialogflow

Dans cet atelier de programmation, vous apprendrez à créer une interface client Django afin de créer une expérience de conversation pour une application Dialogflow. Plus précisément, vous allez effectuer les opérations suivantes:

  • Téléchargez, configurez et exécutez le client d'interface Django.
  • Configurez le point de terminaison Dialogflow détecter d'intent à appeler à partir du client frontend de Django.
  • déployer l'application sur Google Cloud sur App Engine ;
  • Vérifiez si des invitations Agenda sont configurées pour chaque demande d'utilisateur.

Prerequisites

Avant de poursuivre, vous devez suivre les ateliers de programmation suivants:

  1. Créer un planificateur de rendez-vous avec Dialogflow
  2. Comprendre les entités dans Dialogflow
  3. Comprendre le traitement en intégrant Dialogflow à Agenda

Points abordés

  • Configurer et exécuter un client d'interface Django pour Dialogflow
  • Déployer le client d'interface Django sur Google Cloud sur App Engine
  • Tester une application Dialogflow à partir d'une interface personnalisée

Ce que vous allez faire

  • Vous allez configurer et exécuter un client d'interface Django pour Dialogflow.
  • Vous allez déployer le client d'interface Django sur Google Cloud sur App Engine.
  • Vous allez tester une application Dialogflow à partir de cette interface personnalisée.

Ce dont vous avez besoin

  • Connaissances de base en Python
  • Connaissances de base de Dialogflow

Vous allez utiliser l'expérience de conversation du planificateur de rendez-vous que vous avez créée précédemment et créer une interface personnalisée pour l'application. Vous allez créer l'interface avec Django, l'exécuter et la tester localement, puis la déployer sur App Engine.

L'utilisateur envoie une requête de rendez-vous via l'interface, qui appelle l'API Dialogflow DetectIntent pour configurer un rendez-vous à la date et l'heure demandées. Le traitement Dialogflow envoie ensuite une requête à Agenda pour définir le rendez-vous correspondant et renvoie une confirmation à l'utilisateur via Dialogflow.

Le résultat final ressemble à ceci:

  1. Clonez le dépôt sur votre ordinateur local en saisissant la commande suivante dans le terminal local de votre ordinateur:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. Accédez au répertoire qui contient le code. Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
cd Django-Dialogflow-Appointment-Scheduler

Une fois déployée, votre application utilise le proxy Cloud SQL qui est intégré à l'environnement standard App Engine. Ainsi, elle peut communiquer avec votre instance Cloud SQL. Toutefois, pour pouvoir tester votre application localement, vous devez installer et utiliser une copie locale du proxy Cloud SQL dans votre environnement de développement. Pour en savoir plus, consultez la page À propos du proxy Cloud SQL.

Pour effectuer des tâches d'administration de base sur votre instance Cloud SQL, vous pouvez utiliser le client Cloud SQL pour MySQL.

Installer le proxy Cloud SQL

Téléchargez et installez le proxy Cloud SQL. Le proxy Cloud SQL sert à se connecter à votre instance Cloud SQL lors de son exécution locale.

Téléchargez le proxy.

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

Rendez le proxy exécutable.

chmod +x cloud_sql_proxy

Créer une instance Cloud SQL

  1. Créez une instance Cloud SQL pour MySQL de deuxième génération. Nommez l'instance "polls-instance" ou quelque chose de similaire. L'opération peut prendre quelques minutes. Une fois prête, elle doit apparaître dans la liste des instances.
  2. Utilisez l'outil gcloud pour exécuter la commande suivante, où [YOUR_INSTANCE_NAME] représente le nom de votre instance. Notez la valeur affichée pour le nom de connexion de l'instance pour l'étape suivante, qui est au format [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

Vous pouvez également cliquer sur l'instance pour afficher le nom de connexion de l'instance.

Initialiser votre instance Cloud SQL

Démarrez le proxy Cloud SQL en utilisant le nom de connexion de l'instance de l'étape précédente. Remplacez [YOUR_INSTANCE_CONNECTION_NAME] par la valeur que vous avez enregistrée à l'étape précédente. Une connexion est établie entre votre ordinateur local et votre instance à des fins de test local. Continuez à exécuter le proxy Cloud SQL pendant que vous testez votre application en local.

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

Ensuite, créez un utilisateur et une base de données Cloud SQL.

  1. Créez une base de données à l'aide de Google Cloud Console pour votre instance Cloud SQL nommée polls-instance. Par exemple, vous pouvez saisir "polls" comme nom.
  2. Créez un compte utilisateur nommé polls-instance pour votre instance Cloud SQL à l'aide de Cloud Console.

Configurer les paramètres de base de données

  1. Ouvrez mysite/settings.py pour y apporter des modifications.
  2. À deux endroits différents, remplacez [YOUR-USERNAME] et [YOUR-PASSWORD] par le nom d'utilisateur et le mot de passe de la base de données que vous avez créés dans la section précédente. Cela permet de configurer la connexion à la base de données pour le déploiement App Engine et les tests locaux.
  3. À la ligne ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME', remplacez [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] par la valeur que vous avez enregistrée à la section précédente.
  4. Exécutez la commande suivante et copiez la valeur de connexion de l'instance générée pour l'étape suivante.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. Remplacez [YOUR-CONNECTION-NAME] par la valeur que vous avez enregistrée dans la section précédente.
  2. Remplacez [YOUR-DATABASE] par le nom que vous avez choisi dans la section précédente.
# [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. Enregistrez et fermez le fichier settings.py.
  1. Dans la console Dialogflow, cliquez sur . Dans l'onglet Général à côté de l'ID du projet, cliquez sur Google Cloud .
  2. Cliquez sur le menu de navigation ☰> API et services;> Identifiants.
  3. Cliquez sur Créer des identifiants, puis sur Compte de service.
  4. Dans Détails du compte de service, saisissez "appointment-scheduler" comme nom du compte de service, puis cliquez sur Create.

  1. Dans la case Autoriser ce compte de service à accéder au projet, cliquez sur Continuer pour l'ignorer.
  2. Dans la section Autoriser les utilisateurs à accéder à ce compte de service (facultatif), cliquez sur Créer une clé &gt, JSON et Créer.

Un fichier JSON est téléchargé sur votre ordinateur, dont vous avez besoin dans les sections de configuration suivantes.

  1. Dans le dossier de chat, remplacez AppointmentScheduler.json par le fichier JSON de vos identifiants.
  2. Dans le dossier views.py du dossier de chat, remplacez GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" par l'ID de votre projet.

Pour exécuter l'application Django sur votre ordinateur local, vous devez configurer un environnement de développement Python, comprenant Python, pip et virtualenv. Pour obtenir des instructions, consultez la page Configurer un environnement de développement Python.

  1. Créez un environnement Python isolé et installez des dépendances :
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. Exécutez les migrations Django pour configurer vos modèles.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. Démarrez un serveur Web local :
python3 manage.py runserver
  1. Dans votre navigateur Web, saisissez http://localhost:8000/. Vous devriez voir une page Web simple, comme le montre cette capture d'écran:

Les exemples de pages d'application sont fournis par le serveur Web Django qui s'exécute sur votre ordinateur. Lorsque vous serez prêt à continuer, appuyez sur Control+S (Command+S sur Macintosh) pour arrêter le serveur Web local.

Exécutez la commande suivante pour déplacer tous les fichiers statiques de l'application dans le dossier spécifié par STATIC_ROOT dans settings.py :

python3 manage.py collectstatic

Importez l'application en exécutant la commande suivante dans le répertoire de l'application où se trouve le fichier app.yaml:

gcloud app deploy

Attendez le message vous informant que la mise à jour est terminée.

Dans votre navigateur Web, saisissez https://<your_project_id>.appspot.com.

Cette fois, votre requête est diffusée par un serveur Web exécuté dans l'environnement standard App Engine.

La commande app deploy déploie l'application comme décrit dans app.yaml et définit la nouvelle version déployée comme version par défaut, ce qui lui permet de diffuser tout le nouveau trafic.

Accédez à https://<your_project_id>.appspot.com, puis saisissez les informations suivantes:

  1. Utilisateur : "Prenez rendez-vous pour 15h demain matin."
  2. Le chatbot répond comme suit:

  1. Agenda réserve la réponse.

Si vous prévoyez de suivre d'autres ateliers de programmation Dialogflow, ignorez cette étape pour le moment et y revenir plus tard.

Supprimer l'agent Dialogflow

  1. Cliquez sur à côté de votre agent existant.
  1. Dans l'onglet Général, faites défiler l'écran vers le bas, puis cliquez sur Supprimer cet agent.
  2. Saisissez Delete (Supprimer) dans la fenêtre qui s'affiche, puis cliquez sur Delete (Supprimer).

Vous avez créé un chatbot dans Dialogflow et l'avez intégré à Agenda. Vous êtes désormais développeur de chatbots !

Learn more

Pour en savoir plus, consultez les ressources suivantes: