というわけで、購入しましたGoogle Home。
下記のサイトを参考にしながら色々遊んでみたりしています。
appllio.com
azanaerunawano5to4.hatenablog.com
qiita.com
matagotch.hatenablog.com
特にIFTTTと組み合わせると面白いですね。ただ、IFTTTだけだと、いまいち複雑な処理とかができなくて億劫。
そんな中下記のサイトに気になる記述を発見。
qiita.com
Action on Googleによる機能追加
Actions on Googleを利用することで、自作のアプリをGoogleアシスタント内で提供することができる。 https://developers.google.com/actions/
これは面白そう、というわけで自作のアプリ、というかチャットボットをちょっと作ってみました。
結果がこちらです。
youtu.be
目玉は家族に勝手につけられましたので気にしなくていいです。
作り方
とりあえずまず、下記のサイトを参考にしてGoogle Homeで受け答えしてくれるようなチャットボットをGoogle Assistant上に作ります。
qiita.com
次に、下記サイトを参考に、テレビ局の単語をEntitiesに登録し、登録したIntentに少し手直しします。
tokibito.hatenablog.com
僕のボットだとこんな感じです。
Webhookにチェックを入れるのを忘れずに。
続いてFulfillmentの方へ行き、「Inline Editor(Powered by Cloud Functions for Firebase)」という項目をENABLEにします。
これの使い方は下記のサイトを参考にしましょう。
qiita.com
ここに、情報を受け取って、処理し、返答を返すコードをNodeJSで書きます。
具体的には次のようなコードを追加しました。
//リクエストの取得 const http = require('http'); //(中略) 'getTVProgram':()=>{ var tvStation = { "sougou" : "g1", "etv" : "e1", "bs1" : "s1", "bspremium" : "s3" } //URLを定義 var url = 'http://api.nhk.or.jp/v2/pg/now/{area}/' + tvStation[parameters.TVStation] + '.json?key={apikey}'; console.log(url); if (requestSource === googleAssistantRequest) { //リクエスト送信 http.get(url, function(res) { var body = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { body += chunk; }); res.on('end', function() { var ret = JSON.parse(body); sendGoogleResponse('いま放送している番組は' + ret.nowonair_list[tvStation[parameters.TVStation]].present.title + 'です'); // Send simple response to user }); }).on('error', function(e) { console.log(e.message); }); } else { //リクエスト送信 http.get(url, function(res) { var body = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { body += chunk; }); res.on('end', function() { var ret = JSON.parse(body); sendResponse('いま放送している番組は' + ret.nowonair_list[tvStation[parameters.TVStation]].present.title + 'です'); // Send simple response to user }); }).on('error', function(e) { console.log(e.message); }); } },
なんかrequestモジュールが使えなかったのでhttpモジュールを使ってます。
なお、この情報の取得にはNHK番組表APIを使っています。
NHK番組表API
{area}と{apikey}に何を入れるかは上記のページを参照して登録してください。
コードを書いて、DEPLOYを押したら作業完了です。
追記 2017-10-16 4:06
書き忘れてました、このコード、Firebase上で動いてるんですが、Firebaseでは課金しないと外部のネットワークにアクセスできません。というわけで課金しましょう。
感想
おもったより簡単にできてびっくり。
次にしたいこと
これ公開できれば良いんだけどどうやって公開するんだろう