[PYTHON] Procédure de création d'un Line Bot sur AWS Lambda

Aperçu

Nous avons résumé la procédure de création d'un LineBot sur AWS Lambda. J'ai écrit à partir de 1 sans utiliser line-bot-sdk-python. J'utilise des articles presque "de référence".

Qu'est-ce qu'un webhook

Introduction de la procédure de développement

La technologie

couler

  1. Création d'une fonction Lambda
  2. Inscription du développeur de ligne
  3. Créez un bot
  4. Jouons un peu avec Bot

L'ensemble

import json  
import logging  
import os  
import urllib.request  

#Préparation de la sortie du journal
logger = logging.getLogger()  
logger.setLevel(logging.INFO)  

def lambda_handler(event, context):  
    #Sortie du journal du contenu de la demande
    logger.info(event)  

    body = json.loads(event['body'])  

    for event in body['events']:  
        #Définir une liste d'objets de message pour la réponse
        messages = []  
        # 2.Le type d'événement Webhook est message
        if event['type'] == 'message':  
            # 3.Si le type de message est du texte
            if event['message']['type'] == 'text':  
                # 4.Utiliser le contenu du texte reçu comme objet de message
                if event['message']['text'] == 'honto':
                    messages.append({  
                            'type': 'image',  
                            'originalContentUrl': 'https://www.bizcourt.space/bizmarket/assets_c/2019/06/a_ocean_eyes_logo_bg_white_02-thumb-autox227-1304.png',
                            'previewImageUrl': 'https://www.bizcourt.space/bizmarket/assets_c/2019/06/a_ocean_eyes_logo_bg_white_02-thumb-autox227-1304.png'
                            })
                else:
                    messages.append({  
                          'type': 'text',  
                          'text': event['message']['text']+ 'est' 
                        })  

                #Définir les informations de demande pour les messages de réponse
                url = 'https://api.line.me/v2/bot/message/reply'  
                headers = {  
                    'Content-Type': 'application/json',  
                    #Obtenir le jeton d'accès au canal LINE à partir de la variable d'environnement
                    'Authorization': 'Bearer ' + os.environ['LINE_CHANNEL_ACCESS_TOKEN']  
                    }  
                data = {  
                    #Définir le jeton de réponse et l'objet de message
                    'replyToken': event['replyToken'],  
                    'messages': messages  
                }  
                request = urllib.request.Request(url, data = json.dumps(data).encode('utf-8'), method = 'POST', headers = headers)  
                with urllib.request.urlopen(request) as response:  
                    #Sortie du journal du contenu de la réponse
                    logger.info(response.read().decode("utf-8"))  
    return {  
        'statusCode': 200,  
        'body': json.dumps('Hello from Lambda!')  
    } 

Détails

1. Création d'une fonction Lambda

Gestionnaire de fonctions Python AWS Lambda

2. Inscription du développeur de ligne

Document officiel

3. Créez un bot

Lancer une demande de publication

Utilisez la bibliothèque urllib.request. Document officiel Exemple d'utilisation ... urllib.request est suffisant pour le client HTTP Python

Enregistrement des variables d'environnement Depuis Utilisation des variables d'environnement AWS Lambda

import os
region = os.environ['AWS_REGION']

Vous pouvez utiliser des variables d'environnement avec.

4. Jouons un peu avec Bot

・ Renvoyer l'image Objet image de document officiel Reportez-vous à ce document

messages.append({  
                            'type': 'image',  
                            'originalContentUrl': 'URL de l'image',
                            'previewImageUrl': 'URL de l'image'
                            })

Ensuite, vous pouvez renvoyer l'image.

Référence: [Comment envoyer des images à partir du bot LINE] J'ai créé un bot LINE qui renvoie l'image du chien Shiba lorsqu'on le lui demande

référence

API LINE Messaging × Système de réponse simple par AWS Lambda # 1: connectez LINE à Lambda ← Ce service semble être cassé et le lien est rompu.

Impressions ・ Futur ...

――Lambda C'est pratique. ――Je veux améliorer ma capacité de lecture de code! ――LineBot semble être applicable de plusieurs manières, alors j'aimerais faire de mon mieux à partir de maintenant.

Recommended Posts

Procédure de création d'un Line Bot sur AWS Lambda
Créer un robot LINE de retour de perroquet avec AWS Cloud9
Création d'un bot LINE ~ Création, déploiement et lancement ~
Procédure de création d'un environnement Kube sur Amazon Linux2 (AWS) ~ (avec bonus)
Exécutez régulièrement des programmes Python sur AWS Lambda
Un outil pour créer des liens symboliques sous Windows
Créer un bot pour Skype sur EC2 (CentOS)
Créer un LINE BOT avec Minette pour Python
Procédure de création d'un LineBot réalisé avec Python
LINE BOT avec Python + AWS Lambda + API Gateway
Procédure de création d'un environnement d'isolation Python (environnement venv)
Création d'un LINE BOT pour notifier d'autres concours AtCoder à l'aide d'AWS
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
Prise en charge de l'environnement d'exécution Python 2.7 sur AWS Lambda (à partir de 2020.1)
[Pour jouer] Essayez de faire de Yuma un robot LINE (Python)
Procédure de création d'un environnement CDK sous Windows (Python)
Créer un LINE BOT (chat)
À propos de «Lamvery», un outil de déploiement et de gestion pour AWS Lambda
Dockerfile pour créer un environnement de science des données basé sur pip3
Couches AWS Lambda Une explication rapide de la création à la liaison
[AWS] J'ai créé un BOT de rappel avec LINE WORKS (implémentation)
Étape par étape pour créer un Dockerfile
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Exécutez Python selon la planification sur AWS Lambda
Bonnes pratiques pour la journalisation au format JSON sur AWS Lambda / Python
[Go] Procédure d'installation de Go sur WSL2
Grattage sans serveur régulier avec AWS lambda + scrapy, partie 1
[LINE bot] Je suis un ranger! Partie 2
Créer un bot LINE avec Django
L'histoire de la recherche d'un magasin BOT (AI LINE BOT) pour Go To EAT dans la préfecture de Chiba (1)
J'ai créé un robot pour publier sur Twitter en grattant sur le Web un site dynamique avec AWS Lambda (suite)
Utilisez AWS lambda pour récupérer les actualités et notifier régulièrement LINE des mises à jour [python]
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
[GCP] Procédure de création d'une application Web avec Cloud Functions (Python + Flask)
J'ai écrit un bot Slack qui notifie les informations de retard avec AWS Lambda
Conseils pour créer de petits outils avec python
Conseils pour utiliser Realsense SR300 sur MacBook en 2020
Procédure de création d'un Line Bot sur AWS Lambda
Rechercher des fichiers volumineux sous Linux à partir de la ligne de commande
Exécutez TensorFlow sur une instance GPU sur AWS
Commandes pour créer un nouveau projet django
OpenCV vise un dessin au trait décent
[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
Remarques sur la création d'outils de mise en forme de texte
Procédure de déploiement sur AWS ① Paramètres d'environnement réseau
Créer une carte du choléra pour John Snow
Créer un environnement de développement pour l'apprentissage automatique
Histoire de faire une recherche de magasin BOT (AI LINE BOT) pour Go To EAT dans la préfecture de Chiba (2) [Présentation]
Créez un bot avec AWS Lambda qui démarre / arrête automatiquement les instances avec des balises spécifiques
J'ai créé un robot LINE qui envoie des images recommandées tous les jours à l'heure
Essayez d'implémenter un robot Cisco Spark avec AWS Lambda + Amazon API Gateway (Python)
Une histoire de compilation croisée d'un package Python pour AWS Lambda et de son déploiement sans serveur
Un manuel de procédure pour publier rapidement une bibliothèque C ++ Python à l'aide de pybind11 sur Github
[Linux] Examen des commandes de déploiement sur AWS
J'ai fait un robot de remplacement de tampon avec une ligne
Envisagez une application WebSocket native pour le cloud qui s'exécute sur AWS
Créez un environnement WardPress sur AWS avec Pulumi
Essayez Tensorflow avec une instance GPU sur AWS
[Piyopiyokai # 1] Jouons avec Lambda: création d'une fonction Lambda
Affichage simple du graphique linéaire sur Jupyter Notebook
J'ai créé un Bot LINE avec Serverless Framework!
Un mémorandum pour toucher Python Flask avec Heroku
Commandes pour créer un environnement python3 avec virtualenv