[PYTHON] Vorgehensweise zum Erstellen eines Linienbot in AWS Lambda

Überblick

Wir haben das Verfahren zum Erstellen eines LineBot auf AWS Lambda zusammengefasst. Ich habe von 1 aus geschrieben, ohne line-bot-sdk-python zu verwenden. Ich benutze fast "Referenz" Artikel.

Was ist ein Webhook?

Einführung des Entwicklungsverfahrens

Technologie

fließen

  1. Erstellen einer Lambda-Funktion
  2. Line Developer Registrierung
  3. Erstellen Sie einen Bot
  4. Lass uns ein bisschen mit Bot spielen

Das ganze

import json  
import logging  
import os  
import urllib.request  

#Vorbereitung für die Protokollausgabe
logger = logging.getLogger()  
logger.setLevel(logging.INFO)  

def lambda_handler(event, context):  
    #Protokollausgabe des Anforderungsinhalts
    logger.info(event)  

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

    for event in body['events']:  
        #Definieren Sie eine Liste von Nachrichtenobjekten für die Antwort
        messages = []  
        # 2.Der Webhook-Ereignistyp ist eine Nachricht
        if event['type'] == 'message':  
            # 3.Wenn der Nachrichtentyp Text ist
            if event['message']['type'] == 'text':  
                # 4.Verwenden Sie den Inhalt des empfangenen Textes als Nachrichtenobjekt
                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']+ 'ist' 
                        })  

                #Definieren Sie Anforderungsinformationen für Antwortnachrichten
                url = 'https://api.line.me/v2/bot/message/reply'  
                headers = {  
                    'Content-Type': 'application/json',  
                    #Holen Sie sich das LINE-Kanalzugriffstoken von der Umgebungsvariablen
                    'Authorization': 'Bearer ' + os.environ['LINE_CHANNEL_ACCESS_TOKEN']  
                    }  
                data = {  
                    #Antworttoken und Nachrichtenobjekt festlegen
                    '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:  
                    #Protokollausgabe des Antwortinhalts
                    logger.info(response.read().decode("utf-8"))  
    return {  
        'statusCode': 200,  
        'body': json.dumps('Hello from Lambda!')  
    } 

Einzelheiten

1. Erstellen einer Lambda-Funktion

Python AWS Lambda-Funktionshandler

2. Line Developer Registrierung

Offizielles Dokument

3. Erstellen Sie einen Bot

Wirf eine Post-Anfrage

Verwenden Sie die Bibliothek urllib.request. Offizielles Dokument Beispielnutzung ... urllib.request ist für Python-HTTP-Client ausreichend

Registrierung von Umgebungsvariablen Aus Verwenden von AWS Lambda-Umgebungsvariablen

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

Sie können Umgebungsvariablen mit verwenden.

4. Lass uns ein bisschen mit Bot spielen

・ Geben Sie das Bild zurück Offizielles Dokumentbildobjekt Siehe dieses Dokument

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

Dann können Sie das Bild zurückgeben.

Referenz: [So senden Sie Bilder vom LINE-Bot] Ich habe einen LINE-Bot erstellt, der auf Anfrage das Bild des Shiba-Hundes zurückgibt

Referenz

LINE Messaging API × Einfaches Antwortsystem von AWS Lambda # 1: Verbinden Sie LINE mit Lambda ← Dieser Dienst scheint defekt zu sein und der Link ist defekt.

Impressionen ・ Zukunft ...

――Lambda Es ist bequem. ――Ich möchte meine Code-Lesefähigkeit verbessern! ――LineBot scheint in mehrfacher Hinsicht anwendbar zu sein, daher möchte ich von nun an mein Bestes geben.

Recommended Posts

Vorgehensweise zum Erstellen eines Linienbot in AWS Lambda
Lassen Sie einen Papagei LINE Bot mit AWS Cloud9 zurückgeben
Erstellen eines LINE-Bots ~ Erstellen, Bereitstellen und Starten von ~
Vorgehensweise zum Erstellen einer Kube-Umgebung unter Amazon Linux2 (aws) ~ (mit Bonus)
Führen Sie regelmäßig Python-Programme auf AWS Lambda aus
Ein Tool zum Erstellen symbolischer Links unter Windows
Erstellen Sie einen Bot für Skype unter EC2 (CentOS)
Erstellen Sie mit Minette für Python einen LINE BOT
Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
LINE BOT mit Python + AWS Lambda + API Gateway
Verfahren zum Erstellen einer Python-Isolationsumgebung (venv-Umgebung)
Erstellen eines LINE BOT, um zusätzliche AtCoder-Wettbewerbe mit AWS zu benachrichtigen
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Unterstützung für Python 2.7-Laufzeit auf AWS Lambda (ab 2020.1)
[Zum Spielen] Versuche Yuma zu einem LINE Bot zu machen (Python)
Vorgehensweise zum Erstellen einer CDK-Umgebung unter Windows (Python)
Machen Sie einen LINE BOT (Chat)
Über "Lamvery", ein Bereitstellungs- und Verwaltungstool für AWS Lambda
Dockerfile zum Erstellen einer datenwissenschaftlichen Umgebung basierend auf pip3
AWS Lambda Layers Eine kurze Erklärung von der Erstellung bis zur Verknüpfung
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Schritt für Schritt zum Erstellen einer Docker-Datei
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Führen Sie Python planmäßig auf AWS Lambda aus
Best Practice für die Anmeldung im JSON-Format unter AWS Lambda / Python
[Go] Verfahren zur Installation von Go auf WSL2
Regelmäßiges Serverless Scraping mit AWS Lambda + Scrapy Teil 1
[LINE Bot] Ich bin ein Ranger! Teil 2
Erstellen Sie mit Django einen LINE-Bot
Die Geschichte, wie ein Geschäft BOT (AI LINE BOT) nach Go To EAT in der Präfektur Chiba durchsucht (1)
Ich habe einen Bot erstellt, um ihn auf Twitter zu posten, indem ich mit AWS Lambda eine dynamische Site im Internet abgekratzt habe (Fortsetzung).
Verwenden Sie AWS Lambda, um Nachrichten zu kratzen und LINE regelmäßig über Updates zu informieren [Python]
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)
Ich habe einen Slack-Bot geschrieben, der Verzögerungsinformationen mit AWS Lambda benachrichtigt
Tipps zum Erstellen kleiner Werkzeuge mit Python
Tipps zur Verwendung von Realsense SR300 auf einem MacBook im Jahr 2020
Vorgehensweise zum Erstellen eines Linienbot in AWS Lambda
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
Führen Sie TensorFlow auf einer GPU-Instanz in AWS aus
Befehle zum Erstellen eines neuen Django-Projekts
OpenCV mit dem Ziel einer anständigen Strichzeichnung
[Python] [LINE Bot] Erstellen Sie einen LINE Bot mit Papageienrückgabe
Hinweise zum Erstellen von Textformatierungswerkzeugen
Bereitstellungsverfahren unter AWS ① Netzwerkumgebungseinstellungen
Erstellen einer Cholera-Karte für John Snow
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Die Geschichte, wie ein Geschäft BOT (AI LINE BOT) nach Go To EAT in der Präfektur Chiba durchsucht (2) [Übersicht]
Erstellen Sie mit AWS Lambda einen Bot, der Instanzen mit bestimmten Tags automatisch startet / stoppt
Ich habe einen LINE-Bot erstellt, der jeden Tag pünktlich empfohlene Bilder sendet
Versuchen Sie, einen Cisco Spark Bot mit AWS Lambda + Amazon API Gateway (Python) zu implementieren.
Eine Geschichte über das Cross-Kompilieren eines Python-Pakets für AWS Lambda und das Bereitstellen ohne Server
Anweisungen zum schnellen Veröffentlichen einer C ++ - Python-Bibliothek mit pybind11 auf Github
[Linux] Überprüfung der Befehle für die Bereitstellung unter AWS
Ich habe einen Stempelersatzbot mit Linie gemacht
Stellen Sie sich eine Cloud-native WebSocket-Anwendung vor, die unter AWS ausgeführt wird
Erstellen Sie mit pulumi eine WardPress-Umgebung auf AWS
Versuchen Sie Tensorflow mit einer GPU-Instanz unter AWS
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen einer Lambda-Funktion
Einfache Anzeige des Liniendiagramms auf dem Jupyter Notebook
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ein Memorandum zum Berühren von Python Flask mit Heroku
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv