Ich habe einen LINE BOT erstellt, der Papageien als Teil des Lernens von Python zurückgibt.
・ Python ・ Heroku ・ LINE-Entwickler · Flasche
Erstellen Sie ein LINE Developers-Konto, einen Anbieter und einen Kanal unter dem folgenden Link. https://developers.line.biz/ja/services/messaging-api/
Sie können ein Konto mit Ihrem Namen und Ihrer E-Mail-Adresse erstellen.
Erstellt mit dem Anbieternamen (Ihrem Namen oder Firmennamen)
・ Kanaltyp → Messaging-API · Anbieter · Kanal Name · Kanal Beschreibung · Kategorie ・ Unterkategorie ·E-Mail-Addresse Erstellen Sie, indem Sie den Nutzungsbedingungen zustimmen.
Grundeinstellungen des Kanals → Registrieren Sie sich als Freund mit dem QR-Code der Nachrichten-API.
Grundeinstellungen → Kanalgeheimnis prüfen Einstellungen der Nachrichten-API → Ausgabe und Bestätigung des Kanalzugriffstokens
Heroku ist einfach ein Dienst, der Sie auf die Veröffentlichung Ihrer Anwendung vorbereitet. Was ist Heroku
Für die Installationseinstellungen usw. habe ich auf den folgenden Artikel verwiesen. https://uepon.hatenadiary.com/entry/2018/07/27/002843
Melden Sie sich mit GitCMD an
GitCMD
heroku login
heroku: Press any key to open up the browser to login or q to exit:
Opening browser to https://cli-auth.heroku.com/auth/browser/XXXX
Logging in... done
Logged in as XXXX@XXXX
Anmeldung zur Bewerbung
GitCMD
Heroku erstellen Sie Ihren Anwendungsnamen(Unter dem Namen der App)
Erstellen ● App-Name... done
https://App Name.herokuapp.com/ | https://git.heroku.com/App Name.git
Festlegen von Umgebungsvariablen → Referenz: Was sind Umgebungsvariablen Legen Sie das Kanalgeheimnis und das Kanalzugriffstoken fest, die zuvor in LINE Developers bestätigt wurden.
GitCMD
heroku config:set YOUR_CHANNEL_SECRET="Channel Secret String" --App App Name
heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="Zugriffstoken-Zeichenfolge" --App App Name
Mit dieser Einstellung "YOUR_CHANNEL_SECRET" ist ein Kanalgeheimnis "YOUR_CHANNEL_ACCESS_TOKEN" ist ein Kanalzugriffstoken Wird in Heroku als verfügbar sein.
Überprüfen Sie die Einstellungen
GitCMD
heroku config --App App Name
Geben Sie die folgenden Inhalte in GitCMD ein.
GitCMD
pip3 install flask
pip3 install line-bot-sdk
-Flask ist ein Python-Webanwendungsframework, mit dem einfache Webanwendungen für den kleinen Maßstab erstellt werden können. → Referenz: Was ist ein Kolben
-Line-bot-sdk enthält die Funktionen, die zum Erstellen eines LINE BOT erforderlich sind. → Referenz: Was ist line-bot-sdk
Für den eigentlichen Code habe ich auf der folgenden Site auf main.py verwiesen. https://uepon.hatenadiary.com/entry/2018/07/27/002843 Außerdem habe ich auf die folgende Website verwiesen, um zu verstehen, was geschrieben steht. https://www.wantedly.com/companies/casley/post_articles/139107
main.py
#Laden der erforderlichen Module
from flask import Flask, request, abort
import os
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
#Weisen Sie der variablen App einen Kolben zu. Instanziierung
app = Flask(__name__)
#Umgebungsvariablen abrufen
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
#Methode zur Bestätigung der Heroku-Anmeldeverbindung
#Wenn ich mich bei Heroku anmelde, wird "Hallo Welt" im Browser angezeigt
@app.route("/")
def hello_world():
return "hello world!"
#Wenn der Benutzer eine Nachricht sendet, wird diese Methode von der LINE-Nachrichten-API aufgerufen.
@app.route("/callback", methods=['POST'])
def callback():
#Rufen Sie den Wert für die Signaturüberprüfung aus dem Anforderungsheader ab
signature = request.headers['X-Line-Signature']
#Anfragetext abrufen
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
#Überprüfen Sie die Signatur und rufen Sie die im Handle definierte Funktion auf, wenn kein Problem vorliegt.
try:
handler.handle(body, signature)
#Wenn die Signaturüberprüfung fehlschlägt, wird eine Ausnahme ausgegeben.
except InvalidSignatureError:
abort(400)
#OK, wenn Sie die Verarbeitung abgeschlossen haben
return 'OK'
#Wenn ein Nachrichtenereignis (wenn eine normale Nachricht gesendet wird) in LINE auftritt,
#def Führen Sie die folgende Funktion aus.
# reply_Ereignis des ersten Arguments der Nachricht.reply_Token ist das Token, mit dem auf das Ereignis reagiert wird.
#Das zweite Argument ist Linebot.Wir übergeben das TextSendMessage-Objekt für die in Modellen definierte Antwort.
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
#Einstellung der Portnummer
if __name__ == "__main__":
# app.run()
port = int(os.getenv("PORT"))
app.run(host="0.0.0.0", port=port)
Kehren Sie erneut zur LINE-Nachrichten-API zurück und legen Sie das Heroku-Verbindungsziel in der Webhook-URL des Webhooks fest. Webhook-URL: https: // app name.herokuapp.com/callback * Vergessen Sie nicht, die Rückrufmethode am Ende </ font> einzugeben
Siehe: Was ist Bereitstellung? Erstellen Sie Dateien, die in Heroku installiert werden sollen (einschließlich des zuvor erwähnten Python-Quellcodes "main.py"). Überprüfen Sie die Version von Python usw., um eine Datei zu erstellen
GitCMD
python --version
GitCMD
pip freeze
Erstellen Sie ein Verzeichnis für die Bereitstellung (diesmal lautet der Ordnername Linebot). Dateien im Verzeichnis main.py → Quellcode runtime.txt → Beschreiben Sie die Python-Version Anforderungen.txt → Beschreibung der zu installierenden Bibliothek Procfile → Definieren Sie, wie das Programm ausgeführt werden soll
runtime.txt
Python 3.9.0
requirements.txt
Flask==1.1.2
line-bot-sdk==1.17.0
Procfile
web: python main.py
GitCMD
cd linebot
git init
git add .
git commit -am "make it better"
git push heroku master
In das von "cd" erstellte Verzeichnis verschoben und in den folgenden 4 Zeilen in Heroku installiert. Siehe: Was ist Git
heroku open
Wenn Hallo Welt angezeigt wird, wurde es erfolgreich bereitgestellt.
heroku logs --tail
Sie können das Protokoll mit dem obigen Befehl überprüfen.
Beim Kopieren des Kanalzugriffstokens der LINE-Nachrichten-API habe ich es im übersetzten Zustand kopiert und es wurde bei der Signaturüberprüfung abgefangen, und der Papagei wurde nicht zurückgegeben. Als ich die Übersetzung abbrach und kopierte, wurde der erwartete Wert zurückgegeben.
https://www.casleyconsulting.co.jp/blog/engineer/3028/ https://www.sejuku.net/blog/7858 https://uepon.hatenadiary.com/entry/2018/07/27/002843 https://www.wantedly.com/companies/casley/post_articles/139107