L'histoire de l'intégration de Dialogflow dans une application Java

introduction

Depuis que j'ai créé une application Java qui intègre Dialogflow, La procédure est brièvement résumée dans un mémorandum. En l'utilisant réellement, je pense que vous écrirez celui décrit ici + Swing etc.

Matériel de référence

Environnement de développement

De quoi as-tu besoin

Qu'est-ce que Dialogflow?

Dialogflow est une plate-forme de compréhension du langage naturel qui facilite la conception d'interfaces utilisateur conversationnelles et l'intégration dans des applications mobiles, des applications Web, des appareils, des robots, des systèmes de réponse vocale interactifs, etc. Source: Document officiel

Il est utilisé lors de l'analyse du langage naturel de Google Home et est utilisé par AWS Amazon Lex. Des systèmes similaires incluent / lex / ').


1. Projet GCP - Création du modèle d'interaction Dialogflow

1.1. Créer un projet Google Cloud Platform (GCP)

Créez un projet GCP pour connecter Dialogflow.

1.2. Dialogflow Création d'un modèle de dialogue

Créons maintenant un modèle d'interaction Dialogflow. Pour plus d'informations sur la création d'un modèle d'interaction, consultez la documentation officielle (https://cloud.google.com/dialogflow/docs/quick/build-agent'https://cloud.google.com/dialogflow/docs/quick/build) -agent ') et autres Il y a beaucoup d'informations sur le net, je vais donc les omettre.

Cette fois, la réponse "Hello Dialog flow!" Est renvoyée à l'énoncé "test". J'ai créé un modèle d'interaction de test.

1.3. Télécharger le fichier json pour l'authentification


2. Incorporez Dialogflow dans votre application Java

2.1. Créer un projet maven

2.2. Création d'un fichier de classe de package

Créez des packages et des fichiers de classe dans le projet Maven que vous avez créé.

Vous avez maintenant créé un package et une classe avec la méthode main dans votre projet Maven.

2.3. Édition de pom.xml

Réécrivez le fichier appelé pom.xml dans le projet Maven créé comme suit.

pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <!--groupId et artifactId...Remplacez-le par celui que vous avez entré lors de la création du projet Maven.-->
  <modelVersion>4.0.0</modelVersion>
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
  </properties>
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.2</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <finalName>...</finalName>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <!--de mainClass...Est le nom du package.Le nom de la classe.-->
              <mainClass>...</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>mark-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>libraries-bom</artifactId>
        <version>5.1.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-dialogflow</artifactId>
    </dependency>
  </dependencies>
</project>

Lorsque vous avez terminé, enregistrez et appliquez pom.xml.

UpdateMavenProject.gif

2.4. Modification des fichiers Java

Réécrivez le fichier de classe contenant la méthode principale créée précédemment comme suit.

Main.java


//Remplacez le nom du package comme il convient.
package tokyo.penguin_syan.dialogflowTest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import com.google.api.client.util.Maps;
import com.google.cloud.dialogflow.v2.DetectIntentResponse;
import com.google.cloud.dialogflow.v2.QueryInput;
import com.google.cloud.dialogflow.v2.QueryResult;
import com.google.cloud.dialogflow.v2.SessionName;
import com.google.cloud.dialogflow.v2.SessionsClient;
import com.google.cloud.dialogflow.v2.TextInput;
import com.google.cloud.dialogflow.v2.TextInput.Builder;

public class Main {

  public static void main(String[] args) {
    Scanner userInput = new Scanner(System.in);
    List<String> text = new ArrayList<String>();
    String input;
    Map<String, QueryResult> ret;
    //sessionId est un nombre approprié pour les tests.
    int sessionId = 123456789;

    do {
      System.out.print("\nYou  : ");
      input = userInput.next();
      if(input.equals("exit"))
        System.exit(0);

      text.add(input);
      ret = new HashMap<>();

      try {
        //Dans l'argument---Le projet est-il décrit dans le fichier json téléchargé_Veuillez remplacer par id.
        ret.putAll(detectIntentTexts(---,
            text, String.valueOf(sessionId++), "ja"));
        System.out.format("Agent: %s\n", ret.get(input).getFulfillmentText());
      } catch (Exception e) {
        e.printStackTrace();
      }

    }while(true);
  }

  public static Map<String, QueryResult> detectIntentTexts(
    String projectId,
    List<String> texts,
    String sessionId,
    String languageCode) throws Exception {
      Map<String, QueryResult> queryResults = Maps.newHashMap();
      try (SessionsClient sessionsClient = SessionsClient.create()) {
        SessionName session = SessionName.of(projectId, sessionId);
        for (String text : texts) {
          Builder textInput = TextInput.newBuilder().setText(text).setLanguageCode(languageCode);
          QueryInput queryInput = QueryInput.newBuilder().setText(textInput).build();
          DetectIntentResponse response = sessionsClient.detectIntent(session, queryInput);
          QueryResult queryResult = response.getQueryResult();
          queryResults.put(text, queryResult);
        }
      }
    return queryResults;
  }

}

2.5. Compiler


3. Exécuter

3.1. Création d'un fichier bat pour exécution

Créez un fichier bat pour exécution.

dialogflowTest_java.bat


@echo off

rem ---Entrez le nom du fichier json téléchargé pour l'authentification.
set GOOGLE_APPLICATION_CREDENTIALS=---.json
java -jar test-jar-with-dependencies.jar

Organisez la structure des répertoires pour l'exécution.

Structure du répertoire


.
├ test-jar-with-dependencies.jar
├ ---.json
└ dialogflowTest_java.bat

3.2. Exécution

Pour l'exécuter, démarrez le fichier bat créé. run.gif

J'ai pu l'exécuter en toute sécurité. ٩ (๑ • ㅂ •) ۶ Wow

Recommended Posts

L'histoire de l'intégration de Dialogflow dans une application Java
L'histoire de l'écriture de Java dans Emacs
Créons une application TODO en Java 5 Changer l'affichage de TODO
L'histoire de la comparaison de chaînes de bas niveau en Java
L'histoire de la fabrication d'un Othello ordinaire à Java
Une histoire sur le JDK à l'ère de Java 11
L'histoire de l'apprentissage de Java dans la première programmation
Mesurer la taille d'un dossier avec Java
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
[Édition Java] Histoire de la sérialisation
Histoire de créer une application de gestion de tâches avec Swing, Java
Une explication rapide des cinq types de statique Java
Faisons une application de calcul avec Java ~ Afficher la fenêtre de l'application
Obtenez le résultat de POST en Java
Créons une application TODO en Java 4 Implémentation de la fonction de publication
Créons une application TODO en Java 6 Implémentation de la fonction de recherche
Créons une application TODO en Java 8 Implémentation des fonctions d'édition
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Obtenez l'URL publique du fichier privé de Flickr en Java
Créons une application TODO avec Java 1 Brève explication de MVC
Augmenter dynamiquement le nombre d'éléments dans un tableau bidimensionnel Java (tableau multidimensionnel)
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
L'histoire de l'acquisition de Java Silver en deux mois de totalement inexpérimenté.
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
L'histoire selon laquelle le servlet n'a pas pu être chargé dans l'application Web Java
[Java] Gestion des Java Beans dans la chaîne de méthodes
À propos de l'idée des classes anonymes en Java
Ressentez le passage du temps même à Java
Un examen rapide de Java appris en classe
J'ai reçu les données du voyage (application agenda) en Java et j'ai essayé de les visualiser # 001
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Une histoire confirmant l'implémentation de la bibliothèque Java SendGrid lorsque la livraison du courrier échoue
Valider le jeton d'ID d'un utilisateur authentifié par AWS Cognito en Java
Obtenez l'URL de la destination de la redirection HTTP en Java
Un examen rapide de Java appris en classe part4
L'histoire de la création d'un proxy inverse avec ProxyServlet
L'histoire d'une exception d'état illégale dans Jetty.
Remarque sur l'initialisation des champs dans le didacticiel Java
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
[Java] Lors de l'écriture du source ... Mémorandum ①
Un examen rapide de Java appris en classe part3
Un examen rapide de Java appris en classe part2
Modifier la qualité de stockage des images JPEG en Java
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
Récapitulez les éléments supplémentaires de la classe Optional dans Java 9
L'histoire que .java est également construite dans Unity 2018
[Java] Informations entières des caractères du fichier texte acquises par la méthode read ()
Ecrire un test en mettant en œuvre l'histoire de M. Nabeats dans le monde avec du rubis
Rechercher un sous-ensemble en Java
A été effectué dans l'année de base de la semaine calendaire Java
Vérifiez la dépendance d'un artefact maven spécifique dans Coursier
20190803_Java & k8s sur Azure L'histoire d'aller au festival
Une histoire remplie des bases de Spring Boot (résolu)
Vérifier le fonctionnement de deux rôles avec une application de chat
L'histoire du lancement de données BLOB depuis EXCEL dans DBUnit
Vérifiez l'état des applications Java sans utiliser d'outils de surveillance
Activez la cellule A1 de chaque feuille de fichier Excel avec Java
Créer une méthode pour renvoyer le taux de taxe en Java
Définir le fuseau horaire de la JVM de votre application Azure
Comptez le nombre de chiffres après la virgule décimale en Java