Utilisez le SDK de l'API de messagerie LINE (pour Java) (https://github.com/line/line-bot-sdk-java) pour envoyer des rappels avant la date de récupération de place.
La partie qui répond à la réponse est réalisée par "Webhook", et la partie qui pousse le rappel est réalisée par "Messaging API".
Créez un projet avec "SPRING INITIALIZR". Vérifiez "lombok" et "Devtool". L'artéfact est un "rappel de déchets".
Une fois le téléchargement terminé, ouvrez-le dans l'EDI.
pom.xml
<dependency>
<groupId>com.linecorp.bot</groupId>
<artifactId>line-bot-spring-boot</artifactId>
<version>1.11.0</version>
</dependency>
Ajoutez le SDK de l'API de messagerie LINE.
application.properties
line.bot.channelSecret = XXXXX
line.bot.channelToken = XXXXX
line.bot.handler.path = /callback
Définissez les informations du canal ouvert dans LINE.
Utilisez les modèles de confirmation (https://developers.line.me/ja/docs/messaging-api/message-types/#confirm-template) pour confirmer que la suppression des déchets est terminée.
PushConfirmController
@Slf4j
@RestController
public class PushConfirmController {
private final LineMessagingClient lineMessagingClient;
ConfirmService(LineMessagingClient lineMessagingClient) {
this.lineMessagingClient = lineMessagingClient;
}
//Rappels push
@GetMapping("alarm")
public void pushAlarm() throws URISyntaxException {
try {
BotApiResponse response = lineMessagingClient
.pushMessage(new PushMessage("/*UserId de la personne que vous souhaitez envoyer*/",
new TemplateMessage("Demain est un jour de déchets brûlant",
new ConfirmTemplate("Avez-vous fini de jeter les ordures?",
new MessageAction("Oui", "Oui"),
new MessageAction("Non", "Non")
)
)))
.get();
log.info("Sent messages: {}", response);
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
}
Il n'est pas nécessaire d'en faire un contrôleur, mais il est plus facile de vérifier s'il peut être appelé par GET.
notification
message
Puisque la réponse n'a pas été implémentée, il n'y a pas encore de réponse même si le bouton est enfoncé.
Les webhooks peuvent renvoyer une réponse lorsqu'un élément est envoyé, tel qu'un message ou un tampon. J'ai fait en sorte que "oui" ou "non" soit renvoyé dans la confirmation, j'ai donc repris ces deux mots Si "Oui", retournez "Sassuga!", Et si "Non", retournez "Jetons-le!".
Webhook
@Slf4j
@LineMessageHandler
public class WebhookController {
//Réponse lorsque le texte est envoyé
@EventMapping
public void handleTextMessageEvent(MessageEvent<TextMessageContent> event) throws Exception {
//Récupérer le texte saisi
String text = content.getText();
switch (text) {
case "Oui": {
this.reply(replyToken,
new TextMessage("C'est vrai!")
);
break;
}
case "Non": {
this.reply(replyToken,
new TextMessage("Jetons-le!")
);
break;
}
default:
log.info("Returns echo message {}: {}", replyToken, text);
this.replyText(
replyToken,
text
);
break;
}
}
}
L'exemple renvoie du texte, mais vous pouvez avoir plusieurs messages dans un tableau.
reply
this.reply(replyToken,
Arrays.asList(
new StickerMessage("1", "13"), //timbre
new TextMessage("C'est vrai!") //texte
)
);
Vous pouvez donner à heroku une variable d'environnement et faire référence à sa valeur dans le fichier de propriétés.
application.properties
line.bot.channelSecret = ${LINE_BOT_CHANNEL_SECRET}
line.bot.channelToken = ${LINE_BOT_CHANNEL_TOKEN}
line.bot.handler.path = /callback
Une fois arrivé, il ne vous reste plus qu'à le pousser à temps! Utilisez la fonction de planification de Spring @Scheduled.
ScheduledTask
@Slf4j
@Service
public class ScheduledTaskService {
private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
@Scheduled(cron="/*description de cron*/", zone = "Asia/Tokyo")
public void executeAlarm() {
try {
//Appelez le processus pour pousser
pushAlarm();
} catch (URISyntaxException e) {
log.error("{}", e);
}
log.info("cron executed : " + sdf.format(new Date()));
}
}
C'est tout ce qu'on peut en dire!
Je pense que vous pouvez vous amuser un peu à vous débarrasser des déchets que vous avez tendance à oublier (´ω` *)
L '«évier de cuisine» dans LINE Messaging API SDK (pour Java) a été très utile pour le faire. Au début, la partie qui pousse le message, je l'ai implémentée moi-même sans utiliser le SDK ... w Il est plus facile d'écrire clairement à l'aide du SDK.
Cette fois, l'alerte concerne uniquement les jours de déchets brûlés, mais vous pouvez l'étendre pour créer des jours de déchets non brûlants. Vous pouvez également augmenter le nombre de messages pour envoyer des messages au hasard ou envoyer des tampons. Veuillez faire un rappel original;)
https://github.com/aytdm/garbage-reminder-bot/tree/v.1.0 (Le message peut être en anglais ou un tampon peut être affiché, mais les bases sont les mêmes que ce qui est écrit ici)
Recommended Posts