Verwenden Sie das LINE Messaging API SDK (für Java) (https://github.com/line/line-bot-sdk-java), um Erinnerungen vor dem Garbage Collection-Datum zu senden.
Der Teil, der auf die Antwort antwortet, wird von "Webhook" realisiert, und der Teil, der die Erinnerung pusht, wird von "Messaging API" realisiert.
Erstellen Sie ein Projekt mit "SPRING INITIALIZR". Überprüfen Sie "lombok" und "Devtool". Artefakt ist "Müll-Erinnerung".
Sobald der Download abgeschlossen ist, öffnen Sie ihn in der IDE.
pom.xml
<dependency>
<groupId>com.linecorp.bot</groupId>
<artifactId>line-bot-spring-boot</artifactId>
<version>1.11.0</version>
</dependency>
Fügen Sie das LINE Messaging API SDK hinzu.
application.properties
line.bot.channelSecret = XXXXX
line.bot.channelToken = XXXXX
line.bot.handler.path = /callback
Stellen Sie die Informationen des in LINE geöffneten Kanals ein.
Verwenden Sie die Bestätigungsvorlagen (https://developers.line.me/ja/docs/messaging-api/message-types/#confirm-template), um zu bestätigen, dass die Speicherbereinigung abgeschlossen ist.
PushConfirmController
@Slf4j
@RestController
public class PushConfirmController {
private final LineMessagingClient lineMessagingClient;
ConfirmService(LineMessagingClient lineMessagingClient) {
this.lineMessagingClient = lineMessagingClient;
}
//Erinnerungen drücken
@GetMapping("alarm")
public void pushAlarm() throws URISyntaxException {
try {
BotApiResponse response = lineMessagingClient
.pushMessage(new PushMessage("/*Benutzer-ID der Person, die Sie pushen möchten*/",
new TemplateMessage("Morgen ist ein brennender Mülltag!",
new ConfirmTemplate("Haben Sie den Müll entsorgt?",
new MessageAction("Ja", "Ja"),
new MessageAction("Nein", "Nein")
)
)))
.get();
log.info("Sent messages: {}", response);
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
}
Es ist nicht erforderlich, es zu einem Controller zu machen, aber es ist einfacher zu überprüfen, ob es von GET aufgerufen werden kann.
Benachrichtigung
Botschaft
Da die Antwort nicht implementiert wurde, gibt es noch keine Antwort, selbst wenn die Taste gedrückt wird.
Webhooks können eine Antwort zurückgeben, wenn etwas gesendet wird, z. B. eine Nachricht oder ein Stempel. Ich habe es so gemacht, dass "Ja" oder "Nein" in der Bestätigung zurückgegeben wird, also habe ich diese beiden Wörter aufgegriffen Wenn "Ja", geben Sie "Sassuga!" Zurück, und wenn "Nein", geben Sie "Lass es uns wegwerfen!" Zurück.
Webhook
@Slf4j
@LineMessageHandler
public class WebhookController {
//Antwort, wenn Text gesendet wird
@EventMapping
public void handleTextMessageEvent(MessageEvent<TextMessageContent> event) throws Exception {
//Holen Sie sich den eingegebenen Text
String text = content.getText();
switch (text) {
case "Ja": {
this.reply(replyToken,
new TextMessage("Korrekt!")
);
break;
}
case "Nein": {
this.reply(replyToken,
new TextMessage("Lass es uns wegwerfen!")
);
break;
}
default:
log.info("Returns echo message {}: {}", replyToken, text);
this.replyText(
replyToken,
text
);
break;
}
}
}
Das Beispiel gibt Text zurück, Sie können jedoch mehrere Nachrichten in einem Array haben.
reply
this.reply(replyToken,
Arrays.asList(
new StickerMessage("1", "13"), //Stempel
new TextMessage("Korrekt!") //Text
)
);
Sie können heroku eine Umgebungsvariable geben und auf ihren Wert aus der Eigenschaftendatei verweisen.
application.properties
line.bot.channelSecret = ${LINE_BOT_CHANNEL_SECRET}
line.bot.channelToken = ${LINE_BOT_CHANNEL_TOKEN}
line.bot.handler.path = /callback
Sobald Sie hier angekommen sind, müssen Sie es nur noch rechtzeitig pushen! Verwenden Sie die Planungsfunktion von Spring @Scheduled.
ScheduledTask
@Slf4j
@Service
public class ScheduledTaskService {
private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
@Scheduled(cron="/*Cron Beschreibung*/", zone = "Asia/Tokyo")
public void executeAlarm() {
try {
//Rufen Sie den Prozess auf, um zu pushen
pushAlarm();
} catch (URISyntaxException e) {
log.error("{}", e);
}
log.info("cron executed : " + sdf.format(new Date()));
}
}
Dies ist abgeschlossen!
Ich denke, du kannst ein bisschen Spaß daran haben, den Müll loszuwerden, den du vergisst (´ω` *)
Das "Küchenspülbecken" im LINE Messaging API SDK (für Java) war dabei sehr hilfreich. Zuerst habe ich den Teil, der die Nachricht pusht, selbst implementiert, ohne das SDK zu verwenden ... w Mit dem SDK ist es einfacher, klar zu schreiben.
Dieses Mal gilt die Warnung nur für brennende Mülltage. Sie können sie jedoch erweitern, um nicht brennende Mülltage zu erstellen. Sie können auch die Anzahl der Nachrichten erhöhen, um Nachrichten nach dem Zufallsprinzip zu senden oder Stempel zu senden. Bitte machen Sie eine originelle Erinnerung;)
https://github.com/aytdm/garbage-reminder-bot/tree/v.1.0 (Die Nachricht kann auf Englisch sein oder es kann ein Stempel angezeigt werden, aber die Grundlagen sind die gleichen wie hier)
Recommended Posts