GoogleHomeに仮想通貨のレートを喋らせるためのプログラムはこちらにあります。
【GoogleHome】仮想通貨のレートを喋らせてみた-1
Contents
おさらい
スマートスピーカーとは
対話型の音声操作に対応したAIアシスタントを利用可能なスピーカーで、AIスピーカーとも呼ばれているものです。
音楽鑑賞や調べ物、買い物といったサービスを「音声」のみで利用できる新しく注目されているデバイスです。
その証拠に色んなメーカーがこぞって開発を進めています。
各社のスマートスピーカー
それでは各社が提供しているスマートスピーカーってどんなのがあるのか。。。
2018年10月現在では、日本未発売のものもありますがこれぐらいをおさえておけば大体のスマートスピーカーをおさえられていると思うものをまとめました。
※ここに記載しているサイズや価格は標準仕様のものを載せています。他にもエントリーモデルやハイエンドモデルを揃えているものもあります。
Google Home | Google Assistant | 直径: 96.4 mm 高さ: 142.8 mm | 15,120円(税込) | Buy Now | ||
Amazon Echo | Amazon | Alexa | 直径: 88 mm 高さ: 148 mm | 11,980円(税込) | Buy Now | |
Clova | LINE | Clova | 直径: 201.05 mm 高さ: 139.84 mm | 14,000円(税込) | Buy Now | |
Invoke | Microsoft | Cortana | 直径:106.68 mm 高さ:241.30 mm | 199ドル | 日本未発売 | |
HomePod | Apple | Siri | 直径: 172 mm 高さ: 142 mm | 349ドル | 日本未発売 |
補足)その他のスマートスピーカー
上記にはないが、スマートスピーカーだと打ち出して販売されている製品がいくつか見受けられると思います。
これらを表に載せなかったのは、他社のAIアシスタントを搭載しているからです。例えばSonyのスマートスピーカーであればGoogleAssistantを搭載しているといった具合です。今回の記事ではAIアシスタントが独自のものだけをリストアップしました。
GoogleHomeとは
Google Homeの説明は今更ですが、2016年に北米で発売されたGoogle製のスマートスピーカーです。Google Assistantを搭載しており様々な操作を行えます。家にあるだけでなんか未来感を楽しめるというおまけもついてきます。
購入して、WiFiにつなぐだけでできることをご紹介すると、以下のようなことが声だけで出来るようになります。
音楽をかけたり、どこか行きたい時にどれぐらいかかるかさくっと知りたい時には非常に便利そうです。
- 音楽をかける(GooglePlayMusicやSpotify)
- 天気予報を聞く
- 場所を調べる
- 交通状況を確認する
- 言葉の意味を調べる
- 翻訳する
- アラーム・タイマーをセットする
- スケジュールを確認する(Googleカレンダー)
- ラジオをかける(日経電子版News Radiko etc…)
- スマート家電との連携
やりたいこと
GoogleHomeに仮想通貨のレートを聞いたら、仮想通貨名を聞き分けてその価格を調べてもらって返答させる。これを実現するには前回の記事にも書いた通り以下の7つのフローを実行する必要があることが分かっている。
- 人(自分)が話しかける
- GoogleAssistantがDialogFlowと接続する
- DialogFlowとサーバ(heroku)をWebhookを使って接続する
- サーバ(heroku)にデプロイしておいた自作Pythonが動作する
- 自作PythonがCoincheckのAPIを叩いてレートをjson形式で取得する
- サーバからDialogFlowにGoogleAssistantで読み込めるjson形式で返却する
- GoogleAssistantがGoogleHomeで結果を返す
GitHubからHerokuへのデプロイ
- 自作PythonがCoincheckのAPIを叩いてレートをjson形式で取得する
- サーバからDialogFlowにGoogleAssistantで読み込めるjson形式で返却する
なぜこれが必要なのかは、次のWebhook以降で分かります。ともかくここでは、前回の記事で作成したCoincheckのAPIを叩いてレートを取得し、json形式に整えて返却するPythonをWeb上で特定のリクエストを投げることで動くWebAPIとして登録する必要があるという事です。その為のサービスとしてある程度無料で使えるHerokuを利用しました。
やり方は参考にしているリポジトリをぱくっ・・・インスパイアしてGitHubへのアップロード時にreadme.mdを真似してください。そうするとDeployボタンが表示されるので、これを押すだけでDeployできます。
あとは、デプロイ時の名前を好きな名前にすると勝手にデプロイが始まるのでほっときます。
Webhook!
- DialogFlowとサーバ(heroku)をWebhookを使って接続する
ここで、Webhookという言葉をさらっと出したが当初私はそれって何?って状態だった。まずは、これが何なのかの説明をします。
Webhookとは?
Webhookはあるアプリケーションから別のアプリケーションに対してリアルタイムな情報提供を実現するための仕組みです。すごく大雑把に書くと、Webの通信は何かリクエストを送るとレスポンスが返ってくるという往復をやっていますが、この間に寄り道させられるという感じでしょうか。ものすごくわかりやすいサイトがあったのでこちらを見た方が理解できるかもしれません。→Webhookって何?を子どもでもわかるように描いてみた
もう一度この絵を見てもらいます。普通にスマートスピーカーでAと聞いたらBと返すという様な固定の返答をしたい場合は右側(オレンジ枠)を介する必要がありません。DialogFlowだけで完結できます。そうではなく、今回のようにリアルタイムな情報を別のサービスから問い合わせたいという希望が出た時に、このWebhookが必要となります。
WebhookでDialogFlowとHerokuをつなぐ
では、実際に接続する方法をかきます。かなり簡単でした。DialogFlowのFulfillmentタブからWebhookをEnableにしてデプロイしたherokuのドメインをコピーしてURLの欄に貼り付けます。
としてSAVEする。さらに、各IntentsにFulfillmentが増えてるのでこのIntentでは使う場合チェックをしてSAVEをし直す。
これで終わりです。
実際に動かすためにGoogleAssistantと連動
あとは実際に動作チェックを行います。Integrationsの中にあるGoogleAssistantを選択して色々やって、実際に動かしたのがこちらになります。(私の声が汚いのはお許し下さい)
実際に動かすまでの道のりは、情報がないと何をやったらいいかわからなくて時間がかかりましたが整理されるとすごく簡単でした。備忘録として書いておきます。誰かの参考になれば・・・