Nous travaillons actuellement en coopération LINE (LINE BOT) sur Spring Boot pour les projets assignés. J'ai trouvé le contenu intéressant, alors je l'ai étudié et mis en œuvre séparément cette fois.
LINE BOT est un nom populaire pour "LINE Messaging API" et est une API qui peut échanger automatiquement des messages avec les utilisateurs. Les principales fonctions sont les suivantes.
une fonction | Aperçu |
---|---|
Push API | Possibilité d'envoyer un message à partir de BOT |
Reply API | Possibilité d'envoyer un message à partir d'un message de l'utilisateur |
・ STS (Spring Tool Suite) * Version package unique ・ JDK1.8 ・ Heroku
Pour utiliser LINE BOT, vous devez vous inscrire auprès de "[LINE Developers](https://developers.line.biz/ja/" LINE Developers ")". Tout ce dont vous avez besoin est un compte LINE.
<Procédure d'inscription>
Cliquez sur le bouton "Connexion" dans le cadre rouge.
Connectez-vous avec votre compte LINE.
Entrez les informations du développeur (nom du développeur / adresse e-mail).
S'il n'y a aucun problème avec le contenu d'entrée, créez un compte.
Le fournisseur est le nom du fournisseur de services (entreprise / particulier).
<Procédure de création>
Cliquez sur le bouton "Créer un nouveau fournisseur" dans le cadre rouge.
Entrez le nom du fournisseur.
Si vous êtes satisfait du contenu d'entrée, créez un fournisseur.
Il existe trois canaux, "Connexion en ligne", "API de message" et "Compétence Clova". Cette fois, nous allons créer un canal pour "Message API".
<Procédure de création>
Cliquez sur le bouton "Créer une chaîne" dans le cadre rouge.
Entrez les informations d'application suivantes. ・ Image de l'icône de l'application ·nom de l'application ・ Description de l'application ・ Planifier (utilisez "Developer Trial" si vous voulez juste tester) ・ Grande industrie ・ Petite industrie ・ Adresse e-mail de notification (sauf indication contraire, spécifiez l'adresse e-mail lors de l'enregistrement d'un compte)
S'il n'y a pas de problème avec le contenu d'entrée, créez un canal.
\def\textlarge#1{%
{\rm\Large #1}
}
\def\textsmall#1{%
{\rm\scriptsize #1}
}
Cette fois, vérifiez la réponse du message suivant.
message | Aperçu |
---|---|
<Procédure de confirmation>
Appuyez sur le canal créé par le cadre rouge.
Passez à «l'écran de gestion de LIGNE» à partir du lien dans le cadre rouge.
Créez un message de réponse par mot-clé à partir du menu des messages sur l'écran de gestion de LIGNE. Cette fois, je l'ai créé avec "test" comme mot-clé.
Créez un message de réponse automatique à partir du menu des messages sur l'écran de gestion LIGNE.
Vérifiez en fait la réponse du message.
La préparation est devenue longue, mais le sujet principal est d'ici. Implémentez la partie liaison LINE de Spring Boot.
Cette fois, nous utilisons Maven, alors ajoutez la dépendance suivante à pom.xml.
pom.xml
<dependency>
<groupId>com.linecorp.bot</groupId>
<artifactId>line-bot-spring-boot</artifactId>
<version>2.0.0</version>
</dependency>
Ajoutez les propriétés suivantes au fichier de propriétés. "Channel-token" et "channel-secret" sont décrits dans les paramètres de base du canal du BOT créé. Concernant le "channel-token", il est nécessaire de le réémettre car il n'a pas été créé pour la première fois.
application.yml
line:
bot:
channel-token:Chaîne de caractères dans la colonne "Jeton d'accès (long terme)"
channel-secret:Chaîne de caractères dans la colonne "Channel Secret"
handler.path: /callback
Ajoutez un traitement lors de la réception d'un message LINE à la classe d'application. Échantillon de "[line-bot-sdk](https://github.com/line/line-bot-sdk-java/tree/master/line-bot-spring-boot" line-bot-sdk ")" Créer basé sur. C'est une spécification qui renvoie le message envoyé par LINE tel quel.
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;
/**
*Classe d'application
* @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);
}
}
Maintenant, déployez l'application créée sur Heroku et vérifiez l'opération. La méthode d'enregistrement de Heroku etc. a été expliquée de manière simple à comprendre à l'URL suivante, veuillez donc vous y référer. ・ Détails de la création du bot LINE ③ ~ Création du bot LINE par vous-même (2/2)
Sur la base de l'application ci-dessus, je l'ai édité afin qu'il renvoie la philosophie de gestion et les valeurs fondamentales de l'entreprise pour laquelle je travaille. Si vous souhaitez connaître les détails de la philosophie de gestion, veuillez vous référer à l'URL suivante. ・ 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;
/**
*Programme principal
* @author s-tsuchida
*/
@SpringBootApplication
@LineMessageHandler
public class SpringBootResearchApplication {
//Service LINE
@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;
/**
*Service LINE
* @author s-tsuchida
*/
@Component
public class LineService {
//Message de réponse
private static final String MISSION_MESSAGE = "Profitez du monde";
private static final String PHILOSOPHY_MESSAGE = "Viser à être une entreprise de confiance et aimée\r\n Nous continuerons à déployer des efforts inlassables.\r\n"
+ "un.Profitez du travail\r\n"
+ "un.Profitez de la croissance\r\n"
+ "un.Profitez du défi\r\n"
+ "un.Profitez du service\r\n"
+ "un.Profitez de la gratitude\r\n";
private static final String CORE_VALUE_01_MESSAGE = "1.Agissez toujours positivement";
private static final String CORE_VALUE_02_MESSAGE = "2.Faisons tout dur";
private static final String CORE_VALUE_03_MESSAGE = "3.Pratiquons les meilleures manières au Japon";
private static final String CORE_VALUE_04_MESSAGE = "4.NO.Faisons 1";
private static final String CORE_VALUE_05_MESSAGE = "5.Poursuivre la vitesse et donner de la joie";
private static final String CORE_VALUE_06_MESSAGE = "6.Créons l'excitation pour tout le monde";
private static final String CORE_VALUE_07_MESSAGE = "7.Perfectionnons-nous";
private static final String CORE_VALUE_08_MESSAGE = "8.Soyez honnête et humble";
private static final String CORE_VALUE_09_MESSAGE = "9.Créer une équipe familiale";
private static final String CORE_VALUE_10_MESSAGE = "10.Continuez à penser fermement à vos rêves et espoirs et faites-en une réalité";
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";
//Message Non applicable Message
private static final String OTHER_MESSAGE = "Bienvenue!\r\à nSpringLineBot!";
//Message 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);
//Philosophie de gestion
put("philosophy", PHILOSOPHY_MESSAGE);
put("PHILOSOPHY", PHILOSOPHY_MESSAGE);
put("Keieirinen", PHILOSOPHY_MESSAGE);
put("Philosophie de gestion", PHILOSOPHY_MESSAGE);
//Valeur fondamentale 1
put("corevalue1", CORE_VALUE_01_MESSAGE);
put("COREVALUE1", CORE_VALUE_01_MESSAGE);
put("Koabaryu 1", CORE_VALUE_01_MESSAGE);
put("Valeur fondamentale 1", CORE_VALUE_01_MESSAGE);
//Valeur fondamentale 2
put("corevalue2", CORE_VALUE_02_MESSAGE);
put("COREVALUE2", CORE_VALUE_02_MESSAGE);
put("Koabaryu 2", CORE_VALUE_02_MESSAGE);
put("Valeur fondamentale 2", CORE_VALUE_02_MESSAGE);
//Valeur fondamentale 3
put("corevalue3", CORE_VALUE_03_MESSAGE);
put("COREVALUE3", CORE_VALUE_03_MESSAGE);
put("Koabaryu 3", CORE_VALUE_03_MESSAGE);
put("Valeur fondamentale 3", CORE_VALUE_03_MESSAGE);
//Valeur fondamentale 4
put("corevalue4", CORE_VALUE_04_MESSAGE);
put("COREVALUE4", CORE_VALUE_04_MESSAGE);
put("Koabaryu 4", CORE_VALUE_04_MESSAGE);
put("Valeur fondamentale 4", CORE_VALUE_04_MESSAGE);
//Valeur fondamentale 5
put("corevalue5", CORE_VALUE_05_MESSAGE);
put("COREVALUE5", CORE_VALUE_05_MESSAGE);
put("Koabaryu 5", CORE_VALUE_05_MESSAGE);
put("Valeur fondamentale 5", CORE_VALUE_05_MESSAGE);
//Valeur fondamentale 6
put("corevalue6", CORE_VALUE_06_MESSAGE);
put("COREVALUE6", CORE_VALUE_06_MESSAGE);
put("Koabaryu 6", CORE_VALUE_06_MESSAGE);
put("Valeur fondamentale 6", CORE_VALUE_06_MESSAGE);
//Valeur fondamentale 7
put("corevalue7", CORE_VALUE_07_MESSAGE);
put("COREVALUE7", CORE_VALUE_07_MESSAGE);
put("Koabaryu 7", CORE_VALUE_07_MESSAGE);
put("Valeur fondamentale 7", CORE_VALUE_07_MESSAGE);
//Valeur fondamentale 8
put("corevalue8", CORE_VALUE_08_MESSAGE);
put("COREVALUE8", CORE_VALUE_08_MESSAGE);
put("Koabaryu 8", CORE_VALUE_08_MESSAGE);
put("Valeur fondamentale 8", CORE_VALUE_08_MESSAGE);
//Valeur fondamentale 9
put("corevalue9", CORE_VALUE_09_MESSAGE);
put("COREVALUE9", CORE_VALUE_09_MESSAGE);
put("Koabaryu 9", CORE_VALUE_09_MESSAGE);
put("Valeur fondamentale 9", CORE_VALUE_09_MESSAGE);
//Valeur fondamentale 10
put("corevalue10", CORE_VALUE_10_MESSAGE);
put("COREVALUE10", CORE_VALUE_10_MESSAGE);
put("Koabaryu 10", CORE_VALUE_10_MESSAGE);
put("Valeur fondamentale 10", CORE_VALUE_10_MESSAGE);
//Toutes les valeurs fondamentales
put("corevalue", CORE_VALUE_ALL_MESSAGE);
put("COREVALUE", CORE_VALUE_ALL_MESSAGE);
put("La valeur de base", CORE_VALUE_ALL_MESSAGE);
put("La valeur de base", CORE_VALUE_ALL_MESSAGE);
}
});
/**
*Renvoie un message de réponse basé sur le message LINE envoyé
* @param sendMessage Sent LINE message
* @renvoyer le message de réponse
*/
public String createResponseMessage(String sendMessage) {
if(MESSAGE_MAP.containsKey(sendMessage)) {
//Lorsque le message LINE envoyé existe dans la touche MAP
return MESSAGE_MAP.get(sendMessage);
} else {
//Si le message LINE envoyé n'existe pas dans la touche MAP
return OTHER_MESSAGE;
}
}
}
Je n'avais pas beaucoup d'expérience dans la création de liens avec des services existants, donc je l'ai trouvé frais et intéressant. À l'avenir, j'aimerais essayer d'envoyer régulièrement des messages LINE en utilisant cron.
・ Oasobi Proguraming Diary ・ [Exécutez LINE BOT avec Spring Boot et LINE Messaging API avec Heroku](http://kikutaro777.hatenablog.com/entry/2017/01/16/230122 "LINE BOT made with Spring Boot et LINE Messaging API" Avec Heroku ") ・ Bot LINE qui émet une alerte avant la date de garbage collection
Recommended Posts