Ich habe versucht, LINE BOT mit Python und Heroku zu machen

Ich habe einen LINE BOT erstellt, der Papageien als Teil des Lernens von Python zurückgibt.

Vollständiges Bild

スクリーンショット 2020-11-23 210818.png Image from iOS.png

Umweltzusammensetzung

・ Python ・ Heroku ・ LINE-Entwickler · Flasche

Entwicklungsverfahren

  1. Registrierung und Einstellungen für LINE-Entwickler
  2. Heroku Registrierung & Einstellungen
  3. In Python implementiert
  4. LINE Developers-Einstellungen erneut
  5. In Heroku bereitstellen

Registrierung und Einstellungen für LINE-Entwickler

スクリーンショット 2020-11-23 230638.png Erstellen Sie ein LINE Developers-Konto, einen Anbieter und einen Kanal unter dem folgenden Link. https://developers.line.biz/ja/services/messaging-api/

Ein Konto erstellen

Sie können ein Konto mit Ihrem Namen und Ihrer E-Mail-Adresse erstellen.

Providererstellung

Erstellt mit dem Anbieternamen (Ihrem Namen oder Firmennamen)

Kanalerstellung

・ Kanaltyp → Messaging-API · Anbieter · Kanal Name · Kanal Beschreibung · Kategorie ・ Unterkategorie ·E-Mail-Addresse Erstellen Sie, indem Sie den Nutzungsbedingungen zustimmen.

Registriere dich als Freund

Grundeinstellungen des Kanals → Registrieren Sie sich als Freund mit dem QR-Code der Nachrichten-API.

Bestätigung der erforderlichen Informationen

Grundeinstellungen → Kanalgeheimnis prüfen Einstellungen der Nachrichten-API → Ausgabe und Bestätigung des Kanalzugriffstokens

Heroku Registrierung & Einstellungen

スクリーンショット 2020-11-23 230824.png Heroku ist einfach ein Dienst, der Sie auf die Veröffentlichung Ihrer Anwendung vorbereitet. Was ist Heroku

Heroku-Installation

Für die Installationseinstellungen usw. habe ich auf den folgenden Artikel verwiesen. https://uepon.hatenadiary.com/entry/2018/07/27/002843

Heroku-Einstellungen

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

In Python implementiert

スクリーンショット 2020-11-23 233037.png

Bibliotheksinstallation

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)

Webhook-Einstellungen

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

Konfigurationsdateien erstellen und bereitstellen

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

  • Procfile wird durch Eingabe von "echo web: python main.py> Procfile" an einer Eingabeaufforderung oder dergleichen erstellt.

Installiert in Heroku mit Git

スクリーンショット 2020-11-24 152809.png

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

Überprüfen Sie, ob es bereitgestellt wurde

heroku open

Wenn Hallo Welt angezeigt wird, wurde es erfolgreich bereitgestellt.

Protokollprüfung

heroku logs --tail

Sie können das Protokoll mit dem obigen Befehl überprüfen.

Wo es stecken bleibt

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.

Verweise

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

Recommended Posts

Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
[Python] Ich habe einen LINE-Bot erstellt, der Gesichter erkennt und Mosaikverarbeitungen durchführt.
Ich habe Chatbot mit LINE Messaging API und Python erstellt
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe mit Python eine Hex-Map erstellt
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
[Python] Ich habe einen Line-Bot erstellt, der zufällig nach englischen Wörtern fragt
Ich habe eine einfache Schaltung mit Python gemacht (AND, OR, NOR, etc.)
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Erstellen Sie mit Minette für Python einen LINE BOT
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Ich habe einen Blackjack mit Python gemacht!
Ich habe einen Python-Text gemacht
Ich habe einen Zwietrachtbot gemacht
Ich habe mit Python einen Blackjack gemacht.
Ich habe Wordcloud mit Python gemacht.
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
[Super einfach] Machen wir einen LINE BOT mit Python.
Ich habe einen Zeilenbot erstellt, der Python verwendet, um ungelesene E-Mails aus Google Mail abzurufen!
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
In Python habe ich einen LINE-Bot erstellt, der Polleninformationen aus Standortinformationen sendet.
Ich habe einen Musik-Bot mit discord.py und der Google Drive-API erstellt (getestet mit Docker → bereitgestellt für Heroku).
Ich habe einen Line-Bot mit Python gemacht!
Ich habe einen Wikipedia Gacha Bot gemacht
Ich habe mit PyQt5 und Python3 gespielt
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Bis Django etwas mit einem Linienbot zurückgibt!
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Ich habe mit Heroku + Flask + PostgreSQL (Heroku Postgres) einen LINE-Bot erstellt, der mir den Typ und die Stärke von Pokemon in der Garal-Region angibt.
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe eine Heatmap mit Seaborn [Python] gezeichnet.
Erstellen eines LINE-Bots ~ Erstellen, Bereitstellen und Starten von ~
Ein Memo mit Python2.7 und Python3 in CentOS
Ich habe viele Dateien für die RDP-Verbindung mit Python erstellt
[Python] [LINE Bot] Erstellen Sie einen LINE Bot mit Papageienrückgabe