Google HomeがSlackの投稿を読み上げるようにする

こんにちは、豆珈琲です。

先日、Google Home miniと暮らし始めたという記事を書き、それから調査をして、再度「Googleがslackの内容を読み上げるように」出来ました。

 

mamecafe.hatenablog.com

 

Google ga00216-usホームMiniチャコール

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 HomeIPアドレスにします。

喋らせるようにするには、次のコマンドを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の設定

qiita.com

まずは、上のリンクを参考に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」でヘローワールドとしゃべってくれます。

参考記事

qiita.com

engineer.muragon.com

Google ga00216-usホームMiniチャコール