アフィリエイト広告を利用しています

広告

posted by fanblog

今更ながら、SlackからGoogle homeを喋らせる

○はじめに

Google home notifier というのをご存知でしょうか?


例えば、 Slack からテキストを書き、それをGoogle homeから喋らせるという代物です。

去年、遊びで動かしてちょっと遊んでみましたが、先週試しに動かしたところ全く動きませんでした。

折角、Google Home Hub(Next Hub) x 1台、Google Home Mini x 2台があるので、もう一回、喋らせたいと思います。

ちなみにデータの流れは、以下のような感じです。

Slack => Google App Script => ngrok => google home notifier (on Raspberry Pi3)



○手順
1) " 10分でSlackからGoogleHomeを喋らせるめちゃ速レシピ "を参考に、Google App Scriptまで作成する。

2) Outgoing WebHooksが既にサポート外で動作しないので、" Outgoing WebHooksの代わりをSlack APPで実装する "を参考にAPIを登録する。

3) GAS側のコードを以下のコードに置き換え。
Slackには3秒のタイムアウトがあり、GAS側がもたもたしているとリカバリのために何度も同じメッセージが飛んできて、そのままGoogle Homeに送られて面倒になります。
回避策は色々あるようですが、私は以下のようにGASのscript cacheを使って一回目のメッセージだけGoogle Homeに送り、2回目以降(同じevent_id)のメッセージは、何もしないで返すように変更しました。

function doPost(e) {
var my_token = "slack token";
var postData = JSON.parse(e.postData.getDataAsString());

if(postData.type == 'url_verification') {
var res = {'challenge':postData.challenge}
return ContentService.createTextOutput
(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}
else{
if(my_token == postData.token) {
cache = CacheService.getScriptCache();
var data = cache.get(postData.event.event_id);
if(data==null){
cache.put
(postData.event.event_id,postData.event.event_id,60);

UrlFetchApp.fetch(
' https://your address.ngrok.io/google-home-notifier', {
'method': 'POST',
'contentType': 'application/x-www-form-urlencoded',
'payload': {'text' : text}
}
);
}
}
var res="";
return ContentService.createTextOutput
(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}
}


一応、ここまでやれば、普通にslackからGoogle Homeで喋らせることができます。

4) 英語と日本語の対応
" javascript 日本語チェック "方法が載っていたので、これを参考にGoogle home notifierのexample.jsを書き換えて言語設定を英語、日本語に切り替えるようにしました。

var language = 'en'; // default language code
if(ja2Bit(text)) {
language = 'ja';
}
..
..
..
function ja2Bit ( str ) {
return ( str.match(/^[\u30a0-\u30ff\u3040-\u309f\u3005-\u3006\u30e0-\u9fcf]+$/) )? true : false;
}


5) それ以外にもチャンネルごとにip addressを変更してGoogle Home Mini, Google Home hubの全デバイスで喋らせられるように変更。


いたずら以外に、全く用途の方が思い浮かびませんが、参考までに。。


【Google homeの最新記事】

トラックバック

コメント

お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのコメント

×

この広告は30日以上新しい記事の更新がないブログに表示されております。

Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: