Vorgehensweise zum Erstellen eines mit Python erstellten LineBot

Vorwort

Viele Artikel haben darüber geschrieben, wie man einen Linebot erstellt, aber da ich ein Anfänger war, hatte ich einen Stolperstein, also habe ich das wieder wettgemacht und es mir leicht gemacht, es zu verstehen. Da dies ein Artikel ist, den ich für mich selbst gemacht habe, gibt es viele Punkte, die schwer zu verstehen sind, aber bitte geben Sie Ihr Bestes, während Sie auf andere Artikel verweisen.

Prämisse: LineBot wurde erstellt

スクリーンショット 2020-02-01 11.10.20.png #### Holen Sie sich Kanalgeheimnis ![スクリーンショット 2020-05-06 17.13.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517291/204af3f7-9656-3ddb-d799-e9ff025776b4.png)

Kanalzugriffstoken abrufen

Voraussetzung Heroku-Konto erstellt & Guthaben registriert

  1. Starten Sie das Terminal 2、
$mkdir lineBotTest

$cd lineBotTest

Eingeben 3, starten Sie die Textbearbeitung in der Anwendung 4, wählen Sie das Format in der oberen Leiste aus, wählen Sie Standardtext aus, kopieren Sie Folgendes und fügen Sie es ein Keine Notwendigkeit, 'LINE_CHANNEL_SECRET'etc zu ändern. Kopieren wie es ist

import os
import sys
from argparse import ArgumentParser
from flask import Flask, request, abort
from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

"""
heroku config:set LINE_CHANNEL_SECRET="Kanalgeheimnis" --App App Name
Wird im Terminal eingegeben, so wird das Kanalgeheimnis jedes Mal automatisch im folgenden Code eingegeben.
Das Zugriffstoken ist das gleiche, sodass es nicht geändert werden muss.
"""
channel_secret = os.getenv('LINE_CHANNEL_SECRET', None)
channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None)

"""
Null-Kanal-Geheimnis oder Zugriffstoken(nichts)Bearbeitung bei
"""
if channel_secret is None:
    print('Specify LINE_CHANNEL_SECRET as environment variable.')
    sys.exit(1)
if channel_access_token is None:
    print('Specify LINE_CHANNEL_ACCESS_TOKEN as environment variable.')
    sys.exit(1)
    
"""
Holen Sie sich Token usw. aus Heroku-Variablen
"""
line_bot_api = LineBotApi(channel_access_token)
handler = WebhookHandler(channel_secret)

"""
Webhook von LINE
Grundfunktionen, die sich nicht ändern
"""
@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)
    except InvalidSignatureError:#Gibt 400 zurück, wenn ein Fehler auftritt
        abort(400)
    return 'OK'

"""
Massage-Event online(Wenn eine Textnachricht gesendet wird)Wird wann angerufen
line_bot_api.reply_Ereignis des ersten Arguments der Nachricht.reply_Token wird verwendet, um auf Ereignisse zu reagieren
Das zweite Argument ist Linebot.Übergeben Sie das in Modellen definierte TextSendMessage-Objekt zur Antwort
"""
@handler.add(MessageEvent, message=TextMessage)
def message_text(event):
    #Was wurde eingegeben(event.message.text)Antwort nach
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text)
    )

if __name__ == "__main__":#Stellen Sie fest, ob es mit der richtigen Dateierweiterung ausgeführt wird
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)
  1. Nennen Sie es main.py. Speichern Sie es auch in lineBotTest An diesem Punkt スクリーンショット 2020-02-01 11.32.48.png Es sollte so sein.

  2. Vergewissern Sie sich, dass es sich im Terminal um den Benutzer $ line von LineBotTest handelt, und geben Sie den folgenden Befehl ein

$brew tap heroku/brew && brew install heroku

$heroku login
//Drücken Sie eine andere Taste als q, um die Anmeldung zu starten

$Heroku erstellen App-Namen
//Verwenden Sie von anderen erstellte App-Namen und eindeutige Namen, die nicht leiden
//heroku create linetest0000 Verwenden Sie diesmal linetest0000

$heroku addons:create fixie:tricycle --app linetest0000
//Hinzufügen des Add-Ons "Fixie"

$pipenv install flask
$pipenv install line-bot-sdk
//"Pipfile" und "Pipfile" im Ordner."Sperre" wird generiert.

/*
Geben Sie beim Web Scraping ein
$pipenv install bs4
$pipenv install requests
*/

$heroku config:set LINE_CHANNEL_SECRET="Kanalgeheimnis" --app linetest0000
//Geben Sie das erste erfasste Kanalgeheimnis ein

$heroku config:set LINE_CHANNEL_ACCESS_TOKEN="Zugriffstoken (langfristig)" --app linetest0000
//Geben Sie das erste Zugriffstoken ein, das Sie erhalten haben

$echo web: python main.py > Procfile
//Profilerstellung

$heroku git:remote --app linetest0000

$git init

$git add -A

$git commit -m "Geben Sie einen Kommentar ein"

$git push heroku master

git add -A Die folgenden Befehle sind die Befehle, die eingegeben werden müssen, um anzuzeigen, wann der Code geändert wird.

Webhook-Einstellungen
スクリーンショット 2020-02-01 12.53.56.png Geben Sie "https://appname.herokuapp.com/callback" ein.

Hinweis

Wenn Sie in Ihrem Code den Import verwenden, verwenden Sie Procfile

$Name der pipenv-Installationsbibliothek

Eingeben Geben Sie Procfile mit einem Befehl ein, anstatt ihn zu öffnen

Wenn es sich nicht bewegt

$heroku logs -t

Sie können das Protokoll unter sehen. Dies funktioniert normalerweise.

Damit ist der Vorgang abgeschlossen スクリーンショット 2020-02-01 13.42.47.png

Recommended Posts

Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv
Verfahren zum Erstellen einer Python-Isolationsumgebung (venv-Umgebung)
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)
Ich habe einen Line-Bot mit Python gemacht!
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Installationsverfahren für Python und Ansible mit einer bestimmten Version
Erstellen einer einfachen Power-Datei mit Python
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
Ein Lehrbuch für Anfänger von Python-Anfängern
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe viele Dateien für die RDP-Verbindung mit Python erstellt
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ein Memo beim Erstellen einer Python-Umgebung mit Miniconda
Hinweise zum Erstellen einer Python-Umgebung durch Anfänger
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
Verfahren zum Erstellen einer Anwendung mit Django mit Pycharm ~ Vorbereitung ~
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe mit Tkinter ein Fenster für die Protokollausgabe erstellt
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Probleme beim Erstellen eines CSV-JSON-Konvertierungstools mit Python
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Erstellen der ρ-Methode zum Entschlüsseln der elliptischen Kurve mit Python
Vorgehensweise zum Erstellen einer CDK-Umgebung unter Windows (Python)
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
[Python] Ich habe einen Klassifikator für Iris erstellt [Maschinelles Lernen]
Vorgehensweise zum Erstellen eines Linienbot in AWS Lambda
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen eines Python-Skripts
Installationsverfahren für Python 3.6 [für Windows]
Ich habe einen Blackjack mit Python gemacht!
Ein Ei mit Python erstellen
Machen Sie eine Lotterie mit Python
Ich habe einen Python-Text gemacht
Befehl für FizzBuzz erstellt
Ich habe mit Python einen Blackjack gemacht.
Erstellen Sie ein Verzeichnis mit Python
Othello gemacht mit Python (wie GUI)
Ich habe Wordcloud mit Python gemacht.
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
kabu Station® API-I hat einen Python-Wrapper für die REST-API erstellt
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Empfehlung von Django, Bachstelze ~ Warum eine Website mit Python entwickeln ~
[VSCode] Ich habe ein Benutzer-Snippet für Python-Druck-F-String erstellt
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
Ich habe versucht, LINE-Bot mit Python + Flask + ngrok + LINE Messaging API zu erstellen
Experimentieren Sie mit Python, um ein PDF für Selbstversorger für Kindle zu erstellen
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt