Un mémo pour créer un LINE Bot qui renvoie un perroquet en utilisant SAM Local
sur AWS Cloud9
Je vais faire ça.
Créez un fournisseur dans LINE Developers.
Définissez le canal sur le fournisseur que vous venez de créer.
Sélectionnez l'API de messagerie.
Obtenez des informations sur le secret du canal et le jeton d'accès au canal.
Informations secrètes de la chaîne
Cliquez sur le bouton Publier pour obtenir des informations sur le jeton d'accès au canal.
Dans la console AWS, créez Cloud9. Créé dans la région de Tokyo (ap-nord-est-1).
Créez Lambda à l'aide de SAM Local. Cliquez sur λ
->` λ + ʻ sur le côté droit de Cloud9 pour en créer un nouveau.
Définissez une chaîne de caractères dans le champ de cadre rouge et cliquez sur le bouton Suivant
J'ai choisi Python.
Créez une passerelle API dans son ensemble.
J'en ai fait le paramètre par défaut.
Cliquez sur le bouton «Terminer» pour commencer la création.
Lorsque la création est terminée, vous verrez un écran comme celui-ci.
Vous pouvez voir les ressources AWS que vous avez créées jusqu'à présent dans la pile CloudFormation. Deux piles sont créées, la première pile (aws-cluod9-xxx) est la pile lorsque Cloud9 a été créé, et la pile suivante (cloud9-app1) est la pile lorsque Lambda a été créée.
Vous pouvez voir les ressources AWS créées dans l'onglet Ressources de la pile lorsque vous avez créé Lambda.
Supprimez tous les scripts Lambda existants et copiez le script suivant.
Script Lambda
#Variable d'environnement
# LINE_CHANNEL_SECRET canal secret
# LINE_CHANNEL_ACCESS_Jeton d'accès au canal TOKEN
import json
import os
import logging
import urllib.request
import base64
import hashlib
import hmac
#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)
###
#Obtenir le secret du canal LINE à partir de la variable d'environnement
channel_secret = os.environ['LINE_CHANNEL_SECRET']
#HMAC avec le secret du canal LINE comme clé-Calculer la valeur de hachage du corps de la requête à l'aide de l'algorithme SHA256
hash = hmac.new(channel_secret.encode('utf-8'), event['body'].encode('utf-8'), hashlib.sha256).digest()
#Valeur de hachage encodée en base64
signature = base64.b64encode(hash)
# X-Line-Obtenez la signature
xLineSignature = event['headers']['X-Line-Signature'].encode('utf-8')
#Vérifiez la correspondance de signature et la sortie du journal en cas d'incohérence
if xLineSignature != signature:
logger.info('Non-concordance de signature')
return {
'statusCode': 200,
'body': json.dumps('Il semble que la signature soit incorrecte.')
}
###
# 1.Extraire le contenu d'un événement Webhook
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
messages.append({
'type': 'text',
'text': event['message']['text']
})
#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!')
}
Après avoir mis à jour le script lambda, déployez-le avec le bouton de déploiement (icône de flèche vers le haut).
Ouvrez Lambda dans la console AWS et définissez le «secret de canal» et le «jeton d'accès au canal» du canal créé dans LINE Developers en tant que variables d'environnement.
«Vérifiez l'appel d'URL de la passerelle API».
Définissez l '«Appel d'URL de la passerelle API» confirmé précédemment comme l'URL Webhook du canal créé par les développeurs LINE et activez l'utilisation des Webhooks. De plus, il désactive le message de réponse.
Ceci termine le paramétrage de "LINE Bot pour le retour des perroquets".
Enregistrez la chaîne créée en tant qu'ami à partir du code QR et vérifiez si vous souhaitez renvoyer le perroquet.
De cette façon, si vous renvoyez le perroquet, vous réussirez
Il peut être bon de vérifier s'il y a des erreurs dans le groupe de journaux CloudWatch
Cette fois, c'est la fin
Recommended Posts