J'ai créé un robot à l'aide de LINE Messaging API dans l'environnement Python + Google App Engine. Parfois, je n'en savais pas grand-chose, alors j'aimerais l'écrire ici sous forme de mémorandum.
** La recherche de GoogleAppEngine ** etc. fera apparaître diverses informations, je voudrais donc laisser les détails de l'installation et les paramètres à cela.
Cette fois, j'ai utilisé ** l'environnement standard ** de ** Python **. Python a également un environnement ** Environnement flexible **, qui est meilleur que l'environnement standard, mais il semble qu'il n'y ait pas de niveau gratuit.
activate py27
, puis taper la commande.
gcloud auth login, définissez `` gcloud init
en fonction de l'écran, et `gcloud app deploy [project yaml file]`
Ou faites `` gcloud app deploy` '' dans le répertoire racine du projet et c'est OK.
-- gcloud app deploy --version 2
Il est également possible de gérer la version lors du déploiement.--``` pip install [module] -t [emplacement d'installation] Il est préférable d'installer en utilisant `` `etc. pour résoudre les dépendances. (Utilisé lors de l'installation de ** - t ** = ** - target ** dans un emplacement différent de l'emplacement normal du module.)
pip install -help``` etc. dans la commande, ** help ** dans ** install ** de ** pip ** sera affiché. Si j'avais su cela depuis le début, je n'aurais pas eu une période aussi difficile ...De plus, il ne suffit pas de déployer la bibliothèque ensemble et divers paramètres sont nécessaires. Selon le DOC officiel, vous pouvez rendre le répertoire ** lib ** contenant le module reconnaissable en déployant ** appengine_config.py ** ensemble. Si vous voulez reconnaître d'autres répertoires, vous pouvez changer * lib * en * [nom arbitraire] * dans le code ci-dessous.
appengine_config.py
# [START vendor]
import os
from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))
# [END vendor]
――Je ne savais pas trop comment cela était nécessaire, mais il semble préférable d'inclure également ** requirements.txt **. Si vous collez le résultat de `` pip freeze '', cela semble correct pour le moment.
Avec les paramètres ci-dessus, enfin du côté code
code
import flask
Vous pourrez faire quelque chose.
** LINE Messaging API ** a une bibliothèque pour python, et en fait cette fois, l'un des objectifs était de l'utiliser. line-bot-sdk-python sur GitHub (peut être installé avec pip)
Notez également ici que ** line-bot-sdk-python ** nécessite un module appelé requêtes de communication avec l'extérieur, mais ** GAE ne peut pas utiliser de requêtes. **à propos de ça. (Un module Google appelé URLFetch est nécessaire pour obtenir, publier, etc. avec GAE)
À la suite de diverses enquêtes, il y avait un module qui relie URLFetch et les requêtes, donc je l'ai installé et ajouté / changé en line-bot-sdk-python comme suit.
/lib/linebot/api.py
#※/lib est le répertoire dans lequel vous avez installé le module.
# [START imports]
import requests
import requests_toolbelt.adapters.appengine
# Use the App Engine Requests adapter. This makes sure that Requests uses
# URLFetch.
requests_toolbelt.adapters.appengine.monkeypatch()
# [END imports]
Vous pouvez désormais l'utiliser dans GAE sans modifications majeures de line-bot-sdk-python. Avec cette bibliothèque, vous n'avez pas à créer votre propre objet de réponse LINE. Cliquez ici pour les spécifications détaillées de ** API LINE Messaging **: Référence API Line
Code côté réception HTTPS
jsonObject = request.json
line_request = jsonObject['events'][0] #Le contenu de la demande
Ici vous pouvez voir le contenu du message provenant de LINE avec line_request. Écrivez ceci au début du code qui traite le message.
Code principal du BOT
line_bot_api = LineBotApi(your_channel_access_token)
parser = WebhookParser(your_channel_secret))
Le reste est facile. (L'objet de message ici est l'objet * Envoyer un message * sur le côté LIGNE.)
Code principal du BOT
line_bot_api.reply_message(
replyToken,
TextSendMessage(text=event.message.text)
)
--``` line_bot_api.reply_message (replyToken, objet de message)
Répondre avec`
-- Object (text) = TextSendMessage (text = "text") `` ` --
Object (photo) = ImageSendMessage (original_content_url = "URL de l'image d'origine", preview_image_url = "URL de la gorge") ` --``` Object (Video) = VideoSendMessage (original_content_url = "Original Video URL", preview_image_url = "Throat URL")
--``` Object (vidéo) = AudioSendMessage (original_content_url = "URL audio d'origine", durée = "longueur (dans 1 minute)") ``
-- Object (Video) = LocationSendMessage (title = "Title", address = "Address", latitude = "Latitude", longitude = "Distance") `` ` --
Object (vidéo) = StickerSendMessage (package_id = "package ID", sticker_id = "sticker ID") `` `
Recommended Posts