Derzeit führen wir für die zugewiesenen Projekte eine LINE-Kooperation (LINE BOT) für Spring Boot durch. Ich fand den Inhalt interessant, deshalb habe ich ihn dieses Mal separat untersucht und implementiert.
LINE BOT ist ein beliebter Name für "LINE Messaging API" und eine API, die automatisch Nachrichten mit Benutzern austauschen kann. Die Hauptfunktionen sind wie folgt.
Funktion | Überblick |
---|---|
Push API | Möglichkeit, eine Nachricht ab BOT zu senden |
Reply API | Möglichkeit, eine Nachricht ausgehend von einer Nachricht des Benutzers zu senden |
・ STS (Spring Tool Suite) * Einzelpaketversion ・ JDK1.8 ・ Heroku
Um LINE BOT verwenden zu können, müssen Sie sich bei "[LINE Developers](https://developers.line.biz/ja/" LINE Developers ")" registrieren. Sie benötigen lediglich ein LINE-Konto.
Melden Sie sich mit Ihrem LINE-Konto an.
Geben Sie die Entwicklerinformationen ein (Entwicklername / E-Mail-Adresse).
Wenn es keine Probleme mit dem Eingabeinhalt gibt, erstellen Sie ein Konto.
Der Anbieter ist der Name des Dienstleisters (Firma / Person).
Geben Sie den Anbieternamen ein.
Wenn Sie mit den Eingabeinhalten zufrieden sind, erstellen Sie einen Anbieter.
Es gibt drei Kanäle: "LINE Login", "Message API" und "Clova Skill". Dieses Mal erstellen wir einen Kanal für "Message API".
Geben Sie die folgenden Anwendungsinformationen ein. ・ App-Symbolbild ·App Name ・ App-Beschreibung ・ Planen (verwenden Sie "Entwickler-Testversion", wenn Sie nur testen möchten) ・ Große Industrie ・ Kleinindustrie ・ Benachrichtigungs-E-Mail-Adresse (sofern nicht anders angegeben, geben Sie die E-Mail-Adresse bei der Registrierung eines Kontos an)
Wenn es keine Probleme mit dem Eingabeinhalt gibt, erstellen Sie einen Kanal.
\def\textlarge#1{%
{\rm\Large #1}
}
\def\textsmall#1{%
{\rm\scriptsize #1}
}
Überprüfen Sie diesmal die Antwort der folgenden Nachricht.
Botschaft | Überblick |
---|---|
<Bestätigungsverfahren>
Drücken Sie auf den vom roten Rahmen erstellten Kanal.
Übergang vom Link im roten Rahmen zum "LINE-Verwaltungsbildschirm".
Erstellen Sie eine Schlüsselwortantwortnachricht aus dem Nachrichtenmenü auf dem Bildschirm LINE-Verwaltung. Dieses Mal habe ich es mit "test" als Schlüsselwort erstellt.
Erstellen Sie eine automatische Antwortnachricht aus dem Nachrichtenmenü auf dem Bildschirm LINE-Verwaltung.
Überprüfen Sie tatsächlich die Antwort der Nachricht.
Die Vorbereitung ist lang geworden, aber das Hauptthema ist von hier. Implementieren Sie den LINE-Verknüpfungsteil von Spring Boot.
Dieses Mal verwenden wir Maven. Fügen Sie daher die folgende Abhängigkeit zu pom.xml hinzu.
pom.xml
<dependency>
<groupId>com.linecorp.bot</groupId>
<artifactId>line-bot-spring-boot</artifactId>
<version>2.0.0</version>
</dependency>
Fügen Sie der Eigenschaftendatei die folgenden Eigenschaften hinzu. "Channel-Token" und "Channel-Secret" werden in den Kanal-Grundeinstellungen des erstellten BOT beschrieben. In Bezug auf "Channel-Token" muss es erneut ausgestellt werden, da es nicht zum ersten Mal erstellt wurde.
application.yml
line:
bot:
channel-token:Zeichenfolge in der Spalte "Zugriffstoken (langfristig)"
channel-secret:Zeichenfolge in der Spalte "Channel Secret"
handler.path: /callback
Fügen Sie der Anwendungsklasse eine Verarbeitung hinzu, wenn Sie eine LINE-Nachricht empfangen. Beispiel für "[line-bot-sdk](https://github.com/line/line-bot-sdk-java/tree/master/line-bot-spring-boot" line-bot-sdk ")" Erstellen basierend auf. Es ist eine Spezifikation, die die von LINE gesendete Nachricht so zurückgibt, wie sie ist.
SpringBootResearchApplication.java
package spring.research;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.linecorp.bot.model.event.Event;
import com.linecorp.bot.model.event.MessageEvent;
import com.linecorp.bot.model.event.message.TextMessageContent;
import com.linecorp.bot.model.message.TextMessage;
import com.linecorp.bot.spring.boot.annotation.EventMapping;
import com.linecorp.bot.spring.boot.annotation.LineMessageHandler;
/**
*Anwendungsklasse
* @author s-tsuchida
*/
@SpringBootApplication
@LineMessageHandler
public class SpringBootResearchApplication {
public static void main(String[] args) {
final SpringApplication springApplication = new SpringApplication(SpringBootResearchApplication.class);
springApplication.run(args);
}
@EventMapping
public TextMessage handleTextMessageEvent(MessageEvent<TextMessageContent> event) {
System.out.println("event: " + event);
return new TextMessage(event.getMessage().getText());
}
@EventMapping
public void handleDefaultMessageEvent(Event event) {
System.out.println("event: " + event);
}
}
Stellen Sie nun die erstellte Anwendung in Heroku bereit und überprüfen Sie den Vorgang. Die Registrierungsmethode von Heroku usw. wurde unter der folgenden URL leicht verständlich erläutert. Bitte beachten Sie dies. ・ Details zum Erstellen des LINE-Bots ③ ~ LINE-Bot selbst erstellt (2/2)
Basierend auf der obigen Anwendung habe ich sie so bearbeitet, dass sie die Managementphilosophie und die Grundwerte des Unternehmens wiedergibt, für das ich arbeite. Wenn Sie die Details der Managementphilosophie erfahren möchten, beziehen Sie sich bitte auf die folgende URL. ・ Ienter Co., Ltd.
SpringBootResearchApplication.java
package spring.research;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.linecorp.bot.model.event.Event;
import com.linecorp.bot.model.event.MessageEvent;
import com.linecorp.bot.model.event.message.TextMessageContent;
import com.linecorp.bot.model.message.TextMessage;
import com.linecorp.bot.spring.boot.annotation.EventMapping;
import com.linecorp.bot.spring.boot.annotation.LineMessageHandler;
import spring.research.domain.service.line.LineService;
/**
*Hauptprogramm
* @author s-tsuchida
*/
@SpringBootApplication
@LineMessageHandler
public class SpringBootResearchApplication {
//LINE-Service
@Autowired
private LineService lineService;
public static void main(String[] args) {
final SpringApplication springApplication = new SpringApplication(SpringBootResearchApplication.class);
springApplication.run(args);
}
@EventMapping
public TextMessage handleTextMessageEvent(MessageEvent<TextMessageContent> event) {
System.out.println("event: " + event);
return new TextMessage(lineService.createResponseMessage(event.getMessage().getText()));
}
@EventMapping
public void handleDefaultMessageEvent(Event event) {
System.out.println("event: " + event);
}
}
LineService.java
package spring.research.domain.service.line;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
/**
*LINE-Service
* @author s-tsuchida
*/
@Component
public class LineService {
//Antwortnachricht
private static final String MISSION_MESSAGE = "Genieße die Welt";
private static final String PHILOSOPHY_MESSAGE = "Mit dem Ziel, ein vertrauenswürdiges und geliebtes Unternehmen zu sein\r\n Wir werden weiterhin unermüdliche Anstrengungen unternehmen.\r\n"
+ "einer.Arbeit geniessen\r\n"
+ "einer.Genießen Sie Wachstum\r\n"
+ "einer.Genieße die Herausforderung\r\n"
+ "einer.Genießen Sie den Service\r\n"
+ "einer.Genieße Dankbarkeit\r\n";
private static final String CORE_VALUE_01_MESSAGE = "1.Handeln Sie immer positiv";
private static final String CORE_VALUE_02_MESSAGE = "2.Lass uns alles hart machen";
private static final String CORE_VALUE_03_MESSAGE = "3.Lassen Sie uns die besten Manieren in Japan üben";
private static final String CORE_VALUE_04_MESSAGE = "4.NO.Machen wir 1";
private static final String CORE_VALUE_05_MESSAGE = "5.Verfolge Geschwindigkeit und gib Freude";
private static final String CORE_VALUE_06_MESSAGE = "6.Lassen Sie uns für alle Spannung aufbauen";
private static final String CORE_VALUE_07_MESSAGE = "7.Lassen Sie uns uns verbessern";
private static final String CORE_VALUE_08_MESSAGE = "8.Sei ehrlich und demütig";
private static final String CORE_VALUE_09_MESSAGE = "9.Bilden Sie ein familienähnliches Team";
private static final String CORE_VALUE_10_MESSAGE = "10.Denken Sie weiter stark über Ihre Träume und Hoffnungen nach und verwirklichen Sie sie";
private static final String CORE_VALUE_ALL_MESSAGE = CORE_VALUE_01_MESSAGE + "\r\n"
+ CORE_VALUE_02_MESSAGE + "\r\n"
+ CORE_VALUE_03_MESSAGE + "\r\n"
+ CORE_VALUE_04_MESSAGE + "\r\n"
+ CORE_VALUE_05_MESSAGE + "\r\n"
+ CORE_VALUE_06_MESSAGE + "\r\n"
+ CORE_VALUE_07_MESSAGE + "\r\n"
+ CORE_VALUE_08_MESSAGE + "\r\n"
+ CORE_VALUE_09_MESSAGE + "\r\n"
+ CORE_VALUE_10_MESSAGE + "\r\n";
//Nachricht Nicht zutreffend Nachricht
private static final String OTHER_MESSAGE = "Herzlich willkommen!\r\zu nSpringLineBot!";
//Nachricht MAP
private static final Map<String, String> MESSAGE_MAP = Collections.unmodifiableMap(new HashMap<String, String>(){
private static final long serialVersionUID = 1L;
{
//Mission
put("misson", MISSION_MESSAGE);
put("MISSION", MISSION_MESSAGE);
put("Mission", MISSION_MESSAGE);
put("Mission", MISSION_MESSAGE);
//Management-Philosophie
put("philosophy", PHILOSOPHY_MESSAGE);
put("PHILOSOPHY", PHILOSOPHY_MESSAGE);
put("Keieirinen", PHILOSOPHY_MESSAGE);
put("Management-Philosophie", PHILOSOPHY_MESSAGE);
//Kernwert 1
put("corevalue1", CORE_VALUE_01_MESSAGE);
put("COREVALUE1", CORE_VALUE_01_MESSAGE);
put("Koabaryu 1", CORE_VALUE_01_MESSAGE);
put("Kernwert 1", CORE_VALUE_01_MESSAGE);
//Kernwert 2
put("corevalue2", CORE_VALUE_02_MESSAGE);
put("COREVALUE2", CORE_VALUE_02_MESSAGE);
put("Koabaryu 2", CORE_VALUE_02_MESSAGE);
put("Kernwert 2", CORE_VALUE_02_MESSAGE);
//Kernwert 3
put("corevalue3", CORE_VALUE_03_MESSAGE);
put("COREVALUE3", CORE_VALUE_03_MESSAGE);
put("Koabaryu 3", CORE_VALUE_03_MESSAGE);
put("Kernwert 3", CORE_VALUE_03_MESSAGE);
//Kernwert 4
put("corevalue4", CORE_VALUE_04_MESSAGE);
put("COREVALUE4", CORE_VALUE_04_MESSAGE);
put("Koabaryu 4", CORE_VALUE_04_MESSAGE);
put("Kernwert 4", CORE_VALUE_04_MESSAGE);
//Kernwert 5
put("corevalue5", CORE_VALUE_05_MESSAGE);
put("COREVALUE5", CORE_VALUE_05_MESSAGE);
put("Koabaryu 5", CORE_VALUE_05_MESSAGE);
put("Kernwert 5", CORE_VALUE_05_MESSAGE);
//Kernwert 6
put("corevalue6", CORE_VALUE_06_MESSAGE);
put("COREVALUE6", CORE_VALUE_06_MESSAGE);
put("Koabaryu 6", CORE_VALUE_06_MESSAGE);
put("Kernwert 6", CORE_VALUE_06_MESSAGE);
//Kernwert 7
put("corevalue7", CORE_VALUE_07_MESSAGE);
put("COREVALUE7", CORE_VALUE_07_MESSAGE);
put("Koabaryu 7", CORE_VALUE_07_MESSAGE);
put("Kernwert 7", CORE_VALUE_07_MESSAGE);
//Kernwert 8
put("corevalue8", CORE_VALUE_08_MESSAGE);
put("COREVALUE8", CORE_VALUE_08_MESSAGE);
put("Koabaryu 8", CORE_VALUE_08_MESSAGE);
put("Kernwert 8", CORE_VALUE_08_MESSAGE);
//Kernwert 9
put("corevalue9", CORE_VALUE_09_MESSAGE);
put("COREVALUE9", CORE_VALUE_09_MESSAGE);
put("Koabaryu 9", CORE_VALUE_09_MESSAGE);
put("Kernwert 9", CORE_VALUE_09_MESSAGE);
//Kernwert 10
put("corevalue10", CORE_VALUE_10_MESSAGE);
put("COREVALUE10", CORE_VALUE_10_MESSAGE);
put("Koabaryu 10", CORE_VALUE_10_MESSAGE);
put("Kernwert 10", CORE_VALUE_10_MESSAGE);
//Alle Grundwerte
put("corevalue", CORE_VALUE_ALL_MESSAGE);
put("COREVALUE", CORE_VALUE_ALL_MESSAGE);
put("Kernwert", CORE_VALUE_ALL_MESSAGE);
put("Kernwert", CORE_VALUE_ALL_MESSAGE);
}
});
/**
*Gibt eine Antwortnachricht zurück, die auf der gesendeten LINE-Nachricht basiert
* @param sendMessage Gesendete LINE-Nachricht
* @Antwortnachricht zurückgeben
*/
public String createResponseMessage(String sendMessage) {
if(MESSAGE_MAP.containsKey(sendMessage)) {
//Wenn die gesendete LINE-Nachricht im MAP-Schlüssel vorhanden ist
return MESSAGE_MAP.get(sendMessage);
} else {
//Wenn die gesendete LINE-Nachricht im MAP-Schlüssel nicht vorhanden ist
return OTHER_MESSAGE;
}
}
}
Ich hatte nicht viel Erfahrung mit der Verknüpfung mit vorhandenen Diensten, daher fand ich es frisch und interessant. In Zukunft möchte ich versuchen, regelmäßig LINE-Nachrichten mit cron zu senden.
・ Oasobi Proguraming Diary ・ [LINE BOT mit Spring Boot und LINE Messaging API mit Heroku ausführen](http://kikutaro777.hatenablog.com/entry/2017/01/16/230122 "LINE BOT mit Spring Boot und LINE Messaging API erstellt" Mit Heroku ") ・ LINE-Bot, der vor dem Garbage Collection-Datum eine Warnung ausgibt