ローカル環境で作成したアプリケーションをHeroku上にDeployします。Webhook URLをLINE Botに登録し、実際にLINEからOperationを実施し、動作を確認します。 アプリケーションソースの配置、各種設定ファイルの設定、Configの設定、Deploy、LINE BotへのWebhook URL登録、LINE Botの配布(友達追加)の順に説明していきます。
Deploy/Operation編
アプリケーションソースの配置
# アプリケーションソースは以下の配置となります。
{Application}
├── static ── images ── merge_face_templete.jpg
│ ├── private.pem
├── Procfile
├── requirements.txt
├── runtime.txt
├── face_detect.py
├── face_detect_azure.py
├── merge_face.py
├── box_upload.py
└── main.py
各種設定ファイルの設定
# static/mages/ ※Heroku上に静的ファイルを配置できるフォルダ
merge_face_templete.jpg ※ merge_faceに使用するtempleteの顔写真
private.pem ※ BOXAPI呼び出し時に使用する秘密鍵
# Procfile ※プログラムの実行方法を定義
web: python main.py
# requiremnets.txt ※インストールするpip ライブラリを記載
pillow
gunicorn
loguru
Flask==1.1.1 # webサービスライブラリ
line-bot-sdk==1.14.0 # LINE SDK
pya3rt # A3RT SDK
boxsdk[jwt] # BOX SDK ※JWTを付けないとJWTは利用できない
# runtime.txt ※Pythonのバージョンを記載
python-3.7.4
Configの設定
~準備編①~のConfig設定の手順にて、以下の値設定を行う。
YOUR_CHANNEL_SECRET={LINEのCHANNEL_SECRET}YOUR_CHANNEL_ACCESS_TOKEN={LINEのアクセストークン}
--
A3RT_TALK_APIKEY={A3RT_のAPI_KEY}
--
FACE_API_KEY={Face++_のAPI_KEY}
FACE_API_SECRET={Face++のAPI_SECRET}
--
ASURE_API_KEY={ASUREのAPI_KEY}
ASURE_API_SECRET={ASUREのAPI_SECRET}
--
BOX_FOLDER_ID={BOXアプリケーションユーザのファイル保存フォルダのFOLDER_ID}
BOX_CLIENT_ID={構成>OAuth 2.0資格情報>クライアントID}
BOX_CLIENT_SECRET={構成>OAuth 2.0資格情報>クライアント機密コード}
BOX_ENTERPRISE_ID={一般>アプリ情報>エンタープライズID}
BOX_JWT_KEY_ID={構成>公開キーの追加と管理>公開キー1ID}
BOX_RSA_PRIVATE_KEY_FILEPATH=./static/images/private.pem
BOX_RSA_PRIVATE_KEY_PASSPHRASE={任意のpassphrase}
HerokuへのDeploy
gitコマンドにて、アプリケーションソースをcommitさせたのち、herokuにpushすることで、Deploy完了となります。
>git add .
>git commit -m "{コメント}"
1 file changed, 1 insertion(+), 1 deletion(-)
>git push heroku master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 2 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 284 bytes | 94.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: -----> Python app detected
remote: -----> Installing requirements with pip
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote: -----> Compressing...
remote: Done: 56M
remote: -----> Launching...
remote: Released v194
remote: https://{Application}.herokuapp.com/ deployed to Heroku
remote: Verifying deploy... done.
To https://git.heroku.com/{Application}.git
0dc067c..2efc723 master -> master
LINE BotへのWebhook URL登録
Webhook URLとは実際にアプリケーションが稼働するアドレス(LINEからPOSTリクエストされるアドレス)になります。
Heroku上でアプリケーションは、以下のサブドメインが与えられます。
https://{Application}.herokuapp.com/
今回のアプリケーションでは、サブディレクトリ[callback]でPOSTを受け付けるので、Webhook URLは以下の通りとなります。
https://{Application}.herokuapp.com/callback
LINE Developer コンソールにアクセスし、コプロバイダーリスト>チャネル を選択し、Webhook URLを登録します。
LINE Botの配布
LINE Developer コンソールにアクセスし、コプロバイダーリスト>チャネル を選択し、Bot情報からQRコード画像を表示します。
自身のLINEの友達追加より、Botを追加しましょう。
LINE BotのOperation
~企画編~のアプリケーションインターフェースイメージのように、トーク、スタンプ、画像に対して、何らかの回答があれば、完成です。
回答がない場合は、アプリケーションエラーが発生しているので、Heroku上のログを見てエラー状況を確認する必要があります。
【参考】Heroku上のログ表示
以下のコマンドでログを見ることができます。
> heroku logs --tail
2019-10-22T05:02:49.795143+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/box_remove" host={Application}.herokuapp.com request_id=9999-9999-9999-9999-051912399999 fwd="999.999.999.999" dyno= connect= service= status=503 bytes= protocol=https