[PYTHON] J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda

introduction

Ceci est une suite de l'article "J'ai essayé de reproduire M. Saito qui apparaît dans" Aine Kleine Nachtmusik "comme M. Sakurai de Mischil" Devenir. Si vous êtes intéressé, je vous recommande de lire d'abord l'article ci-dessus.

Ce que j'ai fait

Tout d'abord, je vais vous présenter ce que j'ai fait.

Si vous vous inscrivez comme ami ici, vous pouvez l'essayer!

https://lin.ee/WEqJMO7

C'est simple à utiliser. Je vais parler à M. Sakurai. Ensuite, M. Sakurai chantera une partie de la chanson de Mischil qui correspond à ce sentiment. (Pour être exact, il répondra par texte) En coulisses, j'utilise l'API d'analyse des émotions de COTOHA Il renvoie une partie des paroles proche de la phrase envoyée et du score d'émotion. Par conséquent, veuillez comprendre qu'il existe de nombreux cas où le contenu ne correspond pas beaucoup. (Veuillez l'utiliser comme si vous jouiez.)

Je sens que je suis encourageant avec des expressions telles que l'espoir scintillant de fatigue de la maîtrise de soi causée par Corona.

Présentation du système

Veuillez vous référer à Article précédent pour la partie enregistrée dans la DB qui stocke les phrases de paroles et les scores d'émotion. Cette fois, je présenterai la configuration de LINE à la réponse. La configuration est simple et utilise l'API de messagerie de LINE, l'API Gateway d'AWS, Lambda, RDS et l'API de COTOHA.

sakuraisan-image2 (1).png

①-②: Appeler API Gateway depuis LINE par Web Hook à l'aide de l'API de messagerie LINE ③: Appelez la fonction Lambda créée en définissant API Gateway ④: Obtenez le score d'émotion du message envoyé en appelant l'API COTOHA ⑤: Obtenez la phrase des paroles avec un score d'émotion similaire à partir de la base de données créée sur RDS ⑥-⑦: la phrase acquise est renvoyée sous forme de réponse LINE par l'API de messagerie.

Description détaillée de chaque service

J'expliquerai l'API Gateway, Lambda et l'API de messagerie LINE qui peuvent être difficiles à configurer. Il n'y a pas de paramètres particulièrement difficiles pour RDS et COTOHA, je les omettrai donc.

Paramètres de la passerelle API

(1) Créer une nouvelle API à partir d'API Gateway api-1.png

(2) Créé en tant que nouvelle API REST

api-2.png

(3) Création d'une nouvelle méthode

Créer par POST.

api-3.png

(4) Enregistrement Lambda

Entrez le type d'intégration "Fonction Lambda" et le nom Lambda dans la fonction Lambda afin que Lambda puisse l'exécuter.

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

(5) Cliquez sur la demande d'intégration

api-4.png

(6) Paramètres d'en-tête HTTP

Enregistrez le nom comme Authentification et la source de mappage comme «Porteur \ <Jeton d'accès LINE >». L'obtention du jeton d'accès LINE sera décrite plus loin. Après vous être enregistré, saisissez-le ici.

api-5.png

(7) Déployer l'API

Cliquez sur Actions → Déployer l'API Entrez le nom de l'étape et déployez. (Ici, ça s'appelle prod)

api-7.png

(8) Émission de l'URI API

Une fois déployée, l'URL aurait dû être publiée dans Stage → prod → POST dans le menu de gauche. Je l'enregistrerai plus tard en tant que Webhook de l'API de messagerie LINE, donc copiez l'URL quelque part.

api-6.png

Paramètres Lambda

Pour le code source, reportez-vous à lambda / lambda.py sur GitHub. Veuillez noter que les informations de connexion à la base de données, les informations de connexion à l'API COTOHA et les informations sur le jeton de l'API LINE sont enregistrées dans les variables d'environnement Lambda.

lambda-1.png

De plus, mysql-connector-python n'est pas inclus par défaut, vous devez donc l'inclure sur Lambda. Cette fois, j'ai utilisé la couche Lambda. Veuillez consulter ici pour savoir comment l'utiliser.

Paramètres de l'API LINE Messaging

Si vous êtes nouveau dans la création de chaînes, veuillez vous référer à ici.

Les paramètres minimum requis sont les suivants.

(1) Paramètres du Webhook

Enregistrez l'URL créée à l'avance avec API Gateway.

line-1.png

(2) Émission d'un jeton d'accès

line-2.png

(3) Désactivez le paramètre de réponse automatique

Si vous ne définissez pas cela, vous obtiendrez une réponse non pertinente.

line-3.png

(4) Confirmation des paramètres de l'API de messagerie

Aller au gestionnaire de compte officiel LINE Cliquez sur l'API de messagerie dans le menu de gauche et vérifiez si l'URL du Webhook est enregistrée. S'il n'est pas enregistré, entrez l'URL de l'API de la même manière que dans (1).

line-5.png

line-4.png

référence

J'ai fait référence à l'article suivant.

Développement de LINE Bot avec API Gateway + Lambda

Recommended Posts

J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
J'ai créé une API Web
LINE BOT avec Python + AWS Lambda + API Gateway
J'ai créé une API de recherche de château avec Elasticsearch + Sudachi + Go + echo
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai créé un bot Twitter avec Go x Qiita API x Lambda
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé ChatOps avec Slack x API Gateway x Lambda (Python) x RDS
J'ai essayé de faire une étrange citation pour Jojo avec LSTM
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai fait un robot de remplacement de tampon avec une ligne
Comment créer un bot LINE à intelligence artificielle avec l'API de messagerie Flask + LINE
Les débutants en Python ont décidé de créer un bot LINE avec Flask (commentaire approximatif de Flask)
Je veux faire un jeu avec Python
J'ai essayé de faire mon propre BOT lycéenne avec le style Rinna avec LINE BOT (Python & Heroku)
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'ai créé un Bot LINE avec Serverless Framework!
J'ai essayé d'utiliser Linux avec Discord Bot
Créer un bot LINE WORKS avec Amazon Lex
J'ai essayé de créer un service de raccourcissement d'url sans serveur avec AWS CDK
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
Essayez d'implémenter un robot Cisco Spark avec AWS Lambda + Amazon API Gateway (Python)
J'ai essayé d'extraire le dessin au trait de l'image avec Deep Learning
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
J'ai essayé de faire un "putain de gros convertisseur de littérature"
J'ai créé un bot de livre de compte de ménage avec LINE Bot
Faire un bot d'analyse morphologique de manière lâche avec LINE + Flask
J'ai essayé de faire LINE BOT avec Python et Heroku
J'ai essayé de découvrir notre obscurité avec l'API Chatwork
J'ai essayé de créer une application OCR avec PySimpleGUI
[Super facile] Faisons un LINE BOT avec Python.
Je veux lier une variable locale avec lambda
Créer un LINE BOT (chat)
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
J'ai essayé de faire de l'art créatif avec l'IA! J'ai programmé une nouveauté! (Article: Réseau Adversaire Créatif)
Un débutant a essayé de colorier un dessin au trait avec un chainer. J'ai pu le faire.
J'ai essayé d'implémenter une ligne moyenne mobile de volume avec Quantx
Comment créer un BOT Cisco Webex Teams à l'aide de Flask