無料運用 LINEbotでAIの顔認識webサービスができるまで。 ~Deploy/Operation編~

2019/11/09

AI 開発試行

ローカル環境で作成したアプリケーションを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

tosd Noteについて

RSS Feed資格や仕事、サラリーマンとしての備忘録です。

このブログを検索

ブログ アーカイブ

QooQ