今回はプログラミング関連の記事を書いてみます。
Python学習を始めたこともあり、再度挑戦してみようと思いました。
Python でオウム返しするLine botを作成する
基本的な流れはQiitaに書いてある通りですが、自分が詰まったところをまとめていきます。
実行環境
LINE Developersの登録、設定
以前登録していたため、こちらは不要でした。それぞれ後続で使用していきます。


ソースコード、設定ファイルの準備
ソースコードと設定ファイルを準備します。内容はQiitaのものをそのまま使用しています。
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
import os
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("/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", 5000))
app.run(host="0.0.0.0", port=port)
python-3.6.13
Flask==0.12.2
line-bot-sdk==1.5.0
web: python main.py
Herokuの設定
デプロイ先としてHerokuを使用します。Heroku CLI のダウンロードとインストール
MacではHomebrewから入手できるとのことなので、そちらから行いました。
$ brew tap heroku/brew && brew install heroku
アプリケーションの新規作成
herokuのインストール、ログインができたら、アプリケーションの新規作成を行います。herokuのcreateを使います。
$ heroku create <アプリケーション名>
アプリケーション名は世界で一意でないといけないようです。
Name <アプリケーション名> is already taken と出たら別の名前にしましょう。
環境変数の設定
先ほど再発行したチャネルシークレットとチャネルアクセストークンを、環境変数として設定します。$ heroku config:set YOUR_CHANNEL_SECRET="<チャネルシークレット>" --app <アプリケーション名>
$ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="<チャネルアクセストークン>" --app <アプリケーション名>
Herokuへデプロイ
ソースコード、設定ファイルを格納しているディレクトリにて、gitコミットとプッシュを行います。$ git init
$ git add .
$ git commit -m "new commit"
$ git push heroku master
$ git push heroku master
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.
下記コマンドを入力することで、configファイルに情報が追記されました。
$ git remote add heroku https://git.heroku.com/<アプリケーション名>.git
Webhookの設定
LINE Developersのコンソール画面に戻り、Webhookの設定を行います。Webhook URL:https://<アプリケーション名>.herokuapp.com/callback


herokuのログを確認するなどして原因を特定しましょう。

ToM
ちなみに私は環境変数の設定で、変数名を誤っていたため失敗していました
稼働確認
実際にLINEで稼働確認を行います。今回はオウム返しをするだけの実装となっているので、書いたコメントをそのまま返します。

ちなみにテキストに対しての返答しか定義をしていないため、スタンプは既読スルーされます。

まとめ
今回はオウム返ししてくれるLINE botの稼働確認までを行いました。ほぼ参照したQiitaの記事のままではありますが、無事動くところまで試すことができました。
ここから実際にPythonで実装をしてLINE botを試してみたいと思います。
コメント
現在のheroku-20だとpython-3.6.3はサポートされていないようです。heroku-18にダウングレードする必要があるかと。
$ heroku stack:set heroku-18 -a
で変更することができます。