Cet article ** Poussez en quelque sorte sur heroku chaque fois que je vérifie l'opération! !! ** Pour ceux qui pensent.
Avant de résoudre le problème, réfléchissez aux raisons pour lesquelles vous utilisiez heroku en premier lieu. LINEbot et heroku étaient connectés via un jeton d'accès, une clé secrète et une ** URL de webhook **. "Figure" Une fois que l'application heroku est publiée (déployée), elle peut avoir une URL (~ herokuapp.com). C'est celui que j'utilise comme ** URL du webhook **. J'aimerais pouvoir ** préparer cette URL de webhook moi-même **, mais je ne peux pas ** facilement **. Je n'avais donc pas d'autre choix que de déployer et d'utiliser heroku pour obtenir l'URL de l'application (mais pas seulement).
** Publiez votre hôte local ** vers l'extérieur ** sans utiliser heroku. En faisant cela, vous pouvez préparer une URL de webhook. (Je me demande s'il est sûr de publier localhost, mais je vais le laisser.) L'outil que j'utilise est ** ngrok **.
Téléchargez le fichier zip avec le bouton rouge sur site officiel de ngrok
Ensuite, utilisez la commande suivante pour décompresser et vérifier la version.
installation de ngrok
cd ~/Downloads
unzip ngrok-stable-linux-amd64.zip
sudo cp ngrok /usr/bin/
ngrok version
Vous pouvez maintenant utiliser ngrok. Lors de l'utilisation réelle
Publié en externe sur ngrok
ngrok http [numéro de port]
Le [numéro de port] du serveur local est exposé à l'extérieur.
résultat de l'exécution ngrok
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:☓☓☓☓
Forwarding http://☓☓☓☓☓☓☓☓.ngrok.io -> http://localhost:5000
Forwarding https://☓☓☓☓☓☓☓☓.ngrok.io -> http://localhost:5000
Connections
ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
L'URL lorsque https: // ☓☓☓☓☓☓☓☓.ngrok.io
à côté de Forwarding
expose localhost au monde extérieur (le numéro de port est 5000). Utilisez ceci comme une URL ** webhook! ** **
** Préparation pour LINEbot ** Il existe de nombreux articles, veuillez donc essayer Google
** Paramètres des variables d'environnement ** Définissez les variables d'environnement. Créez un fichier appelé .env sous le projet et copiez et collez les deux habituels des développeurs LINE (sans ajouter ou ajouter quoi que ce soit, tel quel).
.env est un fichier qui définit les variables d'environnement, alors ne le poussez pas sur GitHub. Pour éviter de pousser, découvrez comment utiliser le fichier .gitignore.
.env
LINE_CHANNEL_ACCESS_TOKEN = ☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓
LINE_CHANNEL_SECRET = ☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓
・ ** Exécutez main.py ** Préparez deux terminaux et exécutez à nouveau ngrok sur un. (Ngrok associe une URL différente à chaque fois qu'elle est exécutée, donc la valeur devrait avoir changé plus tôt). Avec cette exécution, l'URL du webhook des développeurs LINE
https://☓☓☓☓☓☓☓☓.ngrok.io/callback
Réglez sur (https!). Enfin, exécutez main.py dans un autre terminal comme suit.
main.Exécuter py
pipenv shell //Dans un environnement virtuel
pipenv run python3.8 main.py
Espérons que l'exemple fonctionnera.
** En cas d'erreur **
Error: the command python3.8 could not be found within PATH or Pipfile's [scripts].
Si vous obtenez une erreur comme celle ci-dessus
Changez python3.8
pour celui qui convient à votre environnement.
main.Exécuter py
pipenv run python main.py
Par exemple, python
ou python3
.
J'ai pu confirmer l'opération localement sans pousser à chaque fois à heroku. Modifier main.py ⇒ Exécuter ⇒ Il suffit d'éditer, le développement est donc fluide.
Cependant, ** ngrok modifie l'URL à chaque fois qu'elle est exécutée **, vous devez donc modifier l'URL du webhook des développeurs LINE à chaque fois que vous arrêtez ngrok. De plus, je pense qu'exposer localhost à l'extérieur ** est mauvais pour la sécurité ** (je ne connais pas les détails).
c'est tout!
Il semble que ngrok soit sûr ou dangereux, gratuit ou payant, et ainsi de suite. Vérifier les actions autour du webhook sur l'hôte local ngrok est trop pratique Utilisez ngrok de la manière la plus sûre possible (authentification de base)
Recommended Posts