みなさん、お久しぶりです!
IT未経験のデジタル成長記録Vol.4です
今回はML(機械学習)のTeachable Machineで、使用できる商品券を教えてくれるLINE Bot作りに挑戦してみました!
この問い合わせ回答、無駄じゃない?
私は商業施設で主にテナント管理を行っています。
日常業務でテナント従業員さんからかなりの頻度いただく問い合わせ1位が
『この商品券初めて見たんですが、うちで使えますか?』 です…
電話で問い合わせをいただいて、その商品券の特徴を聞いて…
お客さまが目の前で待っている中でこのやり取りをするのってかなり無駄だなというのが率直な意見…。
今までは無駄だなと思っていても自分でどうにかできる範囲ではないとあきらめていましたが、先日Teachable Machineなるものを知り!
これはこの課題を解決するのにちょうどいいのでは!?となり、今回のLINE Bot作成にいたりました
Teachable Machineってなに?
みなさん、Machine Learning(機械学習)という単語を聞いたことはあるでしょうか?
Machine Learning(機械学習)とは?
データを分析する方法の1つで、データから、「機械」(コンピューター)が自動で「学習」し、データの背景にあるルールやパターンを発見する方法。 近年では、学習した成果に基づいて「予測・判断」することが重視されるようになった。
Teachable Machineはまさに、ML(機械学習)の無料サービスなのです!
現在のTeachable Machineでは、画像・音声・ポーズの3プロジェクトが選択でき、それぞれモデルをアップロード+ラベルを付けるだけで機械学習モデルを作成することができます!
今回の使用ツール
1⃣ Teachable Machineでプロジェクトを作る!
-
Teachable Machineへアクセスし、
Get Started
をクリック -
Class1
…となっている箇所は登録する写真のグループ名を入力します。
今回は商品券を使用可能・一部店舗で使用可能・使用可能(釣り有)・使用不可の4グループに分けて登録していきます
※グループの追加をしたい場合はAdd a class
を選択してください
-
続いて写真の登録ですが、今回はデバイスに追加されている写真をアップロードしたいので、
Upload
を選択します
※その場で写真を撮る場合はWebcam
を選択してください
-
写真の登録がすべて完了したら、
Train model
をクリックします
すると、Previewのところに判定結果が出てくるようになります!
問題なければExport model
をクリックします
-
Upload my model
を選択し、その後出力されるYour sharable linkをあとで使用するので、コピーしておきます
ここまででひとまずTeachable Machineの設定は終了です!
続いてLINE Botの土台づくりをしていきましょう
2⃣ LINE Botの土台をつくる!
LINE BotはLINE Developersから簡単に作成できます!
- サイトへアクセスし、右上の
コンソールにログイン
をクリックし、自分のLINEアカウントでログインしてください - プロバイダーの
作成
をクリックし、お好みのプロバイダー名を入力します - 今回はBotを作成するので
Messaging API
を選択します
- その後の画面でチャネル名や業種などの必要事項を入力したあと、各種利用規約のチェックボックスにチェックを入れ、
作成
を選択します
これでBotの土台は完成です!
あとで使用しますので、チャネルシークレット
とチャネルアクセストークン
を取得してコピーしておきましょう!
チャネルシークレットとチャネルアクセストークンの取得方法はコチラから
この2つのコードを取得するにはチャネル基本設定
とMasseging API設定
を見ます
★チャネルシークレットはチャネル基本設定
を下までスクロールするとあります!
★チャネルアクセストークンはMasseging API設定
で下までスクロールするとあります!
最初は発行されていない状態かと思いますので、発行
を選択してコードを発行しましょう
3⃣ Node-REDの設定をする!
今回は enebularというサイトから、Node-REDというツールを使用して連携していきます。
-
enebularにアクセスし、
サインイン
します
会員登録が済んでいない方は会員登録を済ませてから次に進みましょう!
1.右上のプロジェクトの作成
を選択し、プロジェクト名を設定します
- 設定が完了すると先ほどの画面にプロジェクトが追加されているかと思いますので、追加したプロジェクトを選択してください
- 選択すると英語のフローが並んでいるかと思いますが無視して、右下の
+ボタン
をクリックします - アセットの作成というタブが開くのでそのまま
作成
へ進み、アセットが追加された先ほどの画面に戻りますので、作成したアセットをクリックし右上の編集
を選択します
- ノードを追加、繋げていきます
追加したいノードがない!?そんなときはコチラ🌟
🌟今回使うノード🌟
・Teachable Machine : node-red-contrib-teachable-machine
・LINE : node-red-contrib-line-messaging-api
① http in
・メソッド:POST
・ファイルのアップロード
にチェック
・URL:/好きな文字列 (今回はwebhookにしています)
② http response
・ステータスコード:200
を入力
③ function
下記コードをコピペします
const messageID = msg.payload.events[0].message.id;
const replyToken = msg.payload.events[0].replyToken;
msg.messageID = messageID;
msg.replyToken = replyToken;
return msg;
④ http request
・メソッド:GET
・URL:https://api-data.line.me/v2/bot/message/{{{messageID}}}/content
・ペイロード:無視
・認証を使用
にチェック
・種別:Bearer認証
・トークン:2⃣ の工程でコピーしておいたチャネルアクセストークン
を入力
・出力形式:バイナリバッファ
⑤ teachable machine
・Mode:Online
・URI:1⃣ でコピーしておいたTeachable MachineのYour sharable link
を入力
・Output:Best prediction
・Image
にチェック
⑥ function
下記コードをコピペします
const className = msg.payload[0].class;
msg.payload = {};
msg.payload.events = [
{
"type": "message",
"replyToken": msg.replyToken,
"message": {
"type": "text",
"text": `この画像は「${className}」\r\nになります`
}
}
];
return msg;
⑦ Reply
※配置するとReply Message
に変わります
・Secret:2⃣ でコピーしておいたチャネルシークレット
を入力
・Access Token:2⃣ でコピーしておいたチャネルアクセストークン
を入力
⑧ すべての入力が完了したら右上のデプロイ
をクリックし、その横のインフォメーションボタン
からリンクをコピーしておきます
4⃣ LINEと繋げる!
LINE DevelopersのMessaging API設定
からWebhook設定
を開き、3⃣ の工程の最後にコピーしておいたリンクに3⃣-5-①で設定した/好きな文字列
を付け足して貼り付けます!
最後に
完成してから職場の先輩に使ってみてもらったところ大絶賛!
ただし、実際に現場へ導入できるかどうかは別問題…
とても便利な反面、間違った判定結果が出てしまった時のリスクが怖いとのフィードバックをいただきました
(でもごもっともなフィードバック、もっと精度を上げて実際に導入できるように頑張ります!)
今回のLINE bot作りはこちらの記事を参考にさせていただきました!!
- 2024.09.01改善内容_商品券名の表示がされるようにする
このBotを見てくださった方より、「商品券名が分かるとその判定が正しいか間違っているのか人の目でも確認できるので良いのでは?」とのご意見を頂き内容修正しました!
結論として変更する場所は、Teachable Machineのクラス名
のみ!
クラス名に「○○商品券で使用可能」「○○商品券で使用不可」と記載しておけば、上記の設定方法のまま商品券名+使用可否が分かります(^_-)
ぜひご参考ください!