Posted at

Google Home Miniに無駄遣いしないように釘をさしてもらう

More than 1 year has passed since last update.


はじめに

一人暮らしをはじめてからというもの、衝動買いに歯止めが利かなくなってしまい

部屋にAmazonのダンボールが増え続ける生活を送っております。これではいかん。

無駄遣いはしないと決心をしても、効果がないのはわかりきっていたので、

Amazonサイトでの衝動買いを減らせるような仕組みを作ろうとした記録になります。


概要

amazonのサイトを訪れると、無駄遣いしないようにGoogle Home Miniが釘を刺してくれます。

google-home-notifier周りをほぼ自動化したこちらを元にGoogle Spreadsheetを噛ませているので、サンプルコードはSpreadsheetへPOSTするようになっています。


Google Home Miniに喋ってもらう準備(google-home-notifier)

前回の記事でも紹介させていただきましたが、

GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます

こちらの記事を参考に行えば、特に詰まることはないかと思います。

:pray::pray::pray: 改めまして、すばらしい記事をありがとうございます :pray::pray::pray:


ちょっと違う声で喋ってほしい!

google-home-notifierの設定が完了すると、通常の"OK, Google!"時の声とは違う音声で喋ってくれます。

この音声がいまいち…という方は

VoiceText Web APIを使用することで、好みの声で喋らせることが可能です!


ちょまどさんがこちらのツイートで紹介されているアプリで使用されているものです!

:pray::pray::pray: いつも参考にさせていただいております :pray::pray::pray:

今回は、こちらの記事を参考に実装しました。

Google Homeで好きな言葉を話してもらう その2(VoiceText)

:pray::pray::pray: めちゃくちゃ助かりました :pray::pray::pray:


特定のWebページを訪れたら、google-home-notifierに通知する

Amazonのサイトに来たらgoogle-home-notifierにPOSTするChromeの拡張機能を作成して実現しました。

ページ遷移のたびに喋られるのは鬱陶しいので、

セッションで最初の訪問の際に喋ってもらうようにしました。


manifest.json

{

"name": "Google-Home-Page-Alert-Chrome-Extension",
"version": "1",
"manifest_version": 2,
"description": "When you visit Amazon's website, alert to Google Home",
"content_scripts": [{
"matches": ["https://www.amazon.co.jp/*"],
"js": ["alert.js"]
}],
"permissions": [ "https://script.google.com/macros/s/*", "tabs" ]
}


alert.js

var pageUrl = location.pathname;

var url = [YOUR URL];

if(window.sessionStorage.getItem(["GHAlert"]) === null){
/* セッションで最初の訪問だったときの処理 */

// セッションに値を登録
window.sessionStorage.setItem(["GHAlert"],["1"]);

var msg = "無駄遣いしないようにね";
postGHN(url, msg);
}else if(~pageUrl.indexOf("/gp/cart/view.html")){
/* カートページを訪れたときの処理 */

var msg = "それ本当に必要なの?";
postGHN(url, msg);
}

/* google-home-notifierにPOSTするための関数 */
function postGHN(url, msg) {
var xhr = new XMLHttpRequest();
msg = encodeURIComponent(msg);

xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.withCredentials = "true";
xhr.send("msg=" + msg);
}



デモ

Google Home との楽しい同棲生活に少し近づいた気がしますね!

作り終わったあとで、スマートスピーカーを使う必要性が全くないことに気づきました