[PYTHON] Entscheidungsunterstützungssystem für ältere Menschen mit LINE Messaging API + Serverless Framework

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)

1. Konfiguration

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.

2. Registrieren Sie sich bei der Entwickler-Testversion von LINE, um einen Bot zu erstellen

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. syorou-1.jpg

Fahren Sie nach Abschluss der Registrierung mit "LINE @ MANAGER" fort. Wir werden hier ein Bot-Konto einrichten, aber zuerst aktivieren wir die API. syorou-2.jpg

Aktivieren Sie dann "Webhook senden". Stellen Sie außerdem "Automatische Antwortnachricht" auf "Nicht verwenden". syorou-5.jpg

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.

3. Vorbereitung des Serverless Framework

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.

4. Codierung

4.1 Projekt erstellen

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!

4.2 Einstellungen

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

4.3 Installation des offiziellen SKD

Es gibt ein offizielles LINE Python SDK, also installieren Sie es.

line-bot-sdk-python

#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.

4.4 Code schreiben

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"};
            

5. Lass uns gehen

5.1 Bereitstellen

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.

5.2 Reden wir

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.

syorou-4.png

Ihre Sorgen wurden sicher gelöst! : v:

Zusammenfassung

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.

QRコード

Recommended Posts

Entscheidungsunterstützungssystem für ältere Menschen mit LINE Messaging API + Serverless Framework
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe versucht, LINE-Bot mit Python + Flask + ngrok + LINE Messaging API zu erstellen
Serverlose Gesichtserkennungs-API mit Python
Serverloser LINE-Bot mit IBM Cloud-Funktionen
[LINE Messaging API] Erstellen Sie einen Papageienrückgabe-BOT mit Python
"Inoffizielle Apple Refurbished Product Introduction" BOT mit LINE Messaging API (v2) + API Gateway + Lambda (Python)
Ich habe Chatbot mit LINE Messaging API und Python erstellt