Ich habe einen LineBot erstellt, der einen Papagei von Nginx + SpringBoot in einer VPS-Umgebung zurückgibt.
・ VPS: Conoha (https://www.conoha.jp/) ・ Betriebssystem: CentOS7 ・ SSL-Zertifikat: Verschlüsseln ・ Nginx 1.12.2 ・ SpringBoot 2.1.6
LineBot-Webhooks sind nur für https-URLs gültig. VPS ist Conoha und meine eigene Domain wurde von einer anderen Domain-Site erworben. Hier werden wir die Erfassungs- und Einstellungsmethode der ursprünglichen Domäne weglassen.
Ich habe das SSL-Zertifikat erhalten, indem ich mich auf Folgendes beziehe. Ich habe Nginx auch im folgenden Artikel installiert.
** Veröffentlichen Sie eine sichere Website mit dem Let 's Encrypt SSL-Zertifikat ** https://knowledge.sakura.ad.jp/5573/
Öffnen Sie die Grundeinstellungen des Kanals in Line Developers und konfigurieren Sie Einstellungen wie WebHook. Notieren Sie sich das Kanalgeheimnis, da Sie es in einem späteren Schritt verwenden werden.
Stellen Sie das Zugriffstoken erneut aus und notieren Sie sich das angezeigte Zugriffstoken zur späteren Verwendung. Die Webhook-Übertragung wurde in "Verwenden" geändert. Bitte geben Sie den erworbenen Domainnamen im abgeblendeten Teil der Webhook-URL an.
Wählen Sie "Nicht verwenden" für die automatische Antwortnachricht. Bitte wählen Sie "Nicht verwenden" für die Begrüßung, wenn Sie einen Freund hinzufügen.
Erstellen Sie ein Projekt mit Spring Initializr https://start.spring.io/ ・ Projekt: Gradle-Projekt ・ Sprache: Java ・ Spring Boot: 2.1.6 ・ Projektmetadaten ・ Gruppe: com.example ・ Artefakt: Linebot
Importieren Sie das erstellte Projekt mit STS und [line-bot-java sample (echo)](https://github.com/line/line-bot-sdk-java/blob/master/sample- Kopieren Sie spring-boot-echo / src / main / java / com / example / bot / spring / echo / EchoApplication.java) nach LinebotApplication.java. Zu diesem Zeitpunkt ist die Linebot-Bibliothek nicht enthalten, sodass ein Kompilierungsfehler auftritt, der in einem späteren Schritt behoben wird.
com/example/linebot/LinebotApplication.java
@SpringBootApplication
@LineMessageHandler
public class LinebotApplication {
public static void main(String[] args) {
SpringApplication.run(LinebotApplication.class, args);
}
@EventMapping
public Message handleTextMessageEvent(MessageEvent<TextMessageContent> event) {
System.out.println("event: " + event);
final String originalMessageText = event.getMessage().getText();
return new TextMessage(originalMessageText);
}
@EventMapping
public void handleDefaultMessageEvent(Event event) {
System.out.println("event: " + event);
}
}
build.gradle
plugins {
id 'org.springframework.boot' version '2.1.6.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compile 'com.linecorp.bot:line-bot-spring-boot:2.7.0'
}
jar {
manifest {
attributes 'Main-Class': 'LinebotApplication'
}
}
Klicken Sie mit der rechten Maustaste auf das Projekt-> Gradle-> Gradle-Projekt aktualisieren
src/main/resources/application.properties
line.bot.channelSecret =XXX (Kanalgeheimnis der Linienentwickler)
line.bot.channelToken =XXX (Zugriffstoken für Linienentwickler)
line.bot.handler.path = /callback
Im nächsten Schritt "Verknüpfen von Nginx und Spring Boot" werden auch application.properties bearbeitet, sodass es noch nicht erstellt wird.
Funktioniert mit Nginx und Spring Boot. Ich habe für die Kooperationsmethode auf Folgendes verwiesen.
** Verwenden Sie nginx, um SSL (HTTPS) im Spring Boot zu aktivieren ** https://qiita.com/keigohtr/items/5b2b423fe0e9da027db6
/etc/nginx/conf.d/ssl.conf
server {
listen 80;
listen [::]:80;
return 301 https://$host$request_uri;
}
upstream spring-boot {
server 127.0.0.1:8443;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl on;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
resolver 8.8.8.8;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;';
server_name example.com;
location / {
proxy_pass http://spring-boot;
}
}
src/main/resources/application.properties
line.bot.channelSecret = XXX
line.bot.channelToken = XXX
line.bot.handler.path = /callback
server.port=8443
#server.ssl.key-store=keystore.p12
#server.ssl.key-store-password=mypassword
#server.ssl.keyStoreType=PKCS12
#server.ssl.keyAlias=tomcat
endpoints.enabled=false
management.add-application-context-header=false
Klicken Sie mit der rechten Maustaste auf das Projekt-> Ausführen als-> Gradle Build konnte nicht ausgeführt werden, daher habe ich mit der folgenden Methode von STS zu Jar erstellt
1 Klicken Sie mit der rechten Maustaste auf das Projekt-> Ausführen als-> Konfiguration ausführen ...
Doppelklicken Sie auf Gradle Project-> Select New_configration, geben Sie "Build" in Gradle Tasks: ein, klicken Sie auf Workspalce ...
Wählen Sie mit Projekt auswählen das zu erstellende Projekt aus
Klicken Sie auf Ausführen, wenn der Pfad im Arbeitsverzeichnis festgelegt ist
Wenn der Build erfolgreich ist, wird in build / libs ein JAR generiert.
Laden Sie das erstellte JAR als Serverstandort in das Benutzerverzeichnis (/ home / [Benutzername]) hoch und führen Sie den folgenden Befehl aus, um Spring Boot zu starten.
sudo java -jar linebot-0.0.1-SNAPSHOT.jar
Spring Boot befindet sich im gebooteten Zustand. Die folgende Meldung wird angezeigt.
Überprüfen Sie die Verbindung der eingestellten Webhook-URL in Line Developers. Wenn die Meldung "Erfolgreich" angezeigt wird, wurden die bisherigen Einstellungen korrekt vorgenommen und die Verbindung von LineBot zu VPS hergestellt.
Wenn Sie eine Nachricht an einen Kanal senden, der über die Line-App erstellt wurde, wird dieselbe Nachricht zurückgegeben, die Sie gesendet haben. Jetzt haben Sie einen Papageienrückgabebot.
Recommended Posts