[9/3 @ Sapporo] LINE BOOT AWARDS - Clova Skill Hands-on, gesponsert von der Java-Benutzergruppe Hokkaido (Java Do) Es war ein großer Erfolg. Vielen Dank an alle, die an der Veranstaltung mitgearbeitet haben.
Ich habe node.js in Hands-on verwendet, aber da JUG es mitgesponsert hat, habe ich Hands-on angehört und fast den gleichen Inhalt Clova CEK SDK Java erstellt. Es wurde mit -sdk-java implementiert.
Ich werde diesen Implementierungshinweis für diesen Artikel hinterlassen.
Hier wird die folgende Konfiguration realisiert.
[Sie] ----- [Clova] ----- [EchoHandler-Klasse auf Spring Boot]
Mr. Nobisukes So starten Sie die Entwicklung von Fähigkeiten mit Clova CEK ~ Starten Sie die Entwicklung mit Node.js ~ wird als praktischer Text verwendet / #% E4% BD% BF% E3% 81% 84% E5% A7% 8B% E3% 82% 81% E3% 81% AE% E7% 94% B3% E8% AB% 8B)
3.Anwendung zu starten
4.Erstellen eines Interaktionsmodells
Absichten und Slots
Slot
Absicht
5.Erstellen Sie ein interaktives Modell
Gehen Sie genauso vor.
Notieren Sie sich den hier erstellten Absichtsnamen "CurreySearchIntent", da dieser wichtig ist.
In Nobisukes Dokument ist die Clova-Fähigkeit in node.js implementiert, hier wird sie jedoch mit Java (Spring Boot) implementiert.
Greifen Sie auf Spring Initializr zu und legen Sie die folgenden Elemente fest.
2.0.4
clova_handson
Web
, Devtools
(einzeln hinzufügen) Laden Sie clova.zip mit der Schaltfläche "Projekt generieren" herunter.
Extrahieren Sie clova.zip und öffnen Sie es als Maven-Projekt in einer IDE (IntelliJ, Eclipse, Netbeans usw.).
Fügen Sie die Clova CEK SDK Java-Abhängigkeit zwischen <Abhängigkeiten>
~ </ Abhängigkeiten>
in pom.xml hinzu.
pom.xml
<dependencies>
(Weggelassen)
<dependency>
<groupId>com.linecorp.clova</groupId>
<artifactId>clova-extension-boot-web</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
application.properties
Legen Sie den Dateipfad des Servers fest, der Anforderungen von Clova akzeptiert.
application.properties
cek.api-path=/clova
Dadurch wird "https: // xxxx ... / clova" so eingestellt, dass POST-Anforderungen von Clova akzeptiert werden.
(Sie können bei Bedarf auch "cek.client.default-locale" usw. festlegen.)
Erstellen Sie eine Anforderungshandlerklasse, die POST-Anforderungen von Clova verarbeitet.
Diese Klasse ist Clova CEK SDK Java-Implementierungsbeispiel. Es wird unter Bezugnahme auf clova / extension / sample / hello / EchoHandler.java erstellt.
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("Finde einen Curry-Laden."))
.shouldEndSession(false)
.build();
}
@IntentMapping("CurreySearchIntent")
CEKResponse handleRepeatIntent(@SlotValue Optional<String> area) {
String outputSpeechText = area
.map(this::callbackShop)
.orElse("Ich konnte es nicht hören.");
return CEKResponse.builder()
.outputSpeech(text(outputSpeechText))
.shouldEndSession(false)
.build();
}
private String callbackShop(String inArea) {
switch (inArea) {
case "Akihabara":
return inArea + "Der empfohlene Curry-Laden ist Fujiyama Dragon Curry.";
case "Kanda":
return inArea + "Der empfohlene Curry-Laden ist Kyoeidou.";
default:
return "Es tut mir leid, ich habe es nicht verstanden.";
}
}
@IntentMapping("Clova.CancelIntent")
CEKResponse handleCancelIntent() {
return CEKResponse.builder()
.outputSpeech(text("Die Suche nach Curry-Läden endet."))
.shouldEndSession(true)
.build();
}
@SessionEndedMapping
CEKResponse handleSessionEnded() {
log.info("Die Suche nach Curry-Shops ist beendet.");
return CEKResponse.empty();
}
}
Ich werde einige wichtige Punkte erklären.
@ IntentMapping
ist der Prozess (Methode), der dem Namen der benutzerdefinierten Absicht / eingebaute Absicht entspricht. ) Ist eine Anmerkung.
In diesem Beispiel entspricht die Methode "handleCancelIntent ()" mit "@IntentMapping (Clova.CancelIntent)" der integrierten Absicht "Clova.CancelIntent", wenn die Fertigkeit abgebrochen (beendet) wird.
Außerdem entspricht die Methode "handleRepeatIntent (@SlotValue ...)" mit "@IntentMapping (CurreySearchIntent)" der Frage "Sagen Sie mir den Curry-Laden in Akihabara (Bereich)", die in der Vorbereitung erstellt wurde. Machen.
Das Argument "@ SlotValue" gibt an, dass der Wert des Slots das übergebene Argument ist. In diesem Beispiel wird der Wert des "area" -Slots von "Sag mir den Curry-Laden in Akihabara (area)" übergeben.
Die im Rückgabewert festgelegte CEKResponse-Klasse repräsentiert die Antwort von Clova. Instanziieren Sie mit dem Builder.
outputSpeech
ist die Zeichenfolge, auf die geantwortet werden soll. shouldEndSession
gibt an, ob die Fertigkeit mit true / false beendet werden soll.
@ LaunchMapping
ist eine Anmerkung zur entsprechenden Methode, wenn die Fertigkeit gestartet wird.
@ SessionEndedMapping
ist eine Anmerkung zur entsprechenden Methode am Ende der Fertigkeit.
Führen Sie die Spring Boot ClovaApplication-Klasse aus.
Nobisukes [So starten Sie die Entwicklung von Fähigkeiten mit Clova CEK ~ Starten Sie die Entwicklung mit 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.Bestätigen Sie die Kommunikation ohne Hosting mit ngrok
10.Tatsächlicher Maschinentest
Gehen Sie genauso vor (ngrok kann von der Homepage heruntergeladen und ausgeführt werden, ohne npm oder homebrew für macOS zu verwenden. Es ist auch gut).
Wenn Sie so kommunizieren können, sind Sie erfolgreich.
Genau wie line-bot-sdk-java, das einen Bot (Messaging-API) erstellt, verfügt Clova auch über Clova CEK SDK Java scheint es einfach zu machen, Clova-Kenntnisse in Java zu erstellen.
Der entsprechende Steckplatz (Sapporo, Chitose) und die Antwortnachricht sind unterschiedlich, aber der entsprechende Quellcode befindet sich in gishi-yama / ClovaSample. Es gibt.
Ich möchte weiterhin herausfordern, wie man mit Bot zusammenarbeitet.
** Werbung **
Praktisches Material zum Erstellen von LINE Bot mit Java ist jetzt verfügbar!
Recommended Posts