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.
Der Quellcode ist auf github verfügbar. https://github.com/Sciseed/yukko-line-bot
・ MAC OS X 10.10.3 ・ Python 3.4.0 ・ Django 1.8.14
.heroku Konto ・ Heroku-Werkzeuggürtel ・ Virtualenv
$ mkdir bottest
$ cd bottest
$ virtualenv virenv
$ source virenv/bin/activate
$ pip install django-toolbelt
$ django-admin.py startproject bottest
$ cd bottest
$ python manage.py startapp bot
Verwenden Sie es, da Gunicorn im Django-Werkzeuggürtel enthalten ist ``
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 -
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).
$ 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.
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`
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.) 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.
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.
・ 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
...
]
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