Machen Sie eine Müllabfuhr mit line-bot-sdk-java

Überblick

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.

Konzept

Der Teil, der auf die Antwort antwortet, wird von "Webhook" realisiert, und der Teil, der die Erinnerung pusht, wird von "Messaging API" realisiert.

Umgebung

Ein Projekt erstellen

Erstellen Sie ein Projekt mit "SPRING INITIALIZR". Überprüfen Sie "lombok" und "Devtool". Artefakt ist "Müll-Erinnerung".

init.png

Sobald der Download abgeschlossen ist, öffnen Sie ihn in der IDE.

Abhängigkeit hinzufügen

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.

Eigentum

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.

Implementierung von Message Push

confirm.png 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.

Bestätigung

Benachrichtigung

Botschaft

Da die Antwort nicht implementiert wurde, gibt es noch keine Antwort, selbst wenn die Taste gedrückt wird.

Umsetzung der Antwort

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

Bestätigung

Bemerkungen

Antwort

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

Umgebungsvariable

Sie können heroku eine Umgebungsvariable geben und auf ihren Wert aus der Eigenschaftendatei verweisen.

ss.png

application.properties


line.bot.channelSecret = ${LINE_BOT_CHANNEL_SECRET}
line.bot.channelToken = ${LINE_BOT_CHANNEL_TOKEN}
line.bot.handler.path = /callback

Planung

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!

Schließlich

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

Quellcode

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

Machen Sie eine Müllabfuhr mit line-bot-sdk-java
Machen Sie mit Ruby2D ein Labyrinth
Erstellen Sie mit JavaFX ein Diashow-Tool
Erstellen Sie eine Listenkarte mit LazyMap
Machen Sie ein Tippspiel mit Ruby
Machen wir eine Weihnachtskarte mit Verarbeitung!
Erstellen Sie mit Sinatra eine Familien-ToDo-Liste
Erstellen Sie mit Sinatra eine Familien-ToDo-Liste
Erstellen Sie trotzdem eine Anmeldefunktion mit Rails
[Docker] [Nginx] Erstellen Sie mit Nginx eine einfache ALB
Lassen Sie uns eine Suchfunktion mit Rails (Ransack) machen
Machen Sie System.out Mock mit dem Spock Test Framework
Führen Sie Scala mit GraalVM aus und machen Sie es zu einem nativen Image
Machen wir einen LINE Bot mit Ruby + Sinatra - Teil 2
[Java-Grundlagen] Lassen Sie uns ein Dreieck mit einer for-Anweisung erstellen
[Arbeitsnotiz für persönliche Anwendungen] Erstellen Sie einen Kalender mit simple_calendar
Erstellen Sie ein Reflexionsprogramm ②
Erstellen Sie ein Reflexionsprogramm ③
Machen wir einen LINE Bot mit Ruby + Sinatra - Teil 1
Erstellen Sie ein Reflexionsprogramm ①
[Anfänger] Versuchen Sie, mit Java ein einfaches RPG-Spiel zu erstellen ①
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Erstellen Sie mit SpringBoot + JPA + Thymeleaf ein einfaches CRUD ~ ~ Hallo Welt ~
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Erstellen wir eine einfache API mit EC2 + RDS + Spring Boot ①
Erstellen Sie eine einfache CRUD mit SpringBoot + JPA + Thymeleaf ⑤ ~ Common template ~
Microservices mit DevOps nehmen Änderungen vor
Erstellen Sie einen Spielplatz mit Xcode 12
[Java] Mach es konstant
[Schienen] Machen Sie eine Brotkrumenliste
Machen Sie einen Diamanten mit Java
Eine Geschichte, die bei NotSerializableException steckt
Erstellen wir eine Buchverwaltungs-Webanwendung mit Spring Boot part1
So erstellen Sie eine JAR-Datei ohne Abhängigkeiten in Maven
Lassen Sie uns mit Spring Boot part3 eine Webanwendung für die Buchverwaltung erstellen
Lassen Sie uns mit Spring Boot part2 eine Webanwendung für die Buchverwaltung erstellen
Erstellen Sie einen C-Compiler zur Verwendung mit Rust x CLion mit Docker
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen