J'ai créé un LINE BOT qui renvoie des perroquets dans le cadre de l'apprentissage de Python.
・ Python ・ Heroku ・ Développeurs LINE ・ Flacon
Créez un compte, un fournisseur et une chaîne LINE Developers via le lien ci-dessous. https://developers.line.biz/ja/services/messaging-api/
Vous pouvez créer un compte avec votre nom et votre adresse e-mail.
Créé avec le nom du fournisseur (votre nom ou le nom de votre entreprise)
・ Type de canal → API de messagerie ・ Fournisseur · Nom du canal ・ Description de la chaîne · Catégorie ・ Sous-catégorie ·adresse e-mail Créez en acceptant les conditions d'utilisation.
Paramètres de base du canal → Inscrivez-vous en tant qu'ami avec le code QR de l'API de message.
Paramètres de base → Vérifier le secret du canal Paramètres de l'API de message → Émission et confirmation du jeton d'accès au canal
Heroku est simplement un service qui vous prépare à publier votre candidature. Qu'est-ce que Heroku
Pour les paramètres d'installation, etc., je me suis référé à l'article suivant. https://uepon.hatenadiary.com/entry/2018/07/27/002843
Connectez-vous avec GitCMD
GitCMD
heroku login
heroku: Press any key to open up the browser to login or q to exit:
Opening browser to https://cli-auth.heroku.com/auth/browser/XXXX
Logging in... done
Logged in as XXXX@XXXX
Enregistrement de l'application
GitCMD
heroku créez le nom de votre application(Sous le nom de l'application)
Création ● du nom de l'application... done
https://nom de l'application.herokuapp.com/ | https://git.heroku.com/nom de l'application.git
Définition des variables d'environnement → Référence: Que sont les variables d'environnement Définissez le secret du canal et le jeton d'accès au canal confirmé dans LINE Developers plus tôt.
GitCMD
heroku config:set YOUR_CHANNEL_SECRET="Chaîne secrète de canal" --app Nom de l'application
heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="Chaîne de jeton d'accès" --app Nom de l'application
Avec ce paramètre "YOUR_CHANNEL_SECRET" est un secret de chaîne "YOUR_CHANNEL_ACCESS_TOKEN" est un jeton d'accès à la chaîne Sera disponible dans Heroku en tant que.
Vérifier les paramètres
GitCMD
heroku config --app Nom de l'application
Entrez le contenu suivant dans GitCMD.
GitCMD
pip3 install flask
pip3 install line-bot-sdk
-Flask est un framework d'application Web Python adapté à la création d'applications Web simples à petite échelle. → Référence: Qu'est-ce que Flask
-Line-bot-sdk contient les fonctions requises pour créer un LINE BOT. → Référence: Qu'est-ce que line-bot-sdk
Pour le code réel, j'ai fait référence à main.py sur le site suivant. https://uepon.hatenadiary.com/entry/2018/07/27/002843 De plus, je me suis référé au site suivant pour comprendre ce qui est écrit. https://www.wantedly.com/companies/casley/post_articles/139107
main.py
#Chargement des modules requis
from flask import Flask, request, abort
import os
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
#Attribuez Flask à l'application variable. Instanciation
app = Flask(__name__)
#Obtenir des variables d'environnement
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
#Méthode de confirmation de la connexion Heroku
#Lorsque je me connecte à Heroku, «bonjour le monde» s'affiche dans le navigateur
@app.route("/")
def hello_world():
return "hello world!"
#Lorsqu'un message est envoyé par l'utilisateur, cette méthode est appelée à partir de l'API de message LINE.
@app.route("/callback", methods=['POST'])
def callback():
#Obtenez la valeur pour la vérification de la signature à partir de l'en-tête de la demande
signature = request.headers['X-Line-Signature']
#Obtenir le corps de la demande
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
#Validez la signature et appelez la fonction définie dans handle s'il n'y a pas de problème.
try:
handler.handle(body, signature)
#Si la vérification de la signature échoue, une exception est émise.
except InvalidSignatureError:
abort(400)
#OK si vous avez terminé le traitement de la poignée
return 'OK'
#Lorsqu'un événement de message (lorsqu'un message normal est envoyé) se produit sur LINE,
#def Exécutez la fonction suivante.
# reply_événement du premier argument du message.reply_token est le token utilisé pour répondre à l'événement.
#Le deuxième argument est linebot.Nous transmettons l'objet TextSendMessage pour la réponse définie dans les modèles.
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
#Réglage du numéro de port
if __name__ == "__main__":
# app.run()
port = int(os.getenv("PORT"))
app.run(host="0.0.0.0", port=port)
Revenez à nouveau à l'API de message LINE et définissez la destination de connexion Heroku dans l'URL du Webhook du Webhook. URL du webhook: https: // nom de l'application.herokuapp.com/callback * N'oubliez pas de renseigner la méthode de rappel à la fin </ font>
Voir: Qu'est-ce que le déploiement Créez des fichiers à installer dans Heroku (y compris le code source Python "main.py" mentionné précédemment). Vérifiez la version de Python etc. pour créer un fichier
GitCMD
python --version
GitCMD
pip freeze
Créez un répertoire à déployer (cette fois, le nom du dossier est linebot) Fichiers dans le répertoire main.py → code source runtime.txt → Décrivez la version de Python requirements.txt → Description de la bibliothèque à installer Procfile → Définir comment exécuter le programme
runtime.txt
Python 3.9.0
requirements.txt
Flask==1.1.2
line-bot-sdk==1.17.0
Procfile
web: python main.py
GitCMD
cd linebot
git init
git add .
git commit -am "make it better"
git push heroku master
Déplacé dans le répertoire créé par "cd", et installé dans Heroku dans les 4 lignes suivantes. Voir: Qu'est-ce que Git
heroku open
Si hello World s'affiche, cela signifie qu'il a été déployé avec succès.
heroku logs --tail
Vous pouvez vérifier le journal avec la commande ci-dessus.
Lors de la copie du jeton d'accès au canal de l'API de message LINE, je l'ai copié dans l'état traduit et il a été pris dans la vérification de la signature et le perroquet n'a pas été retourné, mais lorsque j'ai annulé la traduction et copié, la valeur attendue a été renvoyée.
https://www.casleyconsulting.co.jp/blog/engineer/3028/ https://www.sejuku.net/blog/7858 https://uepon.hatenadiary.com/entry/2018/07/27/002843 https://www.wantedly.com/companies/casley/post_articles/139107
Recommended Posts