[PYTHON] Erstellen Sie mit GoogleAppEngine / py einen LINE-Bot. Einfache nackte Version

LINEbot ist 1on1, nicht wahr? Ist es nicht möglich, es einer Gruppe wie einem normalen Bot hinzuzufügen?

Übrigens, LINE Bot erhöht die Hürde, wo ein SSL-Server benötigt wird. Machen wir das schnell mit https-ready GAE. Das Problem ist, wie man die IP während des Meg-Sendens repariert, aber das ist schlammig. Ich werde es später beschreiben.

Python-Bibliothek

Ich werde flask verwenden, also lasst uns lib im Projektordner graben und es pip

sh


$ pip install -t lib flask

GAE-Quelle

python



#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
import urllib
import json
from google.appengine.ext import vendor
vendor.add('lib')
from google.appengine.api import urlfetch

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/')
def index():
  return 'hello my line bot'

@app.route('/callback', methods=["POST"])
def linebot():
  args = json.loads(request.get_data().decode('utf-8'))
  logging.debug('kick from line server,\n %s'%(args['result']))
  for msg in args['result']:
    kickBot( msg["content"]["from"], msg["eventType"], msg["content"]["text"] )
  return "{}"

def kickBot(tgt_id, event_type, msg_data):
  url = "https://trialbot-api.line.me/v1/events"
  form_fields = {
      "to": [str(tgt_id)],
      "toChannel": 1383378250,
      "eventType": 138311608800106203,
      "content":{
        "contentType":1,
        "toType":1,
        "text":u"Nackt%s !"%(msg_data)
        }
      }
  logging.debug(form_fields)
  form_data = urllib.urlencode(form_fields)
  result = urlfetch.fetch(
    url=url,
    payload=json.dumps(form_fields,ensure_ascii=False),
    method=urlfetch.POST,
    headers={
                'Content-type':'application/json; charset=UTF-8',
                'X-Line-ChannelID':'<YOUR-ID>',
                'X-Line-ChannelSecret':'<YOUR-SECRET>',
                'X-Line-Trusted-User-With-ACL':'<YOUR-ACL>?',
            }
    )
  if result.status_code == 200:
    logging.debug(result.content)
  else:
    logging.debug(result.content)

yaml


application: <YOUR-GAE-NAME>
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

LINE Bot Einstellungen

CallBack-Einstellungen

Lassen Sie / callback eine LINE-Server-Nachricht senden. https://developers.line.me/channels/<YOUR-CHANNEL-ID> Registrieren Sie es in der Rückruf-URL auf der Dev-Konsole von LINE.

https://your-gae.appspot.com:443/callback

So registrieren Sie die Whitelist-IP

Lassen Sie uns die obige GAE-App veröffentlichen und an den Bot twittern. Derzeit erfolgt keine Antwort. Dies liegt daran, dass die IP nicht auf dem LINEbot-Server registriert ist. In GAE sind die IP, die dem veröffentlichten App-Namen zugeordnet ist, und die IP des Servers, auf dem urlfetch ausgeführt wird, angegeben Da sie nicht identisch sind, müssen Sie tatsächlich LINEbot von GAE drücken, um die IP zu untersuchen.

Auf der Protokollierungskonsole von GCP wird Solch eine IP! Ich denke du bekommst einen Fehler wie . Das ist der eine.

{"statusCode":"427","statusMessage":"Your ip address [Diese Adresse] is not allowed to access this API."}

Die IP-Adresse, die in dieser "diesmaligen Adresse" angezeigt wird, ist in der White List der Dev-Konsole von LINE registriert. Wenn Sie es mehrmals tun, sehen Sie möglicherweise einige Unterschiede. Bitte registrieren Sie sich jedes Mal. In meinem Fall habe ich ungefähr 3 registriert, aber es hat nicht mehr zugenommen. (GAE-Version wird geändert und bereitgestellt)

Jetzt erhalten Sie eine Antwort vom Bot.

スクショ.png

Hinweis

Diese Implementierung dient nur zur Überprüfung. Es ist nur einfacher Text. Was passiert also, wenn Sie den Typ ändern, egal ob es sich um ein Video oder ein Bild handelt? Überprüfen Sie bitte das. Der Grund ist, dass es nicht einmal etwas Verkehr verarbeiten kann. Weitere Informationen finden Sie hier

In Zukunft plane ich, mit TQ eine Version zu erstellen, die asynchron übergeben wird.

Recommended Posts

Erstellen Sie mit GoogleAppEngine / py einen LINE-Bot. Einfache nackte Version
Erstellen Sie mit Amazon Lex einen LINE WORKS-Bot
Machen Sie einen LINE BOT (Chat)
Machen Sie mit LINE + Flask einen morphologischen Analyse-Bot
[Super einfach] Machen wir einen LINE BOT mit Python.
Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen
Machen wir einen Twitter-Bot mit Python!
Python-Anfänger haben beschlossen, einen LINE-Bot mit Flask zu erstellen (Flask-Kommentar)
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Machen Sie Twitter Trend Bot mit Heroku + Python
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie mit Flask einen einfachen Punktbildgenerator
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Machen Sie einen LINE BOT
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Lassen Sie einen Papagei LINE Bot mit AWS Cloud9 zurückgeben
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
[Zum Spielen] Versuche Yuma zu einem LINE Bot zu machen (Python)
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
Machen wir einen Discord Bot.
Erstellen Sie eine App für maschinelles Lernen mit ABEJA Platform + LINE Bot
Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht
Bis Django etwas mit einem Linienbot zurückgibt!
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Machen Sie eine Lotterie mit Python
Machen Sie ein Feuer mit kdeplot
Lassen Sie uns einen LINE-Bot mit verschiedenen Diensten erstellen [ngrok edition]
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
Erstellen Sie mit Python und OpenCV ein einfaches OMR (Mark Sheet Reader)
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
[Python] Erstelle deinen eigenen LINE-Bot
Lassen Sie uns eine GUI mit Python erstellen.
Machen Sie einen Sound mit Jupyter Notebook
Wie man einen lockeren Bot macht
Machen wir einen Blockbruch mit wxPython
Erstellen Sie ein Empfehlungssystem mit Python
Machen Sie einen Filter mit einer Django-Vorlage
[LINE Bot] Ich bin ein Ranger! Teil 2
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Erstellen Sie mit PySide einen Modelliterator
Machen Sie eine schöne Grafik mit Plotly
Erstellen Sie mit Django einen LINE-Bot
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
So erstellen Sie einen LINE-Bot mit künstlicher Intelligenz mit der Flask + LINE Messaging-API
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Tweet die Wettervorhersage mit Bot
Erstellen einer einfachen Power-Datei mit Python
Einfacher RSS-Reader mit Django
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Zeigen Sie Disneys Wartezeit mit dem LINE-Bot an