コンテンツへスキップ

Google Homeへの音声コマンドをIFTTTトリガーへ

Google Assistantに「OK グーグル」とコマンド受付状態にし、その後利用したい色々な音声コマンドを設定します。

トリガー:「OK グーグル」「ゆうまの部屋のパソコンをシャットダウンして」
アクション:パソコンのシャットダウンを実行

Google Home Assistant向けのTriggerは4種類

  • 定形メッセージ
  • 定形メッセージ+数字
  • 定形メッセージ+不定形メッセージ
  • 定型メッセージ+数字+不定形メッセージ

以下が、トリガーの一覧となります。それぞれ配置し、少し操作すれば、利用方法は分かると思います。日本語での紹介サイトも多くあるので、必要に応じてGoogle検索で情報を探して下さい。(このサイトでもユースケースとして各種具体的な利用方法として記載します)

トリガーへの設定

定形メッセージの登録画面です。

1番目の「What do you want to say ?」から3番目の「And another way ?」までは、コマンドとして登録したい内容を記載します。3つの言い方が登録出来ます。
4番目は、コマンド受付時のGoogle Assistantからの返答です。空欄でも問題ないです。「○○を了解しました。」などを登録します。
最後は、利用言語となります。

Google Assistantの日本語認識

実際に、Google Assistantに話しかけ、Google Assistantがどのように日本語認識をしているか確認し、確認結果をもとにIFTTTトリガーへの命令として指定することをオススメします。
以下のGoogle Homeアプリの「マイアクティビティ」で発音した音声コマンドの履歴が見れます。

実際に「ゆうまの部屋」と発音した際の認識状況

「ゆうまの部屋」「優雅な部屋」「優馬の部屋」と漢字の変換方法の違い含め、複数パターンの認識結果となります。誤認識が少ない単語や文章の選択が必要となります。

Google Assistantの認識結果を参考に登録したトリーがサンプル

Webhooksの利用

Webhooksは、WEB APIとなります。
Webhook(Webコールバック、HTTPプッシュAPIなど)はあるアプリケーションから別のアプリケーションに対してリアルタイムな情報提供を実現するための仕組みです。
Web/URLアクセスを行います。
Webhooksは、WEB受信とWEB送信側の機能を実現出来ます。

  1. SynologyやRaspberry PiからのURLアクセスを受け付けるWebhook
  2. WebhookからSynologyやRaspberry PiへアクセスするWebhook

の2つの利用形態があります。

IFTTTは、「if(もし) this(この状態) then(の場合は) that(それをする)」なので、
Synologyなどが、IFTTT処理の実行を開始させたい場合は、SynologyよりWebhookを実行します。(SynologyよりWebhookにURLアクセスします)

IFTTT処理でアクションさせたい処理がSynology側などにある場合は、WebhookよりSynologyへURLアクセスさせます。

トリガー(That)

外部よりWebhookにURLアクセスする必要があります。
その際のアクセスするURLや、アクセスに必要なアクセスキーは、Webhooksの「Documation」画面より入手可能です。
{event}はトリガーごとに設定するので、IFTTTでレシピを作成する際に指定します。

実際にThis部分を指定する画面は以下となります。
Event Nameを設定する部分があり、ここで、設定した文字列がURL部分{event}となります。

例:https://maker.ifttt.com/trigger/test/with/key/XXXXXXXXXXXXXXXXXXXXXX
トリガーアクセス時に変数を加える場合は、GETやPOSTで変数を与えます。

アクション(This)

 

Webhookより外部にURLアクセスを実施します。
その際のアクセスするURLや、自分がSynologyなどに準備したPHPファイルなどのWEBコンテンツとなります。
アクセスURLにWEBアクセス方法GETやPOSTなど、そしてコンテンツタイプおよびBodyに変数を指定します。
日本語を扱う場面も多いと思うので、URLエンコードされたコンテンツの送信をオススメします。

 

システムオーバービュー

トリガーとアクション、そしてロジック

トリガー

    • 音声コマンド(Google Home / Google Home mini など)
    • 物理ボタンやスマホのボタン押下
    • 時間 (定期的なスケジュール実行など)
    • メール受信
    • ツイッター (特定情報発信者や特定キーワード)
    • 雨が、降ってきた
    • 室温上昇
    • 人感センサー

アクション

    • Google homeより音声発信発信 Notification
    • メール送信
    • ライン送信
    • 家電操作(テレビ、照明、エアコン)
    • パソコン操作

IFTTT(イフト)If This Then That

IFTTT(イフト)とは“if this then that”の略で、「こうなったら(if this)」「こうする(then that)」という 簡単なルール設定で連携させることができます。
  • [こうなったら]:トリガー
  • [こうする]アクション
多くのサービスなりが連携されており、トリガー部分にもアクション部分にも利用できます。詳しい紹介サイト:https://www.atmarkit.co.jp/ait/spv/1711/22/news031.html

ロジックの利便性

IFTTTは基本的にトリガーとアクションが1:1になります。条件判断などにも対応しておりません。1:1アクションには、基本的にIFTTTのレシピで完結するようにします。
Google Homeで標準で対応できない、グーグールホームとNATURE REMO 連携での、テレビのチャンネル変更や音量変更など。
また、一部ロジック定義が出来るサービスもありますが、トリガーもアクションも品不足で、トリガーの一部利用に止まります。
ここでは、一つのトリガーで複数のアクションや時間によって異なるアクションなどを、自宅サーバーで実現します。

全体API連携時のシステムアーキテクチャ

トリガーロジック
home-api on Raspberry Pi
アクション
IFTTT

  • Google Home音声入力
  • Twitter監視
  • メール監視
  • 天気トリガー など

IFTTT以外

  • タスクスケジューラーやCron実行
  • 他WEBサービス
トリガーに対してアクションをキック。

時間判定によるアクション内容変更

複数条件判定によるアクション実施の決定

IFTTT

  • ライン送信
  • メール送信

IFTTT以外

  • Google Home音声発信(google-home-notifier)
  • PC操作
  • 他WEBサービスへのAPI発行(Spotifyなど)

アーキテクチャオーバービュー(Architecture Overview)、IFTTT、LINE、Google Home、Twitter、Nature Remo、Raspberry Pi