"Inoffizielle Apple Refurbished Product Introduction" BOT mit LINE Messaging API (v2) + API Gateway + Lambda (Python)

Einführung

Bot Crawler Adventskalender 2016 wahrscheinlich, weil ich an [Crawler / Web Scraping Adventskalender 2016] teilgenommen habe (http://qiita.com/advent-calendar/2016/crawler) Ich wurde zu (/ advent-calendar / 2016 / bot) eingeladen, also habe ich beschlossen, etwas zu schreiben, also habe ich einen LINE BOT mit dem Gefühl gemacht, dass ich 2016 zurückgelassen habe.

Was für ein BOT

Ich habe einen BOT erstellt, um Apples überholte Produkte vorzustellen.

LINE_developers.png

Es hat die folgenden Funktionen.

IMG_2687.PNG

Wenn Sie so freundlich sind, es zu versuchen, versuchen Sie es bitte mit "Freund hinzufügen" aus dem unten stehenden QR-Code. QRコード.png

Implementierung von Lambda (Python)

Der endgültige Code sieht folgendermaßen aus:

from __future__ import print_function
import requests
import json
import os
import boto3
import random

print('Loading function')

LINE_API_ENDPOINT = 'https://api.line.me/v2/bot/message/reply'

LINE_API_HEADERS = {
    'Authorization': 'Bearer ' + os.environ['LINE_CHANNEL_ACCESS_TOKEN'],
    'Content-type': 'application/json'
}


def lambda_handler(event, context):

    for event in event['events']:
        reply_token = event['replyToken']
        message = event['message']

        payload = {
            'replyToken': reply_token,
            'messages': []
        }

        items = get_items_by_keyword(message['text'])
        if len(items) == 0:
            payload['messages'].append({
                'type': 'text', 'text': message['text']
            })
        else:
            item = items[0]
            payload['messages'].append({
                'type': 'text', 'text': item['title'] + item['price'] + item['link']
            })

        response = requests.post(LINE_API_ENDPOINT, headers=LINE_API_HEADERS, data=json.dumps(payload))
        print(response.status_code)


def get_items_by_keyword(keyword=None):

    key = 'items.json'
    s3 = boto3.client('s3')
    response = s3.get_object(Bucket='apple-refurbished', Key=key)
    items = json.load(response['Body'])

    result = []
    for item in items:
        if item['title'].find(keyword) != -1:
            result.append(item)

    random.shuffle(result)
    return result

Messageing API -> Reply Message Legen Sie den Endpunkt, den Header usw. unter Bezugnahme auf API-Referenz fest.

Kanalzugriffstoken aus Umgebungsvariable erhalten

Das Channel Access Token wird im Lambda-Einstellungsbildschirm als Umgebungsvariable festgelegt.

Lambda_Management_Console.png

Da Anfragen nicht installiert ist, wird es mit der ZIP-Datei gebündelt und hochgeladen.

Installieren Sie "Anfragen" direkt unter dem Projektverzeichnis.

$ cd /path/to/project
$ pip install requests -t .

Der Verzeichnisbaum sieht folgendermaßen aus:

.
├── lambda_function.py
├── requests
│   ├── __init__.py
│   ├── ...
└── requests-2.12.4.dist-info
    ├── ...

Komprimieren Sie den Quellcode und die erforderlichen externen Bibliotheken in eine ZIP-Datei und laden Sie sie von der AWS Lambda-Webkonsole hoch.

Referenz) Bereitstellungspaket erstellen (Python) --AWS Lambda

Das Crawlergebnis wird separat in S3 im JSON-Format gespeichert.

Das Ergebnis des Crawls der folgenden URL sollte regelmäßig in S3 im JSON-Format gespeichert und die JSON-Datei aus der Lambda-Funktion gelesen werden.

abschließend

Ich denke nicht, dass es mit dieser Geschichte möglich ist, aber wenn Sie gute Ideen haben, würde ich sie gerne implementieren und in LINE BOT AWARDS eintragen. ..

Bis bald.

Recommended Posts

"Inoffizielle Apple Refurbished Product Introduction" BOT mit LINE Messaging API (v2) + API Gateway + Lambda (Python)
LINE BOT mit Python + AWS Lambda + API Gateway
[LINE Messaging API] Erstellen Sie einen Papageienrückgabe-BOT mit Python
Ich habe versucht, LINE-Bot mit Python + Flask + ngrok + LINE Messaging API zu erstellen
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Versuchen Sie, einen Cisco Spark Bot mit AWS Lambda + Amazon API Gateway (Python) zu implementieren.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Nehmen Sie schnell eine Abfragezeichenfolge mit API Gateway-> Lambda (Python)
[LINE Messaging API] Geben Sie das Kanalzugriffstoken v2.1 in Python aus
Erstellen Sie mit AWS SAM schnell eine API mit Python, Lambda und API Gateway
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe einen Twitter-Bot mit Go x Qiita API x Lambda erstellt
Ich habe ChatOps mit Slack x API Gateway x Lambda (Python) x RDS ausprobiert
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
[AWS] API mit API Gateway + Lambda erstellen
Python ruft die Google Cloud Vision API von LINE BOT über AWS Lambda auf
So erstellen Sie einen LINE-Bot mit künstlicher Intelligenz mit der Flask + LINE Messaging-API
Einfacher Slack API-Client mit Python
Serverlose Gesichtserkennungs-API mit Python
Einfache REST-API mit API Gateway / Lambda / DynamoDB
Entscheidungsunterstützungssystem für ältere Menschen mit LINE Messaging API + Serverless Framework
[Python] Eine Geschichte über das Erstellen eines LINE-Bots mit einer praktischen bemannten Funktion ohne Verwendung von Salesforce [Messaging-API]
Ich habe einen Stempelersatzbot mit Linie gemacht
[AWS SAM] Erstellen Sie eine API mit DynamoDB + Lambda + API Gateway
Zeigen Sie Bilder in S3 mit API Gateway + Lambda an
Erstellen Sie mit Minette für Python einen LINE BOT
Ich habe einen LINE Bot mit Serverless Framework erstellt!
[AWS] Versuchen Sie, API Gateway + Lambda mit X-Ray zu verfolgen
Serverloser LINE-Bot mit IBM Cloud-Funktionen
Amazon API Gateway und AWS Lambda Python-Version
Mattermost Bot mit Python gemacht (+ Flask)
Verschiedene Memoranden bei Verwendung von SDK der LINE Messaging API mit Python (2.7.9) + Google App Engine