44
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

娘の好きな献立をAlexaに吹き込み,買い物前の妻にLINEレコメンドしてみた

Last updated at Posted at 2020-11-02

#食べてくれたものは即ストックし、リピートしたい
 子供は皆そうかもしれないが、1歳の娘は食事の好き嫌いがはっきりしている。食べてくれた献立は忘れずにストックしておき、いつかまた作ってあげたいもの。Amazon Alexaに娘が食べてくれた料理を吹き込み、献立リストから妻に定期的にレコメンドしてくれるLINE通知サービスを作ってみました。
image.png

1.娘が良く食べてくれた献立に気づいたら、その場でAlexaに献立を吹き込む
2.IFTTTが献立リストへの追加を検知しGoogleスプレッドシートに書き込む
3.Googleスプレッドシートに連動したGoogle Apps Scriptが献立リストからランダムに3品をWebhookURLにpostする
4.Integromatが提案された献立を妻へLINE通知する
image.png

#構成
1.IFTTT
 実はAmazon AlexaをIFTTTでカスタマイズできる内容は限定的である。Google Homeなら可能らしいが、好きなキーワードを発した後の操作を埋め込むことができない。好きなフレーズを使って操作できるのは「Say a specific phrase」というアプレットのみであり、Google Spread Sheetへは「Triggered At」というトリガーを埋め込むことしかできないため、本来は、「〇〇ちゃんの好物リスト」に「ハンバーグを追加」といった制御を効かせたかったが、それはIFTTT+Alexaではできないようだ。
image.png

よって、今回は既存の「Todoリストへの追加をトリガーに設定できるアプレット」を採用し、「アレクサ、Todoリストに、ハンバーグを追加して」と言えば、Google Spread Sheetに、献立が追加される仕組みとした。この点どうにかできないか考えたが、解決案を導き出せなかった。
image.png

下記、参考までにアプレットの設定内容詳細を記載しておく。
image.png

2.Google Spread Sheet
1列目にIFTTTで定義したAddedItem、2列目にCreateTimeを記録するフォーマットを作成した。
image.png

3.Google Apps Script
「1~何らかの文字列が入力されているA列の最大行」を範囲にランダムで3つ献立を選択し、textでHTTPリクエスト送信する。

food.gs
function myOutgoingFunction(){
 // Webhook URL
 const URL='https://xxxxxxxxxxxxxxxxxxxxxxxxxxxx';

 //シートは一つしかないのでID指定の必要なし
 const sheet = SpreadsheetApp.getActiveSheet();

 //都度乱数を生成
 //1〜何らかの文字列が入力されているA列の最大行数の範囲
 const rNum1 = Math.floor(Math.random()* sheet.getLastRow())+1;
 const rNum2 = Math.floor(Math.random()* sheet.getLastRow())+1;
 const rNum3 = Math.floor(Math.random()* sheet.getLastRow())+1;
  
 //スプレッドシートのA列x番目の料理を代入
 const food1 = sheet.getRange(rNum1,1).getValue();
 const food2 = sheet.getRange(rNum2,1).getValue();
 const food3 = sheet.getRange(rNum3,1).getValue();

 // POSTする中身
 const Payload = {
    'text': food1 +"" + food2 +"" + food3
  };

 //パラメータを定義する
 const params = {
     'method'  : 'post',
     'contentType': 'application/json',
     'payload' : JSON.stringify(Payload),
   }
 // HTTPリクエスト送信
 const res = UrlFetchApp.fetch(URL,params);
}

 また、毎日妻が献立を考える際に、このLINE通知を参考にしてもらいたいと思ったので、Google Apps Scriptのトリガー設定にて、毎朝定期的にレコメンドしてくれるようにした。
image.png

4.Integromat
 Google Apps ScriptからHTTPリクエストを受けるWebhookURLを取得し、LINE Notificationと連携し妻のLINEへ通知する。

image.png

image.pngimage.png

#子育ては、基本的に手がふさがっている
 子育ては基本的に手がふさがっているので、「簡単に使えること」が子育てを支援するツールには欠かせない要素だと考えている。その点、Amazon Alexaなどのスマートスピーカーとの相性は抜群であるはずなので、今後も時間を見つけて、家庭内課題を解決できる何か面白いツールを作ってみたいと思います。

#おまけ
 子供は好きな食べ物もなぜか急に食べなくなることがあります。1週間前はあんなに食べたのに‥みたいなことも良くあります。ただ、うちの娘は「納豆」だけは、毎朝2パック食べ続けています。お肉をあまり食べたがらないので、本当に重要なたんぱく源です。納豆に感謝です。

44
31
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?