Il s'agit d'une série d'essais pour créer un backend pour LINEbot à l'aide de divers services. Le premier utilise ngrok. De plus, pour cet article uniquement, la procédure telle que l'inscription auprès des développeurs LINE sera incluse dans la description en guise d'introduction.
Veuillez vous référer à ce qui suit pour construire en utilisant d'autres services.
--Premier: ngrok * Cet article --Deuxième: Heroku
--J'ai un compte LINE --Python est prêt à fonctionner localement
Il s'agit de la procédure de capture à partir d'octobre 2020. Veuillez noter qu'il peut y avoir des changements dans le futur.
Pour utiliser l'API de messagerie, créez d'abord un compte avec LINE Developers. Tout d'abord, accédez à ici et appuyez sur le bouton de connexion en haut à droite. Sur l'écran suivant, appuyez sur "Connexion avec un compte LINE". Ensuite, l'écran suivant s'affiche: Connectez-vous soit en saisissant l'adresse e-mail et le mot de passe enregistrés dans LINE, soit en scannant le code QR. En cas de succès, vous serez redirigé vers l'écran d'accueil de la console.
Il y a une section appelée «Fournisseurs» sur l'écran d'accueil, cliquez donc sur le bouton «Créer» à côté et entrez un nom arbitraire dans le champ «Nom du fournisseur».
L'écran passera à l'écran d'accueil du fournisseur, cliquez donc sur le bloc "Créer un canal API de messagerie".
L'écran passera à l'écran de saisie des informations, entrez donc ce qui suit (seuls les éléments minimum requis sont répertoriés).
Puisqu'il sera utilisé dans le back-end, il sera émis à ce stade. De plus, veuillez garder ces deux valeurs soigneusement afin qu'elles ne soient pas connues des autres.
La chaîne dans la partie «Secret de canal» de l'onglet «Paramètres de base». Ceci est publié lors de la création du canal.
La chaîne de la partie «Jeton d'accès au canal» en bas de l'onglet «API de messagerie». Ce n'est pas publié par défaut, donc générons-le en appuyant sur le bouton "Problème".
Il y a un code QR dans l'onglet API de messagerie
, alors scannez-le avec l'application LINE et inscrivez-vous comme ami.
Copiez le code de line-bot-sdk-python et enregistrez-le localement sous ʻapp.py` .. Ensuite, définissez les informations secrètes comme suit.
--Remplacez la partie (L16) où YOUR_CHANNEL_SECRET
est écrit avec la chaîne de caractères obtenue par Channel secret
.
--Remplacez la partie (L15) où YOUR_CHANNEL_ACCESS_TOKEN
est écrit par la chaîne de caractères obtenue par Channel access token
.
app.py
#Exemple
line_bot_api = LineBotApi('YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZGG==') #C'est la plus longue chaîne
handler = WebhookHandler('fxxxxxxxxxxxxxxxxxxxxx')
Le code source utilise une bibliothèque, vous devez donc installer la bibliothèque. Exécutez la commande suivante dans le terminal:
Terminal
pip install Flask line-bot-sdk
ngrok est un service qui vous permet d'accéder à des processus démarrés localement de l'extérieur via Internet. Par-dessus tout, le point de préparation d'un point de terminaison public sur https
est très important. (L'URL du Webhook doit être https
)
Pour MacOS, nous vous recommandons d'installer avec le premier Homebrew
. Sinon, installez-le avec la deuxième commande.
Terminal
brew cask install ngrok
Terminal
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip
mv ngrok /usr/local/bin/ngrok
Assurez-vous qu'il est correctement installé. Si vous exécutez la commande ngrok
et que le message suivant s'affiche, il n'y a pas de problème.
Entrez Ctrl + C
pour arrêter.
Terminal
ngrok http 80
Résultat d'exécution
Terminal
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 7 hours, 59 minutes
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://a9e65703bdfa.ngrok.io -> http://localhost:80
Forwarding https://a9e65703bdfa.ngrok.io -> http://localhost:80
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
Maintenant, démarrons le serveur et voyons où le message est renvoyé.
Exécutez la commande suivante dans le terminal.
Si le nom du fichier Python n'est pas ʻapp.py, vous devez définir le nom du fichier dans la variable d'environnement
FLASK_APP`.
Terminal
flask run --reload --port 8080
#Si ce qui suit s'affiche, l'état de démarrage
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
La figure ci-dessous montre l'état actuel.
Démarrez un autre terminal et exécutez la commande suivante. Copiez ensuite l'URL sur la ligne qui dit «Transfert» qui commence par «https».
Terminal
ngrok http 8080
Forwarding http://e5e58099a87e.ngrok.io -> http://localhost:8080
Forwarding https://e5e58099a87e.ngrok.io -> http://localhost:8080 #ici
La figure ci-dessous montre l'état actuel.
À ce stade, vous reviendrez à l'écran des développeurs LINE.
Dans la partie URL Webhook
de l'onglet API de messagerie
, entrez" ** l'URL que vous avez copiée précédemment ** + / callback
".
Passez également à l'écran de réglage de la réponse à partir du bouton Modifier dans l'image ci-dessus et réglez comme suit.
--Message de réponse: OFF
Désormais, lorsque vous envoyez un message à LINE, la demande sera envoyée au serveur localement exécuté via le point de terminaison ngrok.
Envoyons en fait un message avec le Bot enregistré comme ami. Si vous recevez le même message, vous réussissez! !!
Puisque ngrok
émet un point de terminaison différent à chaque fois qu'il est démarré, si vous le redémarrez après l'avoir quitté, vous devez également modifier l'URL du Webhook de LINE Developers.
J'ai omis l'explication du code source, mais le code source sdk ne renvoie qu'un perroquet d'un message texte. Les deux exemples suivants de modification du comportement en tant qu'intensification sont décrits comme des problèmes, veuillez donc les essayer si vous le souhaitez.
<détails> La valeur spécifiée par <détails> La raison pour laquelle seuls les messages texte sont traités est que le décorateur de Voir Spécifications de l'API pour voir quels autres types d'événements et types de messages sont disponibles. Je pense que c'est très bien que vous puissiez facilement vérifier le fonctionnement localement.
Cependant, c'est un désordre de devoir le démarrer localement tout le temps, ou de réinitialiser l'URL du Webhook à chaque fois qu'il démarre.
Ce type de mentalité peut être résolu en démarrant le serveur à l'aide du service cloud, je voudrais donc y revenir la prochaine fois.
Recommended Posts
text
de la fonction handle_message
sera le contenu de la réponse.
Dans la source d'origine, ʻevent.message.text a été défini, et comme ce ʻevent.message.text
est le contenu du message que nous avons envoyé, il a été renvoyé comme un perroquet.
En d'autres termes, réglez simplement "text" sur "Merci pour votre message!".app.py
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
- TextSendMessage(text=event.message.text))
+ TextSendMessage(text='Merci pour le message!'))
2. Lorsque vous envoyez un tampon, assurez-vous de répondre "C'est un joli tampon"
@ handler.add (MessageEvent, message = TextMessage)
indique au WebhookHandler que "Lorsqu'un événement de message de type TextMessage arrive, la fonction handle_message
est traitée. C'est parce que nous le faisons.
Vous pouvez ajouter une fonction pour gérer les événements de type tampon (StickerMessage) de la même manière.app.py
+ @handler.add(MessageEvent, message=StickerMessage)
+ def handle_sticker_message(event):
+ line_bot_api.reply_message(
+ event.reply_token,
+ TextSendMessage(text='C'est un joli timbre'))
en conclusion