yamamoWorks

.NET技術を中心に気まぐれに更新していきます

Google HomeとAzure IoT HubとRaspberry PiでTVとPS4をコントロール【06:IFTTT編】

前回までにWehookを起点にPS4を制御するところまで実装できました。今回はいよいよGoogle Home(Assistant)との連携です。

※全体像および各関連記事へのリンクはこちらから

IFTTT

IFTTT(If This Then That)はWebサービス同士を連携させるプラットフォームで、Google Home(Assistant)やAmazon Echo(Alexa)なども対応しており、スマートスピーカーにカスタム処理を実装する際の1つの方法として利用できます。

Sign upしたらMy Appletsから「New Applet」ボタンをクリックします。 次に[+]thisをクリックしGoogle Assistantを探して選択します。

f:id:yamamoWorks:20180407225314p:plain:w300 f:id:yamamoWorks:20180407225153p:plain:w300

Google Assistantのtriggerは4つ用意されています。

  • Say a simple phrase
  • Say a phrase with a number
  • Say a phrase with a text ingredient
  • Say a phrase with both a number and a text ingredient

今回実現したいのは「torneを起動して」や「Netflixを起動して」なので Say a phrase with a text ingredient を使用して「○○を起動して」という1つのアプレットを定義したいのですが、可変となるtextを先頭にする事が出来ない制約がある為、以下のどちらかで実現する必要があります。

  1. Say a simple phrase を使用して起動したいアプリ毎にアプレットを作成する。
  2. Say a phrase with a text ingredient を使用して「プレステで○○を起動して」という1つのアプレットを作成する。

今回は発声を短くしたいので前者を採用します。

「What do you whant to say?」に認識して欲しい音声を入力し「What do you want the Assistant to say in response?」にGoogle Homeが発声する応答を入力します。「What's another way to say it?」と「And another way?」はオプショで別の言い方を登録できます。
f:id:yamamoWorks:20180505232830p:plain

「Create trigger」ボタンを押して保存したら次に[+]thatをクリックしWebhooksを探して選択します。

ここで【Functions編】で作成したFunctionsのURLを取得しておきます。
f:id:yamamoWorks:20180505233437p:plain

URLに上記で取得したURLを入力し、MethodをPOST、Content Typeをapplication/json、Bodyには【Functions編】のテストで使用した内容を入力して完成です!
f:id:yamamoWorks:20180505231526p:plain
同様に他の起動したいアプリのアプレットも作成します。代表的なアプリのTitleIdを載せておきます。
ちなみに「torne」はGoogle Homeが音声認識してくれないので「トルネ」で登録が必要です。 また「Amazon Video」だとChromecastデバイスを探そうとするので「プライムビデオ」で登録しないとダメでした。

Title Id
Netflix CUSA02988
torne CUSA00442
Spotify CUSA01780
Amazon Prime Video CUSA03099
Monster Hunter World CUSA06027

f:id:yamamoWorks:20180506001618p:plain

後は【PS4後編】で作成したプログラムを実行した状態で「OK Google, Netflixを起動して」と言えばPS4がスタンバイモードから起動してNetflixが起動します!

動作確認まで出来たので、次回はRaspberry Piにプログラムを載せます。