#はじめに
オウム返しする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
と入力すると
このような画面がブラウザで表示されるので「Log in」を押す。
すると
無事ログイン出来た事が確認できます。
#ファイル作成
必要なのは
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
とブラウザ上に表示できれば成功です。
あとはlineアプリ内でオウム返しbotの動作確認ができると思います。
#つまずいたところ
そもそもの入力ミスが非常に多かった。。
「Procfile」ファイルが「Procfile.text」になっていた事が原因でエラー解決するのに時間掛かった。。
意外と簡単なミスって気づかない。
あとどこでエラーが出てるか分からないって人は
heroku log
と入力するとエラーの原因が分かるかも。
cheer up!!