飯テロ禁止botをLINE + AWS Rekognitionで実装する

先週、JAWS-UG沖縄 画像認識サービスを使ってみようハンズオン / もくもく勉強会 2017年7月に参加してきました。 AWSの画像認識サービス(Rekognition)を使って感情ランキングアプリを作るハンズオンをやっておりました。 JAWS-UG青森で開催されたハンズオンの再演で、感情ランキングアプリを作りました。 Rekognition使って何か作れないかなあと考えてたら そういやパリピ共がよくご飯の時間に美味そうなご飯の写真をうpしてくるので それを撃退できるbotが作れたらいいなと思ってちょっと頑張ってみました。 ちょっとググってみたら似たようなことを既に実施してる人がいたのでこれを元にちょいっと変更したらできそうな感じ Amazon Rekognition × LINE Botを試してみた - Qiita 実際に作ったもの 下記の画像を見てもらえればわかる通りご飯画像を投げるとアラートメッセージが飛んできます。 アーキテクチャ Line DeveloperのサイトにWEBHOOK_URLを登録する項目があるので、そこにAPIGatewayのURLを登録する。 Linebotへの個別, もしくはLinebotが属するグループに対して発言なり画像を送信するとアップロードするとWebhook URLにイベントが通知されてAPIGatewayを経由して、Lambdaが処理を行う。 そのイベントが画像であればLambdaを介してRekognitionで解析をかける。 それがご飯であればアラートを上げるようにします。 Rekognition自体は日本のリージョンで展開されてないサービスですので、バージニア北部等のリージョンで利用します。 APIGateway, Lambdaもそれに合わせて今回はバージニア北部のリージョンで利用します。 Rekognition Rekognitionに画像を投げると下記のような感じでラベル付けをしてくれます。 { "Labels": [ { "Name": "Bowl", "Confidence": 97.36100769042969 }, { "Name": "Dish", "Confidence": 69.66221618652344 }, { "Name": "Food", "Confidence": 69.66221618652344 } ] } 今回のお題は「ご飯の画像であればアラートを上げる」ですので、 LabelsのNameのValueがFoodでConfidenceのvalueがある一定以上であればメッセージを出力できればOKです。 Line -> APIGateway 一部マスク・省略してますが、LINEからAPIGatewayに入ってくるパラメータはこんな感じです. { resource: '/', path: '/', httpMethod: 'POST', headers: { Accept: '*/*', 'Content-Type': 'application/json;charset=UTF-8', Host: '********. »