[GO] Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt

Einführung

Ich nahm am Sommerpraktikum von Sai Seed Co., Ltd. teil und entwickelte LINE Chatbot. Da die offizielle Version der Messaging-API am 29.9.2016 von LINE angekündigt wurde, habe ich diesmal einen Bot erstellt, der automatisch mit der offiziellen Version antwortet. Dieser Beitrag [Ich habe Chatbot mit LINE Messaging API und Python erstellt (1)] (http://qiita.com/Kosuke-Szk/items/eea6457616b6180c82d) Es ist eine Fortsetzung von. Dieses Mal werden wir die Serverkonstruktion und die Registrierung von Webhook-URLs beschreiben.

Quellcode

Der Quellcode ist auf github verfügbar. https://github.com/Sciseed/yukko-line-bot

Entwicklungsumgebung

・ MAC OS X 10.10.3 ・ Python 3.4.0 ・ Django 1.8.14

Dinge notwendig

.heroku Konto ・ Heroku-Werkzeuggürtel ・ Virtualenv

Erstellen Sie eine leere App mit Django

Verzeichnis für Apps erstellen

$ mkdir bottest $ cd bottest

Aufbau einer virtuellen Umgebung

$ virtualenv virenv $ source virenv/bin/activate

Installieren Sie den Django-Werkzeuggürtel

$ pip install django-toolbelt

Erstellen Sie ein Django-Projekt

$ django-admin.py startproject bottest

Erstellen Sie eine Django-App

$ cd bottest $ python manage.py startapp bot

Gunicorn Einstellungen

Verwenden Sie es, da Gunicorn im Django-Werkzeuggürtel enthalten ist ``

Procfile erstellen

Erstellen Sie ein Procfile (ohne Erweiterung) auf der obersten Ebene der App und schreiben Sie die folgenden Inhalte

web: gunicorn bottest.wsgi bot:app --log-file -

Python-Versionsspezifikation

Erstellen Sie eine Textdatei mit dem Namen runtime.txt in derselben Hierarchie wie Procfile und schreiben Sie sie wie folgt.

runtime.txt


python-3.4.0

Dadurch wird die Python-Version erkannt, wenn die App auf Heroku ausgeführt wird (erforderliche Arbeit für die 3.X-Serie).

Versuchen Sie, einen lokalen Server zu starten

$ python manage.py runserver

In dieser Spezifikation werden Nachrichtendaten nur über eine externe API ausgetauscht, sodass keine internen Daten gespeichert werden müssen und keine Datenbank verwendet wird. Sie werden also zur Migration aufgefordert, dies ist jedoch nicht erforderlich. http://127.0.0.1:8000/ Um den Betrieb zu überprüfen.

In Heroku bereitstellen

Git-Management

$ git init
$ git add .
$ git commit -m "Initial commit"

Erstellen Sie ein Repository in Heroku $ heroku create [app name] In Heroku bereitstellen$ git push heroku master Überprüfen Sie, ob bereitgestellt$ heroku open`

Testen Sie die Webhook-URL

Geben Sie die URL der Heroku-Anwendung zur Überprüfung in die Webhook-URL ein. (Zum Zeitpunkt des Tests sollte die App selbst nichts mit der Anfrage tun.) image Wenn dies fehlschlägt, werden Sie über den Fehlerstatus informiert. Bei Erfolg wird nichts angezeigt.

In diesem Moment heroku logs -t Durch Anzeigen des Protokolls mit können Sie überprüfen, wie die POST-Überprüfungsmethode verarbeitet wird. Wenn 200 im HTTP-Status zurückgegeben wird, ist dies erfolgreich.

Test vom LINE-Client

Sprechen wir mit dem Bot über die LINE-App. Bei Erfolg sollte eine Textnachricht zusammen mit der POST-Methode aus dem Heroku-Protokoll angezeigt werden.

Ich war süchtig nach

・ Die POST-Anfrage wurde von csrf ständig abgelehnt django hat Maßnahmen ergriffen, um Web-Apps vor CSRF-Angriffen (Cross Site Request for Geries) zu schützen. Grob gesagt ist es eine Funktion, die keine anderen POST-Anforderungen als die reguläre Route akzeptiert. Aus diesem Grund wird beispielsweise eine Fehlermeldung angezeigt, wenn Sie einen POST mit Curl in die App werfen und natürlich versuchen, dies anhand von LINE zu überprüfen. Da dies ein Test ist, deaktivieren Sie vorübergehend den CSF-Schutz

settings.py


    MIDDLEWARE_CLASSES = [
                 ...
    'django.middleware.csrf.CsrfViewMiddleware', #<=Kommentar hier raus
                 ...
]

Referenz

So stellen Sie die Django-App in nur 5 Minuten für Heroku bereit Verliere nicht gegen Ruby! So führen Sie Python (Django) auf Heroku aus

Recommended Posts

Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe einen Line-Bot mit Python gemacht!
Ich habe versucht, LINE-Bot mit Python + Flask + ngrok + LINE Messaging API zu erstellen
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
[Python] Ich habe eine REST-API mit AWS API Gateway und Lambda geschrieben.
Python Qiita API Wrapper "qiipy" gemacht
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
Ich habe einen Anmelde- / Abmeldevorgang mit Python's Bottle durchgeführt.
[LINE Messaging API] Erstellen Sie mit Python ein umfangreiches Menü
[Python] Ich habe einen LINE-Bot erstellt, der Gesichter erkennt und Mosaikverarbeitungen durchführt.
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
Ich habe mit Python einen Daemon erstellt
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
[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 ein Spiel namens Battle Ship mit Pygame und Tkinter gemacht
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
Ich habe eine Python-Wrapper-Bibliothek für die Docomo-Bilderkennungs-API erstellt.
Ich habe einen Chat-Chat-Bot mit Tensor2Tensor erstellt und diesmal hat es funktioniert
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe versucht, mit einer Schildkröte eine Linie zu ziehen
Anfänger: Ich habe einen Launcher mit dem Wörterbuch erstellt
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe mit Python eine Hex-Map erstellt
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
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
Starten Sie einen Webserver mit Bottle and Flask (ich habe auch versucht, Apache zu verwenden)
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Ich habe einen Musik-Bot mit discord.py und der Google Drive-API erstellt (getestet mit Docker → bereitgestellt für Heroku).
Ich habe einen Stempelersatzbot mit Linie gemacht
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Erstellen Sie eine Webmap mit Python und GDAL
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Starten Sie einen Webserver mit Python und Flask
Bereiten Sie einen Pseudo-API-Server mit GitHub-Aktionen vor
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
[LINE Messaging API] Ich möchte eine Nachricht vom Programm an alle LINE senden
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!