[9/3 @ Sapporo] LINE BOOT AWARDS - Clova Skill Hands-on co-sponsorisé par le groupe d'utilisateurs Java Hokkaido (Java Do) est également assisté par des participants slapstick. C'était un grand succès. Merci à tous ceux qui ont coopéré à l'événement.
J'ai utilisé node.js dans Hands-on, mais depuis que JUG l'a co-sponsorisé, j'ai écouté Hands-on et j'ai fait presque le même contenu Clova CEK SDK Java Il a été implémenté avec -sdk-java).
Je laisserai cette note de mise en œuvre pour cet article.
Ici, la configuration suivante est réalisée.
[Vous] ----- [Clova] ----- [Classe EchoHandler sur Spring Boot]
M. Nobisuke Comment démarrer le développement des compétences avec Clova CEK ~ Démarrer le développement avec Node.js ~ utilisé comme texte pratique / #% E4% BD% BF% E3% 81% 84% E5% A7% 8B% E3% 82% 81% E3% 81% AE% E7% 94% B3% E8% AB% 8B)
3.Application à utiliser
4.Créer un modèle d'interaction
Intentions et créneaux horaires
fente
Intention
5.Créer un modèle interactif
Procédez de la même manière.
Le nom d'intention CurreySearchIntent
créé ici est important, alors notez-le.
Dans le document de Nobisuke, la compétence Clova est implémentée dans node.js, mais ici elle est implémentée en utilisant Java (Spring Boot).
Accédez à Spring Initializr et définissez les éléments suivants.
--Version de démarrage du printemps: 2.0.4
clova_handson
--Rechercher les dépendances: Web
, Devtools
(ajouter un par un) Téléchargez clova.zip avec le bouton Generate Project
.
Extrayez clova.zip et ouvrez-le en tant que projet Maven dans un IDE (IntelliJ, Eclipse, Netbeans, etc.).
Ajoutez la dépendance Java Clova CEK SDK entre <dependencies>
~ </ dependencies>
dans pom.xml,
pom.xml
<dependencies>
(Omis)
<dependency>
<groupId>com.linecorp.clova</groupId>
<artifactId>clova-extension-boot-web</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
application.properties
Définissez le chemin d'accès au fichier du serveur qui accepte les requêtes de Clova.
application.properties
cek.api-path=/clova
Cela définira https: // xxxx ... / clova
pour accepter les requêtes POST de Clova.
(Vous pouvez également définir cek.client.default-locale
etc. si nécessaire)
Créez une classe de gestionnaire de requêtes qui gère les requêtes POST de Clova.
Cette classe est [Exemple d'implémentation Java du SDK Clova CEK](https://github.com/line/clova-cek-sdk-java/blob/master/samples/echo/src/main/java/com/linecorp/ Il est fait en se référant à clova / extension / sample / hello / EchoHandler.java).
EchoHandler.java
package com.example.clova;
import com.linecorp.clova.extension.boot.handler.annotation.*;
import com.linecorp.clova.extension.boot.message.response.CEKResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Optional;
import static com.linecorp.clova.extension.boot.message.speech.OutputSpeech.text;
@CEKRequestHandler
public class EchoHandler {
private static final Logger log = LoggerFactory.getLogger(EchoHandler.class);
@LaunchMapping
CEKResponse handleLaunch() {
return CEKResponse.builder()
.outputSpeech(text("Trouvez une boutique de curry."))
.shouldEndSession(false)
.build();
}
@IntentMapping("CurreySearchIntent")
CEKResponse handleRepeatIntent(@SlotValue Optional<String> area) {
String outputSpeechText = area
.map(this::callbackShop)
.orElse("Je n'ai pas pu l'entendre.");
return CEKResponse.builder()
.outputSpeech(text(outputSpeechText))
.shouldEndSession(false)
.build();
}
private String callbackShop(String inArea) {
switch (inArea) {
case "Akihabara":
return inArea + "Le magasin de curry recommandé est Fujiyama Dragon Curry.";
case "Kanda":
return inArea + "Le magasin de curry recommandé est Kyoeidou.";
default:
return "Je suis désolé, je n'ai pas compris.";
}
}
@IntentMapping("Clova.CancelIntent")
CEKResponse handleCancelIntent() {
return CEKResponse.builder()
.outputSpeech(text("La recherche de boutiques de curry prendra fin."))
.shouldEndSession(true)
.build();
}
@SessionEndedMapping
CEKResponse handleSessionEnded() {
log.info("La compétence de recherche de magasin de curry est terminée.");
return CEKResponse.empty();
}
}
Je vais expliquer quelques points importants.
@ IntentMapping
est le processus (méthode) correspondant au nom d'intention personnalisée / d'intention intégrée nom. ) Est une annotation.
Dans cet exemple, la méthode handleCancelIntent ()
avec @IntentMapping (Clova.CancelIntent)
correspond à l'intention intégrée Clova.CancelIntent
lorsque la compétence est annulée (terminée).
De plus, la méthode handleRepeatIntent (@SlotValue ...)
with@IntentMapping (CurreySearchIntent)
correspond à la question" Dis-moi la boutique de curry à Akihabara (région) "créée lors de la préparation. Faire.
L'argument «@ SlotValue» indique que la valeur de l'emplacement est l'argument passé. Dans cet exemple, la valeur de la case ʻarea` de "Dites-moi le magasin de curry à Akihabara (région)" est passée.
La classe CEKResponse
définie dans la valeur de retour représente la réponse de Clova. Instanciez avec le constructeur.
ʻOutputSpeechest la chaîne à laquelle répondre.
shouldEndSession` indique si la compétence doit être terminée par true / false.
@ LaunchMapping
est une annotation donnée à la méthode correspondante lorsque la compétence est lancée.
@ SessionEndedMapping
est une annotation donnée à la méthode correspondante à la fin de la compétence.
Exécutez la classe Spring Boot ClovaApplication.
Nobisuke [Comment démarrer le développement des compétences avec Clova CEK ~ Démarrer le développement avec Node.js ~](https://dotstud.io/blog/clova-cek-nodejs-tutorial/#%E4%BD%BF % E3% 81% 84% E5% A7% 8B% E3% 82% 81% E3% 81% AE% E7% 94% B3% E8% AB% 8B)
7.Confirmer la communication sans hébergement avec ngrok
10.Test réel de la machine
Procédez de la même manière (ngrok peut être téléchargé et exécuté depuis le site d'accueil sans utiliser npm, ni homebrew pour macOS. C'est aussi bien).
Si vous pouvez communiquer ainsi, vous réussissez.
Tout comme line-bot-sdk-java, qui crée un Bot (Messaging API), Clova dispose également de [Clova CEK SDK Java]( Il semble que vous puissiez facilement créer des compétences Clova en Java en utilisant https://github.com/line/clova-cek-sdk-java).
Le slot correspondant (Sapporo, Chitose) et le message de réponse sont différents, mais le code source équivalent est placé dans gishi-yama / ClovaSample. Il y a.
Je voudrais continuer à remettre en question la manière de coopérer avec Bot.
** Publicité **
Le matériel pratique pour créer LINE Bot avec Java est maintenant disponible!