[Python] [LINE Bot] Créer un robot LINE de retour de perroquet

C'est il y a longtemps, mais du coup j'ai décidé de créer un LINE Bot, Je viens de créer un LINE Bot qui renvoie des perroquets. スクリーンショット 2020-05-12 20.39.28.png

1. Créez un canal d'API de messagerie en ligne

Créer une chaîne avec les développeurs LINE

En gros, vous devriez pouvoir vous inscrire sans aucun problème selon la page officielle ci-dessous [Pour utiliser l'API de messagerie | LINE Developers](https://developers.line.biz/ja/docs/messaging-api/getting-started/#%E3%83%81%E3%83%A3%E3 % 83% 8D% E3% 83% AB% E3% 81% AE% E4% BD% 9C% E6% 88% 90)

![Capture d'écran 2020-05-12 20.48.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130414/83b70611-c51f-d7f0-ca71 -6389eac33f13.png)

Si le canal peut être enregistré en toute sécurité, il sera dans un état comme ↓ スクリーンショット 2020-05-12 20.58.26.png

Vérifiez les deux suivants car vous en aurez besoin plus tard ・ Channel secret ← Situé dans l'onglet Basic Setting ・ Jeton d'accès au canal (longue durée de vie) ← Situé dans l'onglet API de messagerie

2.Heroku

Créer un compte

En gros, vous devriez pouvoir vous inscrire sans aucun problème selon la page officielle ci-dessous Heroku Dev Center

![Capture d'écran 2020-05-12 21.14.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130414/add1067e-c321-8ba2-a348 -3dcf648916be.png)

Télécharger Heroku CLI

Téléchargez et installez Heroku CLI à partir de la page suivante The Heroku CLI | Heroku Dev Center

![Capture d'écran 2020-05-12 21.21.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130414/a3ee0f63-8bb9-a06e-418e -27c04e72a1b5.png)

Lorsque l'installation est terminée avec succès, vous devriez pouvoir utiliser la commande heroku dans le terminal. スクリーンショット 2020-05-12 21.24.23.png

3. Créez un fichier à déployer

Structure des fichiers

Créez un fichier avec la configuration suivante スクリーンショット 2020-05-12 21.29.07.png

main.py La partie principale du programme

main.py


# -*- coding: utf-8 -*-
#  Licensed under the Apache License, Version 2.0 (the "License"); you may
#  not use this file except in compliance with the License. You may obtain
#  a copy of the License at
#
#       https://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#  License for the specific language governing permissions and limitations
#  under the License.

import os
import sys
from argparse import ArgumentParser

from flask import Flask, request, abort
from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

# get channel_secret and channel_access_token from your environment variable
channel_secret = os.getenv('LINE_CHANNEL_SECRET', None)
channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None)
if channel_secret is None:
    print('Specify LINE_CHANNEL_SECRET as environment variable.')
    sys.exit(1)
if channel_access_token is None:
    print('Specify LINE_CHANNEL_ACCESS_TOKEN as environment variable.')
    sys.exit(1)

line_bot_api = LineBotApi(channel_access_token)
handler = WebhookHandler(channel_secret)


@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'


@handler.add(MessageEvent, message=TextMessage)
def message_text(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text)
    )


if __name__ == "__main__":
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)

Procfile Comment exécuter le programme

web: python main.py

requirements.txt Module à utiliser

Flask==0.12.2
line-bot-sdk==1.8.0

runtime.txt Version python répertoriée

python-3.6.6

4. Déployer sur Heroku

Créer un référentiel git et valider

Exécutez la commande suivante à partir d'un terminal, etc.

$ cd line-bot
$ git init
$ git config user.name "Nom"
$ git config user.adresse e-mail
$ git add .
$ git commit -m "commentaire"

$ cd line-bot: Déplacer vers le répertoire racine $ git init: initialiser le dépôt git $ git config user.name "nom": config config $ git config user.email Adresse e-mail: paramètres de configuration $ git add .: Ajouter $ git commit -m "comment": commit

Connectez-vous à Heroku

Exécutez la commande suivante pour vous connecter à Heroku

$ heroku login

Lorsque vous l'exécutez, il sera dans l'état suivant, donc si vous appuyez sur une touche, l'écran de connexion sera affiché sur le navigateur, donc Cliquez sur le bouton Connexion pour vous connecter スクリーンショット 2020-05-12 21.46.31.png スクリーンショット 2020-05-12 21.46.39.png

Créer et déployer une application

Exécutez la commande suivante pour créer et déployer une application sur Heroku

$heroku créer le nom de l'application
$ heroku config:set LINE_CHANNEL_SECRET="Channel Secret" --nom de l'application de l'application
$ heroku config:set LINE_CHANNEL_ACCESS_TOKEN="Jeton d'accès" --nom de l'application de l'application
$ git push heroku master

Le nom de l'application est arbitraire Définissez le "Channel Secret" et le "Access Token" qui ont été confirmés lors de la création du canal avec LINE Developers.

paramètres de build pack

Le déploiement peut échouer si le pack de build n'est pas défini. Dans ce cas, exécutez la commande suivante pour définir le pack de construction

$ heroku buildpacks:set heroku/python

5. Paramètres du webhook du côté du bot LINE

Définissez les paramètres du webhook pour le canal créé à partir de la console Line Developers Utilisez le webhook et spécifiez l'URL suivante comme URL du webhook

https://Nom de l'application.herokuapp.com/callback

Achevée

Lorsque le travail jusqu'à ce point est terminé, le bot qui renvoie le perroquet est terminé! J'étais un débutant qui n'avait jamais utilisé Heroku, Git ou Messaging API, mais c'était étonnamment facile à créer. J'aimerais pouvoir faire quelque chose sur cette base à l'avenir スクリーンショット 2020-05-12 22.16.00.png

Recommended Posts

[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
[LINE Messaging API] Créer un BOT de retour de perroquet avec Python
Créer un LINE BOT avec Minette pour Python
Création du LINE BOT Parrot Return
Créer un robot LINE de retour de perroquet avec AWS Cloud9
Créer un bot LINE avec Django
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
Créer un module Python
Créer un environnement Python
Créer un bot slack
Étapes pour créer un bot Twitter avec Python
Créer un bot de collecte de données en Python à l'aide de Selenium
Créer un dictionnaire en Python
[API LINE Messaging] Créez un menu riche avec Python
Créer un LINE BOT (chat)
J'ai essayé de faire LINE BOT avec Python et Heroku
[Pour jouer] Essayez de faire de Yuma un robot LINE (Python)
Créer un tableau numpy python
Créer un répertoire avec python
[Super facile] Faisons un LINE BOT avec Python.
Créez une application d'apprentissage automatique avec ABEJA Platform + LINE Bot
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python
Jusqu'à ce que Django retourne quelque chose avec un robot de ligne!
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Je souhaite envoyer un message de Python à LINE Bot
Créer une interface graphique python à l'aide de tkinter
Créer un conteneur DI avec Python
Créez un environnement virtuel avec Python!
Créer un fichier binaire en Python
Créer un environnement python dans centos
Créer un framework de décorateur à usage général pour Python
[Python] renvoie A [ou / et] B
[LINE bot] Je suis un ranger! Partie 2
5 façons de créer un chatbot Python
Créer une chaîne aléatoire en Python
Créez un outil de ligne de commande pour convertir des dollars en yens en utilisant Python
Créer un décorateur de fonction Python avec Class
Créer un bot pour retweeter les informations sur le virus corona
Créer un nouveau projet de calcul numérique Python
Créez une image factice avec Python + PIL.
Créez un environnement python sur votre Mac
Créer une application GUI simple en Python
Créons un environnement virtuel pour Python
[Python] Créez un environnement virtuel avec Anaconda
Création d'un bot LINE ~ Création, déploiement et lancement ~
Créons un groupe gratuit avec Python
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
Créer un compteur de fréquence de mots avec Python 3.4
Créer un fichier deb à partir d'un package python
[Python] Créez un LineBot qui s'exécute régulièrement
[GPS] Créer un fichier kml avec Python
Créez un bot qui stimule les tendances Twitter
Faisons un bot Twitter avec Python!
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
J'ai fait un robot de remplacement de tampon avec une ligne
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
[Python] Compréhension de liste Différentes façons de créer une liste