Ich habe einen Bot mithilfe der Umgebung LINE Messaging API in Python + Google App Engine erstellt. Manchmal wusste ich nicht viel darüber, deshalb möchte ich es hier als Memorandum aufschreiben.
** Wenn Sie nach GoogleAppEngine ** usw. suchen, werden verschiedene Informationen angezeigt. Daher möchte ich die Details der Installation und der Einstellungen dem überlassen.
Dieses Mal habe ich ** Standardumgebung ** von ** Python ** verwendet. Python hat auch eine ** flexible Umgebung **, die besser ist als die Standardumgebung, aber es scheint, dass es keine freie Ebene gibt.
--Das diesmal verwendete Python ist * 2.7.9 *, wird jedoch von der Python 3-Version ** Anaconda ** versioniert.
`py27
aktivieren und dann den Befehl eingeben.`gcloud auth login```, stellen Sie`
gcloud init entsprechend dem Bildschirm ein und `` `gcloud app deploy [project yaml file]` `` Oder führen Sie `` `gcloud app deploy`` `im Stammverzeichnis des Projekts aus und es ist OK. --
gcloud app deploy --version 2``` Es ist auch möglich, die Version während der Bereitstellung zu verwalten.--``` pip install [module] -t [Installationsort] Es ist besser, in Form der Auflösung von Abhängigkeiten mithilfe von `` `usw. zu installieren. (Wird verwendet, wenn ** - t ** = ** - target ** an einem anderen Ort als dem normalen Modulstandort installiert wird.)
―― Darüber hinaus reicht es nicht aus, die Bibliothek nur gemeinsam bereitzustellen, und es sind verschiedene Einstellungen erforderlich. Laut offiziellem DOC können Sie das Verzeichnis ** lib ** mit den Modulen erkennbar machen, indem Sie ** appengine_config.py ** zusammen bereitstellen. Wenn Sie andere Verzeichnisse erkennen möchten, können Sie * lib * im folgenden Code in * [beliebiger Name] * ändern.
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]
――Ich war mir nicht sicher, wie es gebraucht wurde, aber es scheint besser, auch ** require.txt ** aufzunehmen. Wenn Sie das Ergebnis von `` `pip freeze``` einfügen, scheint es vorerst in Ordnung zu sein.
Mit den obigen Einstellungen endlich auf der Codeseite
Code
import flask
Sie werden in der Lage sein, etwas zu tun.
** LINE Messaging API ** verfügt über eine Bibliothek für Python, und dieses Mal bestand einer der Zwecke darin, sie zu verwenden. line-bot-sdk-python auf GitHub (Kann mit pip installiert werden)
Beachten Sie auch hier, dass ** line-bot-sdk-python ** ein Modul namens Anfragen für die Kommunikation mit der Außenwelt erfordert, ** GAE jedoch keine Anfragen verwenden kann. **darüber. (Ein Google-Modul namens URLFetch ist erforderlich, um GAE abzurufen, zu veröffentlichen usw.)
Aufgrund verschiedener Untersuchungen gab es ein Modul, das URLFetch und Anforderungen miteinander verbindet. Daher habe ich es installiert und wie folgt in line-bot-sdk-python hinzugefügt / geändert.
/lib/linebot/api.py
#※/lib ist das Verzeichnis, in dem Sie das Modul installiert haben.
# [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]
Jetzt können Sie es in GAE ohne größere Änderungen an line-bot-sdk-python verwenden. Mit dieser Bibliothek müssen Sie kein eigenes LINE-Antwortobjekt erstellen. Klicken Sie hier für detaillierte Spezifikationen der ** LINE Messaging API **: Line API Reference
HTTPS-Empfangsseitencode
jsonObject = request.json
line_request = jsonObject['events'][0] #Der Inhalt der Anfrage
Hier sehen Sie den Inhalt der Nachricht von LINE mit line_request. Schreiben Sie dies am Anfang des Codes, der die Nachricht verarbeitet.
BOT-Hauptcode
line_bot_api = LineBotApi(your_channel_access_token)
parser = WebhookParser(your_channel_secret))
Der Rest ist einfach. (Das Nachrichtenobjekt hier ist das * Nachrichtenobjekt senden * auf der LINE-Seite.)
BOT-Hauptcode
line_bot_api.reply_message(
replyToken,
TextSendMessage(text=event.message.text)
)
--``` line_bot_api.reply_message (replyToken, Nachrichtenobjekt) `` Antworten mit
-- Object (text) = TextSendMessage (text = "text") `` ` --
Objekt (Foto) = ImageSendMessage (original_content_url = "Originalbild-URL", Vorschau_image_url = "Hals-URL") ` --``` Object (Video) = VideoSendMessage (original_content_url = "Original Video URL", Vorschau_image_url = "Throat URL")
--``` Objekt (Video) = AudioSendMessage (original_content_url = "ursprüngliche Audio-URL", Dauer = "Länge (innerhalb von 1 Minute)") ``
-- Object (Video) = LocationSendMessage (title = "Title", address = "Address", width = "Latitude", longitude = "Distance") `` ` --
Object (Video) = StickerSendMessage (package_id = "package ID", sticker_id = "sticker ID") `` `
Recommended Posts