Ich habe LineBot ausprobiert. Das Geld tut mir leid, also habe ich es mit GAE gebaut. Ich habe Python / Flask verwendet, weil Java umständlich ist.
Wenn Sie neu in diesem Bereich sind, wird es herauskommen.
Die Quelle sieht so aus.
app.yaml
runtime: python27
api_version: 1
threadsafe: yes
- url: .* # This regex directs all routes to main.app
script: main.app
libraries:
- name: ssl
version: latest
Zunächst passt es ohne Hinzufügen der SSL-Bibliothek.
Wenn der Benutzer mit dem Bot spricht, wird die im Rückruf angegebene API aufgerufen. Es ist, als würde man die API von Line in einem Rückruf aufrufen und Text und Fotos senden. Die Einstellungen für den Rückruf finden Sie im Handbuch und in anderen Qiita.
Die Quelle sieht so aus.
main.py
# -*- coding: utf-8 -*-
import logging, random
import requests
from flask import Flask, request,Response
app = Flask(__name__)
app.config.from_object(__name__)
app.logger.setLevel(logging.DEBUG)
LINE_ENDPOINT = "https://trialbot-api.line.me"
HEADERS = {
"X-Line-ChannelID": "<Siehe Basisinformationen>",
"X-Line-ChannelSecret": "<Siehe Basisinformationen>",
"X-Line-Trusted-User-With-ACL": "<Siehe Basisinformationen>"
}
#Nachrichtengruppe behoben
TALKS = [
"Beeindruckend! Komm schon! !!",
"Ja ... ich möchte ...",
"Pinkeln! Pinkeln!",
"Wo ist der Besitzer hingegangen?",
"Shinotomo ~~~",
"Ngu ~ ngu ~~",
"Hehehehehehehehe",
"Uo ・ e ・ oU",
"Lecken lecken",
"Ich möchte meine Hände lecken",
"Ich frage mich, ob der Reis gefallen ist",
"Einfach und leicht",
"Aussehen!",
"tanzen! Tanzen tanzen! !!"
]
#Bildgruppe
IMAGES = [
{"origin": "https://storage.googleapis.com/linebot-1275.appspot.com/monaka1.jpg ",
"thumb": "https://storage.googleapis.com/linebot-1275.appspot.com/monaka1thum.jpg "}
]
@app.route("/")
def hello():
return "line bot api"
@app.route("/callback", methods=["POST"])
def callback():
# TODO Signature validation
app.logger.info(request.json)
app.logger.info(request.headers)
req = request.json["result"][0]
if req["eventType"] == "138311609100106403":
"""
Der Empfang von Freundschaftsanfragen kommt hierher.
Senden Sie eine Dankesnachricht, sobald Sie sich bewerben.
TODO nicht verifiziert
"""
send_text([req["from"]], u"Es ist auch drinnen. Vielen Dank für Ihre Freundschaftsbewerbung.")
elif req["eventType"] == "138311609000106303":
"""
Kommen Sie hierher, wenn Sie eine Gesprächsnachricht erhalten.
Wenn Sie "Monaka" sagen, werden ein Foto und eine Nachricht zurückgegeben.
Andernfalls wird der vorbereitete Text zufällig zurückgegeben.
"""
to = [req["content"]["from"]]
if req["content"]["text"] == u"Monaka":
#Fotos senden
i = random.randint(0, len(IMAGES) - 1)
send_picture(to, IMAGES[i])
send_text(to, "Was?")
else:
#Messege senden
i = random.randint(0, len(TALKS) - 1)
send_text(to, TALKS[i])
#Der Rückgabewert ist auf 200 festgelegt
return Response(status=200)
def send_text(to, text):
"""
Senden Sie Text an
"""
content = {
"contentType": 1,
"toType": 1,
"text": text
}
events(to, content)
def send_picture(to, img):
"""
Bild senden an
"""
content = {
"contentType": 2,
"toType": 1,
"originalContentUrl": img["origin"],
"previewImageUrl": img["thumb"]
}
events(to, content)
def events(to, content):
"""
Daten für bis(Text / Bilder / Videos)Senden
"""
app.logger.info(content)
data = {
"to": to,
"toChannel": "1383378250",
"eventType": "138311608800106203",
"content": content
}
r = requests.post(LINE_ENDPOINT + "/v1/events", json=data, headers=HEADERS)
app.logger.info(r.text)
Da der Server auf der Whitelist steht, gibt der Server von Line einen Fehler zurück, wenn Sie die IP-Adresse nicht festlegen. Da es sich jedoch um GAE handelt, gibt es keine feste IP-Adresse. Als ich versuchte, darauf zuzugreifen, wurde ein 403-Fehler angezeigt und die folgende Meldung wurde angezeigt.
{"statusCode":"427","statusMessage":"Your ip address [107.178.194.118] is not allowed to access this API."}
Wenn Sie also diese IP-Adresse hinzufügen und verschieben
{"statusCode":"427","statusMessage":"Your ip address [107.178.194.122, 10.128.141.149] is not allowed to access this API."}
Als nächstes wurde ich gebeten, etwas festzulegen, das eine interne IP-Adresse zu sein scheint, also werde ich es gehorsam festlegen.
Es funktionierte. Es besteht eine hohe Wahrscheinlichkeit, dass sich die IP-Adresse eines Tages ändert und nicht funktioniert. Ich möchte die Lösung in Zukunft mir überlassen.
Es scheint, dass Sie es aus dem QR-Code tun können. (Ich habe es nicht verstanden und die ganze Zeit gelitten) Diesmal mein Hund "Monaka Bot"
Sie können hinzufügen von.
Recommended Posts