LoginSignup
2
5

More than 3 years have passed since last update.

オウム返しLINE BOT 作成

Last updated at Posted at 2020-09-08

はじめに

オウム返しするline chatbot を作ります。
他にも参考になる記事はたくさんありますが、今回は自分がつまずいたところを含めて書いていこうと思います。
*LINEdevelopersに登録している前提で書いてます。登録してない方は「LINEdevelopers 使い方」などで調べると色々出てきます。

実行環境

window7 64bit
python 3.6.4
editer Atom(何でも良い)
ライブラリ:
heroku
Flask
line-bot-sdk

Herokuの準備

Herokuとは簡単にいうと、自分で作ったwebアプリを簡単に公開できるようです。
line botを作るにあたって必要ですのでインストールしときましょう。
アカウント作成してHerokuをインストールします。
https://jp.heroku.com/

インストールとアカウント作成ができたらコマンドプロンプトで

heroku login

と入力すると
her.JPG
このような画面がブラウザで表示されるので「Log in」を押す。
すると
dd.JPG
無事ログイン出来た事が確認できます。

ファイル作成

必要なのは
runtime.txt
requirements.txt
Procfile
main.py
の4つを作ります。ひとつずつ見ていきましょう
・runtime.txtの中身

python-3.6.4

・requirements.txtの中身

Flask==1.1.2
line-bot-sdk==1.17.0

これはコマンドプロンプトで pip freeze と入力してコピペ
・Procfile (拡張子なし)の中身

web: python main.py

・main.py

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,
)

app = Flask(__name__)

#環境変数取得
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)

@app.route("/")
def hello_world():
    return "hello world!"

@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 handle_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))

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

main.pyは編集せずそのままコピペで使えます(引用)
これらのファイルを1つのフォルダにまとめましょう。

アプリケーションの作成と設定

コマンドプロンプトにて

heroku create *******
heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="**********" --app **********
heroku config:set YOUR_CHANNEL_SECRET="**********" --app **********

*****の部分を自分の環境に合わせて入力します。
最初の「heroku create *****」にはアプリ名を入れます。
YOUR_CHANNEL_ACCESS_TOKENとYOUR_CHANNEL_SECRETはLINEdevelopersの「チャンネル基本設定」「Messaging API設定」に書いてあります。
その後の「--app *****」にアプリ名を入れます。

Herokuをデプロイ

コマンドプロンプトにて

git init
git add .
git commit -m "test commit"
git push heroku master

と順番に入力します。
最後に

heroku open

入力すると・・・
gg.JPG

とブラウザ上に表示できれば成功です。

あとはlineアプリ内でオウム返しbotの動作確認ができると思います。
IMG_3328.jpg

つまずいたところ

そもそもの入力ミスが非常に多かった。。
「Procfile」ファイルが「Procfile.text」になっていた事が原因でエラー解決するのに時間掛かった。。
意外と簡単なミスって気づかない。
あとどこでエラーが出てるか分からないって人は

heroku log

と入力するとエラーの原因が分かるかも。

cheer up!!

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5