Dieser Artikel ist der 8. Tagesartikel von Senior Maru Adventskalender.
Hallo zusammen. Wie geht es Ihnen heute, wenn Sie feststellen, dass Sie eine ältere Person sind und kurz davor stehen, diese Probleme zu beenden? Apropos ältere Menschen, sie sind übrigens in den Vierzigern. In Bezug auf 40 wird Konfuzius in der Theorie als "vierzig lästig" bezeichnet und auch als "unangenehm" bezeichnet. Aber die Zeiten haben sich (vielleicht) geändert. Obwohl ich in meinen 40ern bin, bin ich immer noch ratlos. Aus diesem Grund verlangsamt sich die Urteilsgeschwindigkeit und ich bin in Schwierigkeiten.
Hier liefern wir Ihnen ein wunderbares Entscheidungshilfesystem! (Lange Annahme)
Betrachten Sie die Gesamtkonfiguration. Machen wir es schließlich mit LINE Bot unter Verwendung der LINE Messaging API, die aufgrund des Trends erst im Oktober 2016 veröffentlicht wurde. Selbst wenn Sie Älteste sagen, haben Sie einen LINE-Rang auf Ihrem Smartphone, oder? Wenn Sie es nicht haben, laden Sie es jetzt herunter. Ich möchte kein Geld für das Backend ausgeben, also lasst uns auf den Trend kommen und AWS Lambda (Python) verwenden. Und da es eine große Sache ist, machen wir es mit Severless Framework.
Registrieren Sie Ihr Konto über "Entwickler-Test starten" in LINE BUSINESS CENTER. Gehen Sie nach der Registrierung auf dem Anmeldebildschirm zu "Kontoliste" und dann zu "Geschäftskonto erstellen". Der Dienstauswahlbildschirm wird angezeigt. Wählen Sie daher "Messaging-API". Hier wurde der Kontoname mit "Senior Maru" erstellt. Die Art des Geschäfts mag angemessen sein, aber ich habe hier "Einzelperson (fiktive Person)" gewählt.
Fahren Sie nach Abschluss der Registrierung mit "LINE @ MANAGER" fort. Wir werden hier ein Bot-Konto einrichten, aber zuerst aktivieren wir die API.
Aktivieren Sie dann "Webhook senden". Stellen Sie außerdem "Automatische Antwortnachricht" auf "Nicht verwenden".
Wenn Sie fertig sind, klicken Sie im Bildschirm "Bot-Einstellungen" auf "Mit LINE-Entwicklern festlegen", um zur Seite "LINE-Entwickler" zu gelangen.
Klicken Sie auf die Schaltfläche "AUSGABE" neben dem Kanalzugriffstoken, um den Token auszuzahlen und diesen Token und das Kanalgeheimnis zu notieren.
Die Vorbereitungen sind vorerst abgeschlossen.
Installieren Sie mit dem Befehl npm. Installieren Sie npm ordnungsgemäß als yum.
#sudo npm install serverless -g
Lassen Sie uns überprüfen, ob es normal installiert ist.
#sls --help
Commands
* Serverless documentation: http://docs.serverless.com
* You can run commands with "serverless" or the shortcut "sls"
* Pass "--help" after any <command> for contextual help
config credentials ............ Configures a new provider profile for the Serverless Framework
create ........................ Create new Serverless service
install ....................... Install a Serverless service from GitHub
deploy ........................ Deploy a Serverless service
deploy function ............... Deploy a single function from the service
deploy list ................... List deployed version of your Serverless Service
invoke ........................ Invoke a deployed function
invoke local .................. Invoke function locally
info .......................... Display information about the service
logs .......................... Output the logs of a deployed function
metrics ....................... Show metrics for a specific function
remove ........................ Remove Serverless service and all resources
rollback ...................... Rollback the Serverless service to a specific deployment
slstats ....................... Enable or disable stats
Plugins
AwsConfigCredentials, Config, Create, Deploy, Info, Install, Invoke, Logs, Metrics, Package, Remove, Rollback, SlStats
Wenn die Hilfe wie oben angezeigt wird, ist sie erfolgreich. "Sls" ist ein kurzer Alias für den Befehl serverless. Es wurde bestätigt, dass dieser Artikel mit npm 3.9.2 und serverless 1.3.0 unter FreeBSD 11.0 funktioniert.
Erstellen Sie zunächst ein serverloses Projekt.
#mkdir line-syorou
#cd line-syorou
#sls create -t aws-python
Geben Sie die Vorlage mit -t an. Da hier AWS Lambda (Python) verwendet wird, wird "aws-python" angegeben.
Dadurch werden zwei Dateien im aktuellen Verzeichnis erstellt, "handler.py" und "serverless.yml". hapdler.py ist das Programm selbst und serverless.yml ist die Konfigurationsdatei. Es ist sehr einfach!
Stellen Sie serverless.yml ein. Diesmal gibt es fast keinen Ort zum Umschreiben. Wenn HTTP GET und HTTP POST zu https: // XXXXXXXX / syorou gelangen, rufen wir die Funktion syorou in handler.py auf. Bitte schreiben Sie nur die folgenden Stellen neu.
functions:
syorou:
handler: handler.hello
events:
- http:
path: syorou
method: get
- http:
path: syorou
method: post
Es gibt ein offizielles LINE Python SDK, also installieren Sie es.
#pip install line-bot-sdk -t ./
Bei der Bereitstellung auf Lambda müssen die installierten SDKs in einer ZIP-Datei konsolidiert werden. Verwenden Sie daher die Option "-t", um sie im aktuellen Verzeichnis zu installieren.
Schreiben Sie den Code in handler.py. Speichern Sie die Datei als UTF-8.
Wenn Sie gemäß Official Document schreiben, gibt es nichts besonders Schwieriges, aber der Ablauf ist
--Überprüfen und analysieren Sie die Anforderung anhand der Informationen im X-Line-Signature-Header sowie des Kanalgeheimnisses
Es wird sein.
# coding: utf-8
import json
import random
from linebot import (
LineBotApi, WebhookHandler, WebhookParser
)
from linebot.exceptions import (
InvalidSignatureError,LineBotApiError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,TemplateSendMessage,ButtonsTemplate,URITemplateAction,LocationSendMessage
)
def syorou(oevent, context):
#Text anfordern und X.-LINE-Signatur-Header extrahieren
body = oevent['body']
signature = oevent['headers']['X-Line-Signature']
#Verwenden Sie Channel Secret, um zu überprüfen, ob die Eingabe korrekt ist
secret = 'Das Kanalgeheimnis, das ich zuvor notiert habe'
parser = WebhookParser(secret)
try:
events = parser.parse(body,signature)
except InvalidSignatureError:
return {"stautsCode" : 400,"body" : ""};
#Erstellen Sie ein LineBot-API-Objekt
token = 'Das Token, das Sie zuvor notiert haben'
line_bot_api = LineBotApi(token)
try:
events = parser.parse(body,signature)
except InvalidSignatureError:
return {"stautsCode" : 400,"body" : ""};
for event in events:
if event.type == 'message':
reply_token = event.reply_token
if random.randint(0,1) == 0:
message = TextSendMessage(
text=u"Geh! Geh! Geh!"
)
else:
message = TextSendMessage(
text=u"Nun, lass uns aufhören..."
)
try:
line_bot_api.reply_message(reply_token,message)
except LineBotApiError as e:
print(e.status_code)
print(e.error.message)
print(e.error.details)
return {"stautsCode" : 200,"body" : "OK"};
Bei Lambda bereitstellen. Für die Bereitstellung muss der aws-Berechtigungsnachweis festgelegt werden. Legen Sie ihn daher entsprechend fest. Schreiben Sie es in ~ / .aws / credentials oder legen Sie eine Umgebungsvariable fest.
#sls deploy
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.....
Serverless: Stack create finished...
Serverless: Packaging service...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading service .zip file to S3 (2.26 MB)...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
.................................
Serverless: Stack update finished...
Service Information
service: aws-python
stage: dev
region: us-east-1
api keys:
None
endpoints:
GET - https://*****us-east-1.amazonaws.com/dev/syorou
POST - https://******us-east-1.amazonaws.com/dev/syorou
functions:
aws-python-dev-syorou: arn:aws:lambda:us-east-1:********:function:aws-python-dev-syorou
Wenn dies erfolgreich ist, wird der Endpunkt folgendermaßen angezeigt. Setzen Sie ihn daher zuvor auf der Seite LINE Developers auf die Webhook-URL.
Es gibt einen QR-Code für die Registrierung des Bots, den Sie dieses Mal erstellt haben, unter "Kontoeinstellungen" auf der Seite LINE @ MANAGER. Lesen Sie diesen Code in der LINE-App und finden Sie Freunde.
Und lassen Sie uns darüber sprechen, worüber Sie sich jetzt Sorgen machen.
Ihre Sorgen wurden sicher gelöst! : v:
Daher habe ich versucht, einen Chat-Bot mithilfe der LINE Messaging-API auf AWS Lambda mithilfe von Serverless Framework zu erstellen. Es ist sehr einfach, beide zu verwenden, also probieren Sie es bitte aus. Darüber hinaus sind wir nicht verantwortlich für schwerwiegende Unfälle, die gemäß den Anweisungen dieses Chatbots auftreten. Bitte übernehmen Sie die Verantwortung dafür: stick_out_tongue:
Sie können sich über den unten stehenden QR-Code für Freunde bei diesem Bot bewerben. Es ist jedoch nicht bekannt, wie lange dies funktioniert, da nur bis zu 64 Personen registriert werden können. Es tut mir leid, wenn Sie keine Verbindung herstellen können. Nachdem ich alles ausprobiert habe, würde ich es begrüßen, wenn Sie es für die nächste Person unfreundlicher machen könnten.
Recommended Posts