Teachable MachineとNode-REDを使ってアルコールチェック判定ができるLINEBotを作ってみる。

おつかれさまです。
金融業界で長年働いている事務員兼主婦です。
前回は覚えたてのLINE Botでシフト勤務を確認できるBotを作りました。

https://qiita.com/kiku_2005/items/ac0f7762b6a26941c251

# Let'sチャレンジ！LINE Botでアルコールチェック判定
職場では同じフロアに営業担当者もいるので、外出時には安全運転管理としてアルコールチェックをしているのを見かけます。現在はシステム管理となりましたが、目視での第３者チェックが必要なため、今回はTeachableMachineとNode-REDを使用してアルコールチェックが判定できるBotにチャレンジしてみました。

# 試作品
残念ながらまだ正確な判定までには至らず。

https://x.com/kiku_2005/status/1727298076157890966?s=20


# 使用ツール
・Teachable Machine
　https://teachablemachine.withgoogle.com/
・Node-RED
　https://nodered.org/
・LINE Bot
　https://developers.line.biz/
・[LINE Developers](https://developers.line.biz/ja/ "LINE Developers")　


# 製作開始
## １. Teachable Machineによる画像判定

詳しい使い方は下記の記事を参考にしました。

https://qiita.com/misa_m/items/d8a20d153c8ee7daf0c1

今回は画像パターンを使い、class名は３種類「緑　運転ＯＫ」「黄　要確認」「赤　運転ＮＧ」にしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/0b9d47fa-7397-c0b1-5ce9-f955117a8e1e.png)


## ２. Node-REDを作成

**全体のフローはこちらです。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/c08c7186-b718-7b1b-1645-0e0b59408486.png)
 
<details><summary><b>各ノードの設定を表示（折りたたみ）</b></summary><div>

**①webhook**
Pathは`/webhook`にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/ad8208a7-1a70-120d-a598-d9a321ab0460.png)

**②http request**
URLは下記を入力します。

    https://api-data.line.me/v2/bot/message/{{{line.event.message.id}}}/content

`認証を使用`にチェックを入れ、種別は`Bearer認証`を選択します。トークーンにはLine-DevelopersのMessaging API設定から、チャンネルアクセストークンをコピーして貼り付けます。
最後に出力形式はバイナリバッファを選択してLINE画像の送付準備は完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/c59643e5-aebd-e4e8-fa55-7b1481e92764.png)

**③image**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/2e4f2a3a-75dd-daa2-3a28-f534a670fba2.png)

**④TeachableMachine**
Urlには自分がアップロードしたTeachable MachineのデータセットのURLを入れてください。その他の項目は、下記画像の通り設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/108db58d-1662-88c7-3496-8b3adbc3c90e.png)

**⑤temple**
テンプレートに`結果は「{{payload.0.class}}」です。`を貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/9fdaaa71-891e-bb3f-c1aa-8c24e09caeed.png)

**⑥Reaply**
SecretはLINEのチャネルシークレットを貼り付け、
Access TokenはLINEのチャネルアクセストークンを貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/1a60bf6c-6dfe-c238-dc7f-6938cf0aa630.png)

</div></details>

最後に右上のデプロイボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/616df516-2e2d-2206-32db-5d8ca2239a64.png)

## ３. LINEの設定
LINE Messaging APIのwebhook設定時、Node-REDのURLはcloudの後ろに`/webhook`を付ける必要があります。
例：https://team-ユーザー名-75c●●●●●.flowfuse.cloud<font color="Red">/webhook


以上で設定完了です。



# 引き続きチャレンジ
ここまで到達する間にNode-REDのサーバーと接続できないエラーが頻発して、別な方法でも試してみましたが、どちらも微妙な応答でした:disappointed_relieved:あまり飲まないお酒を飲んで頑張ったのですが・・・。おそらくTeachableMachineへの機械学習（画像＆色別）が足りなかったのかもしれません。今度は無理せず体温計で試してしてみたいと思います:sweat:社内ではアルコールチェックがシステム管理となったものの、第３者の目視確認が必要な部分においてはアナログだったので解消されます。しかし、実際に職場では数値表記のアルコールチェックだったので、再度そちらにもチャレンジしていきたいと思います。引き続き、完成に向けて頑張ります:muscle_tone2:

# 参考資料

https://qiita.com/h21550/items/3674caeb7531183021be

https://qiita.com/am003004/items/b297a9616a0f820458eb

https://atlabo-handson-08.netlify.app/


ここまでお付き合い頂きありがとうございました。