Google HomeがSlackの投稿を読み上げるようにする
こんにちは、豆珈琲です。
先日、Google Home miniと暮らし始めたという記事を書き、それから調査をして、再度「Googleがslackの内容を読み上げるように」出来ました。
GoogleHomeを喋らせる
ずばりgoogle-home-notifierがオススメです。
$ package.jsonを作成。オススメはindex.jsではなくmain.jsです $ npm init $ # google-home-notifierを入れます $ npm install google-home-notifier
インストール出来たところで、
$cp node_modules/google-home-notifier/example.js main.js
サンプルでほぼ動くので、サンプルをコピーしてきます。詳し読み解きは別途いますが、サンプルはngrokを使って一時的なURLを発行し、URLに向かって文字をpostすることにより、Google Homeにしゃべらせることが出来るようにしています。
var ip = 'XX.XX.XX.XX'; // default IP
googlehome.device(deviceName, 'ja').accent('ja').ip('XX.XX.XX.XX');
var urlencodedParser = bodyParser.urlencoded({ extended: false });
書き換える部分はこの部分です。
XX.XX.XX.XXの部分を家庭内のGoogle Home のIPアドレスにします。
喋らせるようにするには、次のコマンドを2つのコンソールでそれぞれ行えば大丈夫です。
$ node main.js
$ nodeを実行すると下記のようなサンプルのコマンドがログとして吐き出されます
$curl -X POST -d "text=Hello Google Home" https://XXXXXXXXX.ngrok.io/google-home-notifier
音声の再生速度が製品のデフォルトの再生速度にお取りますが、ひとまずしゃべってくれました。
Google Apps Script(GAS)とSlackの
GASの設定
まずは、上のリンクを参考にGASにライブラリをインストールしてください。
次に実際のスクリプトは以下の通りです。Slack側の設定がまだなので、まだ実行出来ません。
先に公開を行いGASの公開URLを発行しておきましょう。
function doPost(e) {
var token = "Slack設定後に入れる通知用のTOKEN";if (token != e.parameter.token) {
return;
}
var text = e.parameter.text.replace(/<@[a-zA-Z0-9].*?>/, '').slice(0, 50);
text = text.replace(/トリガーワードの除去 googlehome など/, '').slice(0, 50);
Logger.log(text);
var user_name = e.parameter.user_name;
text = text;
return request(text);
}function request(text) {
var url = 'https://XXXXXXXXX.ngrok.io/google-home-notifier'; #上で発行されたURL
var urlFetchOption = {
'method' : 'post',
'contentType' : 'application/x-www-form-urlencoded',
'payload' : { 'text' : text}
};
var response = UrlFetchApp.fetch(url, urlFetchOption);
return response;
}
Slackの設定
SlackのAppsで「Outgoing WebHooks」を検索して作成をします。
https://xxxxxxx.slack.com/apps
Channelには投稿をトリガーにしたいチャンネルを選択。
Trigger Word(s)にはトリガーワードをいれます。
URL(s)に、GASの公開URLを入れます。
同ページにかかれているTOKENを先程のGASのTOKENに書きます。
以上で、Slackのトリガーを広い、Google Homeがしゃべってくれるはずです。
私の場合は「googlehome : Hello World」でヘローワールドとしゃべってくれます。