J'ai participé au stage d'été de Sai Seed Co., Ltd. et j'ai développé LINE Chatbot. Depuis que la version officielle de l'API de messagerie a été annoncée par LINE le 29/09/2016, cette fois j'ai créé un bot qui répond automatiquement avec la version officielle. Cet article [J'ai créé Chatbot avec l'API LINE Messaging et Python (1)] (http://qiita.com/Kosuke-Szk/items/eea6457616b6180c82d) C'est une continuation de. Cette fois, nous décrirons la construction du serveur et l'enregistrement de l'URL Webhook.
Le code source est disponible sur github. https://github.com/Sciseed/yukko-line-bot
・ MAC OS X 10.10.3 ・ Python 3.4.0 ・ Django 1.8.14
compte .heroku ・ Ceinture porte-outils Heroku ・ 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
Puisque gunicorn est inclus dans django-toolbelt, utilisez-le ``
Créez un fichier Procfile (sans extension) au niveau supérieur de l'application et écrivez le contenu suivant
web: gunicorn bottest.wsgi bot:app --log-file -
Créez un fichier texte appelé runtime.txt dans la même hiérarchie que Procfile et écrivez-le comme suit.
runtime.txt
python-3.4.0
Cela reconnaîtra la version python lors de l'exécution de l'application sur heroku (travail requis pour la série 3.X)
$ python manage.py runserver
Dans cette spécification, les données de message sont uniquement échangées via une API externe, il n'est donc pas nécessaire de conserver les données en interne et aucune base de données n'est utilisée. On vous demandera donc une migration, mais ce n'est pas nécessaire.
http://127.0.0.1:8000/
Pour vérifier le fonctionnement.
gestion git
$ git init
$ git add .
$ git commit -m "Initial commit"
Créer un référentiel dans heroku
$ heroku create [nom de l'application]
Déployer sur heroku
$ git push heroku master
Vérifier si déployé
$ heroku open
Tapez l'URL de l'application heroku dans l'URL du webhook pour vérifier. (Au moment du test, l'application elle-même ne doit rien faire à la demande) En cas d'échec, vous serez informé de l'état de l'erreur. En cas de succès, rien ne s'affiche.
Cette fois
heroku logs -t
En affichant le journal avec, vous pouvez vérifier comment la méthode de vérification POST est traitée. Si 200 est renvoyé dans l'état HTTP, il réussit.
Parlons au bot depuis l'application LINE. En cas de succès, vous devriez voir un message texte lancé avec la méthode POST du journal d'heroku.
・ La demande POST a été rejetée par csrf tout le temps django a pris des mesures pour protéger les applications Web des attaques CSRF (Cross site request for geries). En gros, c'est une fonction qui n'accepte pas les requêtes POST autres que l'itinéraire normal. Pour cette raison, par exemple, si vous lancez un POST à l'application avec curl, et bien sûr que vous essayez de vérifier à partir de LINE, vous obtiendrez une erreur. Puisqu'il s'agit d'un test, désactivez temporairement la protection CSRF
settings.py
MIDDLEWARE_CLASSES = [
...
'django.middleware.csrf.CsrfViewMiddleware', #<=Commentez ici
...
]
-Lors du passage de la vérification de l'API LINE, j'avais implémenté l'implémentation pour ajouter un traitement à la requête depuis le début, donc même si je lançais la requête de LINE, l'erreur continuait à revenir et j'en souffrais. (La réponse selon la spécification de format de réponse LINE n'a pas pu être retournée) Par conséquent, au moment du test, il est préférable de ne pas implémenter la partie traitement de la requête, mais de voir uniquement la réception de la requête POST et la simple réponse à celle-ci dans le journal. -J'ai eu du mal car j'ai fait une erreur dans le format de l'en-tête lorsque j'ai fait une demande à l'API LINE. (Il n'a pas été envoyé correctement au format dictionnaire.) Si une erreur est renvoyée, veuillez également vérifier que l'en-tête et le corps sont décrits dans le bon format.
Comment déployer l'application Django sur heroku en seulement 5 minutes Ne perdez pas contre Ruby! Comment exécuter Python (Django) sur Heroku
Recommended Posts