[PYTHON] Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen

Einführung

Dies ist eine Fortsetzung des Artikels "Ich habe versucht, Herrn Saito zu reproduzieren, der in" Aine Kleine Nachtmusik "als Herr Sakurai von Mischil erscheint" Werden. Wenn Sie interessiert sind, empfehle ich Ihnen, zuerst den obigen Artikel zu lesen.

Was ich gemacht habe

Zunächst werde ich vorstellen, was ich gemacht habe.

Wenn Sie sich hier als Freund registrieren, können Sie es versuchen!

https://lin.ee/WEqJMO7

Es ist einfach zu bedienen. Ich werde mit Herrn Sakurai sprechen. Dann wird Herr Sakurai einen Teil von Mischils Lied singen, der zu diesem Gefühl passt. (Um genau zu sein, wird es im Text antworten) Hinter den Kulissen verwende ich die Emotionsanalyse-API von COTOHA Es wird ein Teil der Texte zurückgegeben, die nahe am gesendeten Satz und der Emotionsbewertung liegen. Bitte haben Sie Verständnis dafür, dass es viele Fälle gibt, in denen der Inhalt nicht sehr gut übereinstimmt. (Bitte benutzen Sie es, als ob Sie spielen würden.)

Ich fühle mich ermutigend mit Ausdrücken wie flackernder Hoffnung auf Selbstbeherrschungsermüdung durch Corona.

Systemübersicht

Den in der Datenbank registrierten Teil, in dem Textphrasen und Emotionswerte gespeichert sind, finden Sie in Vorheriger Artikel. Dieses Mal werde ich die Konfiguration von LINE in die Antwort einführen. Die Konfiguration ist einfach und verwendet die Messaging-API von LINE, das API-Gateway von AWS, Lambda, RDS und die API von COTOHA.

sakuraisan-image2 (1).png

①-②: Rufen Sie das API-Gateway von LINE per Web Hook mithilfe der LINE Messaging-API auf ③: Rufen Sie die Lambda-Funktion auf, die durch Festlegen des API-Gateways erstellt wurde ④: Ermitteln Sie den Emotionswert der gesendeten Nachricht, indem Sie die COTOHA-API aufrufen ⑤: Holen Sie sich die Phrase der Texte mit ähnlicher Emotionsbewertung aus der auf RDS erstellten Datenbank ⑥-⑦: Die erfasste Phrase wird von der Messaging-API als LINE-Antwort zurückgegeben.

Detaillierte Beschreibung jedes Dienstes

Ich werde die API-Gateway-, Lambda- und LINE-Messaging-API erläutern, die möglicherweise schwierig einzurichten ist. Es gibt keine besonders schwierigen Einstellungen für RDS und COTOHA, daher werde ich sie weglassen.

API-Gateway-Einstellungen

(1) Erstellen Sie eine neue API aus API Gateway api-1.png

(2) Als neue REST-API erstellt

api-2.png

(3) Erstellen einer neuen Methode

Per POST erstellen.

api-3.png

(4) Lambda-Registrierung

Geben Sie den Integrationstyp "Lambda-Funktion" und den Lambda-Namen in die Lambda-Funktion ein, damit Lambda ihn ausführen kann.

スクリーンショット 2020-08-17 22.33.40.png

(5) Klicken Sie auf die Integrationsanforderung

api-4.png

(6) HTTP-Header-Einstellungen

Registrieren Sie den Namen als Authentifizierung und die Zuordnungsquelle als "Träger \ <LINE-Zugriffstoken >". Das Abrufen des LINE-Zugriffstokens wird später beschrieben. Geben Sie es nach der Registrierung hier ein.

api-5.png

(7) API bereitstellen

Klicken Sie auf Aktionen → API bereitstellen Geben Sie den Künstlernamen ein und stellen Sie ihn bereit. (Hier heißt es prod)

api-7.png

(8) Ausgabe des API-URI

Nach der Bereitstellung sollte die URL im linken Menü unter Stufe → Produkt → POST veröffentlicht worden sein. Ich werde es später als Webhook der LINE Messaging API registrieren, also kopieren Sie die URL irgendwo hin.

api-6.png

Lambda-Einstellungen

Den Quellcode finden Sie unter lambda / lambda.py auf GitHub. Beachten Sie, dass die DB-Verbindungsinformationen, die COTOHA-API-Verbindungsinformationen und die LINE-API-Tokeninformationen in den Lambda-Umgebungsvariablen registriert sind.

lambda-1.png

Außerdem ist mysql-connector-python standardmäßig nicht enthalten, sodass Sie es in Lambda einbinden müssen. Diesmal habe ich die Lambda-Schicht verwendet. Informationen zur Verwendung finden Sie unter hier.

LINE Messaging API-Einstellungen

Wenn Sie mit der Erstellung von Kanälen noch nicht vertraut sind, lesen Sie bitte hier.

Die minimal erforderlichen Einstellungen sind wie folgt.

(1) Webhook-Einstellungen

Registrieren Sie die zuvor erstellte URL bei API Gateway.

line-1.png

(2) Ausstellung eines Zugriffstokens

line-2.png

(3) Schalten Sie die automatische Antworteinstellung aus

Wenn Sie dies nicht einstellen, erhalten Sie eine irrelevante Antwort.

line-3.png

(4) Bestätigung der Messaging-API-Einstellungen

Wechseln Sie zu LINE Official Account Manager Klicken Sie im linken Menü auf die Messaging-API und überprüfen Sie, ob die Webhook-URL registriert ist. Wenn es nicht registriert ist, geben Sie die API-URL auf die gleiche Weise wie in (1) ein.

line-5.png

line-4.png

Referenz

Ich habe auf den folgenden Artikel verwiesen.

LINE Bot-Entwicklung mit API Gateway + Lambda

Recommended Posts

Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe eine Web-API erstellt
LINE BOT mit Python + AWS Lambda + API Gateway
Ich habe eine Burgsuch-API mit Elasticsearch + Sudachi + Go + Echo erstellt
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe einen Twitter-Bot mit Go x Qiita API x Lambda erstellt
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe ChatOps mit Slack x API Gateway x Lambda (Python) x RDS ausprobiert
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe einen Stempelersatzbot mit Linie gemacht
So erstellen Sie einen LINE-Bot mit künstlicher Intelligenz mit der Flask + LINE Messaging-API
Python-Anfänger haben beschlossen, einen LINE-Bot mit Flask zu erstellen (Flask-Kommentar)
Ich möchte ein Spiel mit Python machen
Ich habe versucht, mein eigenes High-School-Mädchen BOT im Rinna-Stil mit LINE BOT (Python & Heroku) zu machen.
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe versucht, Linux mit Discord Bot zu betreiben
Erstellen Sie mit Amazon Lex einen LINE WORKS-Bot
Ich habe versucht, einen URL-Verkürzungsdienst mit AWS CDK serverlos zu machen
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Versuchen Sie, einen Cisco Spark Bot mit AWS Lambda + Amazon API Gateway (Python) zu implementieren.
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Machen Sie mit LINE + Flask einen morphologischen Analyse-Bot
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe versucht, unsere Dunkelheit mit der Chatwork-API aufzudecken
Ich habe versucht, eine OCR-App mit PySimpleGUI zu erstellen
[Super einfach] Machen wir einen LINE BOT mit Python.
Ich möchte eine lokale Variable mit Lambda binden
Machen Sie einen LINE BOT (Chat)
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
Python-Anfänger haben einen Chat-BOT erstellt, also habe ich versucht, zusammenzufassen, wie man es macht
Ich habe versucht, mit AI kreative Kunst zu machen! Ich habe eine Neuheit programmiert! (Artikel: Creative Adversarial Network)
Ein Anfänger versuchte, eine Strichzeichnung mit einem Kettenmesser zu färben. Ich konnte es schaffen.
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren
So erstellen Sie mit Flask einen BOT für Cisco Webex-Teams