Bot Crawler Advent Calendar 2016 probablement parce que j'ai participé au Crawler / Web Scraping Advent Calendar 2016 J'ai été invité à (/ advent-calendar / 2016 / bot), alors j'ai décidé d'écrire quelque chose, alors j'ai fait un LINE BOT avec un sentiment que j'ai laissé derrière en 2016.
J'ai créé un BOT pour présenter les produits reconditionnés d'Apple.
Il présente les caractéristiques suivantes.
Si vous avez la gentillesse d'essayer de l'utiliser, veuillez essayer "Ajouter un ami" à partir du code QR ci-dessous.
Le code final ressemble à ceci:
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 Définissez le point de terminaison, l'en-tête, etc. en vous référant à la Référence API.
Le jeton d'accès au canal est défini comme une variable d'environnement à partir de l'écran des paramètres Lambda.
requests
n'est pas installé, il est fourni avec le fichier ZIP et téléchargé.Installez requests
directement dans le répertoire du projet.
$ cd /path/to/project
$ pip install requests -t .
L'arborescence des répertoires ressemble à ceci:
.
├── lambda_function.py
├── requests
│ ├── __init__.py
│ ├── ...
└── requests-2.12.4.dist-info
├── ...
Compressez le code source et les bibliothèques externes requises dans un fichier ZIP et téléchargez-le depuis la console Web AWS Lambda.
Référence) Créer un package de déploiement (Python) --AWS Lambda
Le résultat de l'exploration de l'URL suivante doit être enregistré régulièrement dans S3 au format JSON et le fichier JSON doit être lu à partir de la fonction lambda.
Je ne pense pas que ce soit possible avec cette histoire, mais si vous avez de bonnes idées, j'aimerais les mettre en œuvre et les inscrire dans LINE BOT AWARDS. ..
À bientôt.
Recommended Posts