#はじめに
今回はLINEmessagingAPIとMicrosoftFaceAPIを組み合わせてマツコ・デラックスさんとどれだけ似ているかを返信してくれるマツコbotを開発しました.以下のようにマツコが返信してくれます.しっかりマツコに対して高い数値を出しています.
#開発環境
- macOS Mojave 10.14.2
- python 3.6
#マツコ・デラックスとは
知らない人はいないと思いますが一応説明しておきます.マツコ・デラックスさんは日本のコメンテーターで現在たくさんの番組に出演されており,毒舌キャラで大人気です.詳しく知りたい方はWikipediaをご覧ください.
#実装
今回は以下のように実装していきます.すでにbotを作成している前提で進めていきます.
##Herokuの設定
こちらはすでにたくさんの方が詳しく説明しているのでそちらを見た方がわかりやすかと思います.こちらの記事を参考にさせていただきました.ターミナルで以下のように設定していきます.
$ heroku login
$ heroku create matsuko-bot
$ heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの欄の文字列" --app matsuko-bot
$ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの欄の文字列" --app matsuko-bot
##設定ファイルの作成
それぞれ設定ファイルを作成します.
python-3.6.6
Flask==0.12.2
line-bot-sdk==1.5.0
requests==2.18.4
gunicorn
web: python main.py
#一部のみ
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text='顔画像を送信しなさい'))
@handler.add(MessageEvent, message=ImageMessage)
def handle_image(event):
message_id = event.message.id
message_content = line_bot_api.get_message_content(message_id)
image = BytesIO(message_content.content)
r_1 = requests.post(url_detect, headers = headers_detect, params = params, data = open('matsuko.jpg','rb'))
r_2 = requests.post(url_detect , headers = headers_detect, params = params, data = image)
faceId = r_1.json()[0]['faceId']
try:
faceIds = r_2.json()[0]['faceId']
body['faceId'] = faceId
body['faceIds'] = [faceIds]
r_find_similar = requests.post(url_similar, headers = headers_similar, data = json.dumps(body)).json()[0]['confidence']
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='私との類似度は{}'.format(r_find_similar)))
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='顔が検出できなかったですよ'))
matsuko.jpg(こちらの顔画像と似ているかを比較します)
$ tree
.
├── Procfile
├── main.py
├── matsuko.jpg
├── requirements.txt
└── runtime.txt
##Herokuにデプロイ
$ git init
$ git add .
$ git commit -m "new commit"
$ git push heroku master
git pushできない場合は以下のコマンドを実行してください.
$ git remote add heroku https://git.heroku.com/アプリケーション名.git
デバックするためにログを確認
$ heroku logs --tail -a <アプリケーション名>
##webhookの設定
LINEbotの設定画面で以下のように設定します
Webhook送信:利用する
Webhook URL:https://<アプリケーション名>.herokuapp.com/callback
#まとめ
今回はLINEとMicrosoftのAPIを組み合わせて顔認識のbotを作ってみました.web関連の知識は全くなかったのですが案外簡単にできました(Herokuの設定で少し苦戦した).今後は自分でAPIサーバーを構築して便利なLINEbotを作っていきたいです.今回の実装はGitHubに載せておきます.