[Java] Intégration LINE avec Spring Boot

introduction

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.

À propos de la coopération LINE (LINE BOT)

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

line_message_api.png

Environnement de développement

・ STS (Spring Tool Suite) * Version package unique ・ JDK1.8 ・ Heroku

Vérification du fonctionnement du LINE BOT (préparation)

1. Inscription aux "Développeurs LINE"

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>

  1. Cliquez sur le bouton "Connexion" dans le cadre rouge. line_develop_1.PNG

  2. Connectez-vous avec votre compte LINE. line_develop_2.PNG

  3. Entrez les informations du développeur (nom du développeur / adresse e-mail). line_develop_3.png

  4. S'il n'y a aucun problème avec le contenu d'entrée, créez un compte. line_develop_4.png

2. Créez un nouveau fournisseur

Le fournisseur est le nom du fournisseur de services (entreprise / particulier).

<Procédure de création>

  1. Cliquez sur le bouton "Créer un nouveau fournisseur" dans le cadre rouge. line_develop_5.png

  2. Entrez le nom du fournisseur. line_develop_6.png

  3. Si vous êtes satisfait du contenu d'entrée, créez un fournisseur. line_develop_7.png

3. Créez un nouveau canal (BOT)

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>

  1. Cliquez sur le bouton "Créer une chaîne" dans le cadre rouge. line_develop_8.png

  2. 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) line_develop_9.png

  3. S'il n'y a pas de problème avec le contenu d'entrée, créez un canal. line_develop_10.png

\def\textlarge#1{%
   {\rm\Large #1}
}
\def\textsmall#1{%
  {\rm\scriptsize #1}
}

4. Contrôle de fonctionnement

Cette fois, vérifiez la réponse du message suivant.

message Aperçu
\textsmall{Message de réponse au mot-clé} \textsmall{Un message qui est automatiquement envoyé lorsqu'un mot clé spécifique est saisi}
\textsmall{Message du répondeur automatique} \textsmall{Un message qui est automatiquement envoyé lorsqu'un message autre qu'un message de réponse par mot-clé est saisi}

<Procédure de confirmation>

  1. Appuyez sur le canal créé par le cadre rouge. line_develop_11.png

  2. Passez à «l'écran de gestion de LIGNE» à partir du lien dans le cadre rouge. line_develop_12.png

  3. 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é. line_develop_13.png

  4. Créez un message de réponse automatique à partir du menu des messages sur l'écran de gestion LIGNE. line_develop_14.png

  5. Vérifiez en fait la réponse du message.

Coopération Spring Boot LINE

La préparation est devenue longue, mais le sujet principal est d'ici. Implémentez la partie liaison LINE de Spring Boot.

1. Ajouter une dépendance

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>

2. Ajouter une propriété

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

3. Modifier la classe d'application

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);
    }
    
}

4. Déployez l'application créée sur Heroku

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) line_develop_16.png

[Édition supplémentaire] Je l'ai fait

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;
		}
	}
	
}

line_develop_17.png

Résumé

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.

Site référencé

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

[Java] Intégration LINE avec Spring Boot
Télécharger avec Spring Boot
[Java] Hello World avec Java 14 x Spring Boot 2.3 x JUnit 5 ~
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Procédure de construction de LINE Bot x Java (Spring Boot)
[LINE BOT] J'ai créé un Ramen BOT avec Java (Maven) + Heroku + Spring Boot (1)
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Configuration Java avec Spring MVC
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
[Java] Thymeleaf Basic (Spring Boot)
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Application Java CICS-Run - (4) Application Spring Boot
Utilisation de Mapper avec Java (Spring)
Spring Boot à partir de Docker
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
[Java] [Spring] Spring Boot 1.4-> 1.2 Note de rétrogradation
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
[Java / Kotlin] Traitement d'échappement (désinfection) pour HTML5 avec unbescape [Spring Boot]
Utiliser l'authentification de base avec Spring Boot
gRPC sur Spring Boot avec grpc-spring-boot-starter
Créez une application avec Spring Boot 2
Déploiement à chaud avec le développement Spring Boot
Liaison de base de données avec doma2 (Spring boot)
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Créer une application d'enquête avec Spring Boot
Obtenez des résultats de validation avec Spring Boot
Créez une application avec Spring Boot
Spring Java
J'ai essayé GraphQL avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
Développement piloté par domaine avec Java et Spring Boot-Layer et division de modules
La coopération des messages a commencé avec Spring Boot
[Java] Exemple de projet de développement d'applications Web avec Spring Boot
J'ai essayé d'implémenter un client OAuth avec Spring Boot / Security (connexion LINE)
Comparez Hello, world! Avec Spring Boot avec Java, Kotlin et Groovy
Traitement lors du démarrage d'une application avec Spring Boot
[Java] [Spring] Spring Boot Mystérieux hamarinet d'injection de dépendances
Intégration API de Java avec Jersey Client
Envoyez des notifications régulières avec LineNotify + Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
HTTPS avec Spring Boot et Let's Encrypt
Créer un projet Java Spring Boot avec IntelliJ
Démarrez le développement d'applications Web avec Spring Boot