[JAVA] Envoyez des notifications régulières avec LineNotify + Spring Boot

en premier

Je souhaite être régulièrement informé d'informations spécifiques lors de la création d'une application Web avec SpringBoot! !! !! Après avoir étudié la méthode de pensée, j'ai pu la mettre en œuvre facilement de manière inattendue, alors je l'ai résumée.

Environnement d'exécution

① Obtenez un jeton d'accès sur la page officielle LINE Notify

Accédez à l'URL ci-dessous, lisez le code QR affiché et ajoutez LINE Notify comme ami.

https://notify-bot.line.me/ja/

Après cela, après vous être connecté avec votre propre compte LINE sur la même page, passez à "Ma page" → "Émettre un jeton d'accès". Entrez le nom du token (affiché en haut du message lorsque le message est effectivement notifié sur LINE) et sélectionnez n'importe quelle salle de conversation pour afficher le token.

Veuillez noter que le jeton est affiché *** une fois ***. Cependant, vous pouvez en émettre autant que vous le souhaitez, alors ne vous inquiétez pas pour cela.

② Créez une classe pour envoyer des notifications

Créez un bean à enregistrer dans le conteneur DI pour envoyer des notifications à LINE. Aucune dépendance particulière n'est requise.

LineNotify.java



@Component
public class LineNotify {
    public void executeNotification() {
         String message = "Message que vous souhaitez envoyer";
         String token = "Jeton obtenu";
        
	     sendNotification(message,token);
	}

	public void sendNotification(String message, String token) {
		HttpURLConnection connection = null;
		try {
			URL url = new URL("https://notify-api.line.me/api/notify");
			connection = (HttpURLConnection) url.openConnection();
			connection.setDoOutput(true);
			connection.setRequestMethod("POST");
			connection.addRequestProperty("Authorization", "Bearer " + token);
			try (OutputStream outputStream = connection.getOutputStream();
					PrintWriter writer = new PrintWriter(outputStream)) {
				writer.append("message=").append(URLEncoder.encode(message, "UTF-8")).flush();
			}
		} catch (Exception e) {
		} finally {
			if (connection != null) {
				connection.disconnect();
			}
		}
    }
}

Transmettez le message et le jeton que vous souhaitez envoyer à l'argument de la méthode sendNotification et exécutez la communication POST vers l'URL spécifiée. L'authentification OAuth est requise pour envoyer des notifications avec LINE Notify, mais l'authentification est exécutée en ajoutant ʻAuthorization: Bearer <access_token> `à l'en-tête de la demande dans la méthode.

③ Paramètres d'envoi de notifications sur une base régulière

Pour activer la fonction d'exécution de tâche planifiée Utilisez l'annotation @ EnableScheduling sur la classe principale.

Application.java



@SpringBootApplication
@EnableScheduling //···ajouter à
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

Cela vous permet de découvrir n'importe quel bean dans un conteneur DI qui utilise l'annotation @ Scheduled. Revenons donc à la classe qui a implémenté la fonction de notification et ajoutons une annotation à la méthode que nous voulons réellement exécuter périodiquement.

LineNotify.java



@Component
public class LineNotify {
    @Scheduled(cron = "0 * * * * *", zone = "Asia/Tokyo") //···ajouter à
    public void executeNotification() {
         String message = "Message que vous souhaitez envoyer";
         String token = "Jeton obtenu";
        
	     sendNotification(message,token);
	}

     ...

Une fois cela fait, tout ce que vous avez à faire est de démarrer le serveur et la tâche sera exécutée et vous serez averti.

cron spécifie le cycle d'exécution des tâches et zone spécifie le fuseau horaire. À partir de la gauche, cron peut définir des déclencheurs pour" secondes, minutes, heures, mois, jours, jours ", et l'exemple de code ci-dessus est défini pour exécuter la tâche à 0 seconde par minute. Par exemple, si vous souhaitez exécuter une tâche tous les jours à 9h00 Définissez quelque chose comme "cron = "0 0 9 * * *"".

Il existe d'autres options telles que ʻinitialDelay qui spécifie l'exécution n secondes après le démarrage de l'application et fixedDelay` qui spécifie l'exécution n secondes après la fin de l'exécution du processus de la méthode, vous pouvez donc la personnaliser relativement librement. peut faire.

référence

Notification par LINE Notify de Java implémentée en 5 minutes ・ Comment exécuter périodiquement des tâches avec Spring Boot

Recommended Posts

Envoyez des notifications régulières avec LineNotify + Spring Boot
Envoyer du courrier avec Spring Boot
Télécharger avec Spring Boot
Traitement asynchrone avec exécution régulière dans Spring Boot
Hello World avec Spring Boot
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
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
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
[Spring Boot] Envoyer un e-mail
Créer un micro service avec 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)
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
(Intellij) Hello World avec Spring Boot
Créez une application avec Spring Boot
Google Cloud Platform avec Spring Boot 2.0.0
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
La coopération des messages a commencé avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
Hello World avec Eclipse + Spring Boot + Maven
Effectuer un test de confirmation de transaction avec Spring Boot
HTTPS avec Spring Boot et Let's Encrypt
Essayez d'utiliser Spring Boot avec VS Code
Démarrez le développement d'applications Web avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose
J'ai essayé l'initialisation paresseuse avec Spring Boot 2.2.0
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Traitement asynchrone avec Spring Boot en utilisant @Async
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
(IntelliJ + gradle) Hello World avec Spring Boot
Utiliser le cache avec EhCashe 2.x avec Spring Boot
Test de validation de classe de formulaire avec Spring Boot
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Obtenez une authentification BASIC avec Spring Boot + Spring Security
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Configurer l'application Spring Boot avec le module multiple maven
Testez le contrôleur avec Mock MVC dans Spring Boot
Créez une application de recherche simple avec Spring Boot
Hash des mots de passe avec Spring Boot + Spring Security (avec sel, avec étirement)