Dies ist eine Reihe von Versuchen, mithilfe verschiedener Dienste ein Backend für LINEbot zu erstellen. Der erste verwendet ngrok. Nur für diesen Artikel wird das Verfahren wie die Registrierung bei LINE-Entwicklern als Einführung in die Beschreibung aufgenommen.
Informationen zum Erstellen mit anderen Diensten finden Sie im Folgenden.
--Erstens: ngrok * Dieser Artikel
Dies ist das Erfassungsverfahren ab Oktober 2020. Bitte beachten Sie, dass sich in Zukunft möglicherweise Änderungen ergeben.
Um die Messaging-API zu verwenden, registrieren Sie sich zunächst für ein Konto bei LINE Developers. Greifen Sie zuerst auf hier zu und klicken Sie oben rechts auf die Anmeldeschaltfläche. Drücken Sie im nächsten Bildschirm auf "Mit LINE-Konto anmelden". Anschließend wird der folgende Bildschirm angezeigt. Melden Sie sich an, indem Sie entweder die in LINE registrierte E-Mail-Adresse und das Passwort eingeben oder den QR-Code scannen. Bei Erfolg werden Sie zum Startbildschirm der Konsole weitergeleitet.
Auf dem Startbildschirm befindet sich ein Abschnitt mit dem Namen "Anbieter". Klicken Sie daher daneben auf die Schaltfläche "Erstellen" und geben Sie einen beliebigen Namen in das Feld "Anbietername" ein.
Der Bildschirm wechselt zum Startbildschirm des Anbieters. Klicken Sie daher auf den Block "Messaging-API-Kanal erstellen".
Der Bildschirm wechselt zum Informationseingabebildschirm. Geben Sie daher Folgendes ein (nur die minimal erforderlichen Elemente werden aufgelistet).
--Kanalsymbol: Das Symbol ist nicht unbedingt erforderlich, aber das weiße Symbol ist einsam, daher möchte ich alles einstellen.
Da es im Backend verwendet wird, wird es zu diesem Zeitpunkt ausgegeben. Bitte bewahren Sie diese beiden Werte außerdem sorgfältig auf, damit sie anderen nicht bekannt werden.
Die Zeichenfolge im Abschnitt "Kanalgeheimnis" der Registerkarte "Grundeinstellungen". Dies wird veröffentlicht, wenn der Kanal erstellt wird.
Die Zeichenfolge für den Teil "Channel Access Token" am unteren Rand der Registerkarte "Messaging API". Dies wird nicht standardmäßig veröffentlicht. Generieren Sie es also, indem Sie auf die Schaltfläche "Problem" klicken.
Auf der Registerkarte "Messaging-API" befindet sich ein QR-Code. Scannen Sie ihn daher mit der LINE-App und registrieren Sie sich als Freund.
Kopieren Sie den Code für line-bot-sdk-python und speichern Sie ihn lokal als app.py
..
Stellen Sie dann die geheimen Informationen wie folgt ein.
app.py
#Beispiel
line_bot_api = LineBotApi('YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZGG==') #Dies ist die längere Zeichenfolge
handler = WebhookHandler('fxxxxxxxxxxxxxxxxxxxxx')
Der Quellcode verwendet eine Bibliothek, daher müssen Sie die Bibliothek installieren. Führen Sie den folgenden Befehl im Terminal aus:
Terminal
pip install Flask line-bot-sdk
Kurz gesagt, ngrok ist ein Dienst, mit dem Sie über das Internet von außen auf lokal ausgeführte Prozesse zugreifen können. Vor allem der Punkt, an dem ein öffentlicher Endpunkt auf "https" vorbereitet wird, ist sehr groß. (Die Webhook-URL muss "https" sein.)
Für MacOS empfehlen wir die Installation mit dem ersten "Homebrew". Ansonsten installieren Sie es mit dem zweiten Befehl.
Terminal
brew cask install ngrok
Terminal
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip
mv ngrok /usr/local/bin/ngrok
Stellen Sie sicher, dass es richtig installiert ist. Wenn Sie den Befehl ngrok
ausführen und die folgende Meldung angezeigt wird, liegt kein Problem vor.
Geben Sie zum Stoppen "Strg + C" ein.
Terminal
ngrok http 80
Ausführungsergebnis
Terminal
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 7 hours, 59 minutes
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://a9e65703bdfa.ngrok.io -> http://localhost:80
Forwarding https://a9e65703bdfa.ngrok.io -> http://localhost:80
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
Starten wir nun den Server und sehen, wo die Nachricht zurückgegeben wird.
Führen Sie den folgenden Befehl im Terminal aus. Wenn der Python-Dateiname nicht "app.py" lautet, müssen Sie die Umgebungsvariable "FLASK_APP" auf diesen Dateinamen setzen.
Terminal
flask run --reload --port 8080
#Wenn Folgendes angezeigt wird, wird der Startstatus angezeigt
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
Die folgende Abbildung zeigt den aktuellen Status.
Starten Sie ein anderes Terminal und führen Sie den folgenden Befehl aus. Kopieren Sie dann die URL in die Zeile "Weiterleitung", die mit "https" beginnt.
Terminal
ngrok http 8080
Forwarding http://e5e58099a87e.ngrok.io -> http://localhost:8080
Forwarding https://e5e58099a87e.ngrok.io -> http://localhost:8080 #Hier
Die folgende Abbildung zeigt den aktuellen Status.
An diesem Punkt kehren Sie zum Bildschirm LINE-Entwickler zurück.
Geben Sie "** die gerade kopierte URL ** + / callback
"in den Teil" Webhook-URL "der Registerkarte" Messaging-API "ein.
Wechseln Sie außerdem über die Schaltfläche Bearbeiten im obigen Bild zum Bildschirm für die Antworteinstellung und stellen Sie Folgendes ein.
Wenn Sie jetzt eine Nachricht an LINE senden, wird die Anforderung über den ngrok-Endpunkt an den lokal ausgeführten Server gesendet.
Senden wir tatsächlich eine Nachricht mit dem als Freund registrierten Bot. Wenn Sie die gleiche Nachricht erhalten, sind Sie erfolgreich! !!
Da ngrok
bei jedem Start einen anderen Endpunkt ausgibt, müssen Sie auch die Webhook-URL von LINE-Entwicklern ändern, wenn Sie ihn nach dem Beenden erneut starten.
Ich habe die Erklärung des Quellcodes weggelassen, aber der SDK-Quellcode gibt nur einen Papagei einer Textnachricht zurück. Die folgenden zwei Beispiele für das Ändern des Verhaltens als Step-up werden als Probleme beschrieben. Versuchen Sie es daher, wenn Sie möchten.
Der durch text
der Funktion handle_message
angegebene Wert ist der Inhalt der Antwort.
In der ursprünglichen Quelle wurde "event.message.text" festgelegt, und diese "event.message.text" war der Inhalt der von uns gesendeten Nachricht, sodass sie als Papagei zurückgegeben wurde.
Mit anderen Worten, Sie können "text" auf "Danke für Ihre Nachricht!" Setzen.
app.py
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
- TextSendMessage(text=event.message.text))
+ TextSendMessage(text='Danke für die Nachricht!'))
Der Grund, warum nur Textnachrichten behandelt werden, besteht darin, dass der Dekorateur von "@ handler.add (MessageEvent, message = TextMessage)" dem WebhookHandler mitteilt, dass "wenn ein Nachrichtenereignis vom Typ TextMessage auftritt, die Funktion" handle_message "verarbeitet wird. Das liegt daran, dass wir es tun. Sie können eine Funktion hinzufügen, um Ereignisse vom Stempeltyp (StickerMessage) auf dieselbe Weise zu behandeln.
app.py
+ @handler.add(MessageEvent, message=StickerMessage)
+ def handle_sticker_message(event):
+ line_bot_api.reply_message(
+ event.reply_token,
+ TextSendMessage(text='Es ist eine süße Briefmarke'))
Unter API-Spezifikationen finden Sie Informationen zu den anderen verfügbaren Ereignistypen und Nachrichtentypen.
Ich finde es sehr gut, dass Sie den Betrieb einfach lokal überprüfen können. Es ist jedoch ein Chaos, es ständig lokal starten zu müssen oder die Webhook-URL bei jedem Start zurückzusetzen. Diese Art von Mentalität kann gelöst werden, indem der Server über einen Cloud-Dienst gestartet wird. Daher möchte ich ihn ab dem nächsten Mal ansprechen.
Recommended Posts