Google Home の独自コマンドを PHP から応答
Google Home(Assistant) の独自コマンドを PHP(Webサーバ) から応答させたときのメモ
【注意】
ここで使用する独自コマンドは、Google Home から独自コマンドが搭載された自作アプリへ接続して、会話を行うような利用方法です。ok,google に続いて一発ものの命令を行う場合 IFTTT を利用するほうが容易です
基本的な流れはこちらを参考にさせていただきました
上記は例が python + Flask なので既存のサーバへ受け渡すのとはちょっと違ったのでPHPの場合を捕捉
大まかな流れ等
PHP の場合、こちらの 形式で応答(Action の sayHello が該当の箇所)
また、送られてくる json は、DialogFlowの右側にある「try it now」からコマンドを入力して、一番下の show json で確認できるので、ファイルに保存して
上の
$update_response = file_get_contents("php://input");
【注意】
ここで使用する独自コマンドは、Google Home から独自コマンドが搭載された自作アプリへ接続して、会話を行うような利用方法です。ok,google に続いて一発ものの命令を行う場合 IFTTT を利用するほうが容易です
基本的な流れはこちらを参考にさせていただきました
上記は例が python + Flask なので既存のサーバへ受け渡すのとはちょっと違ったのでPHPの場合を捕捉
大まかな流れ等
- DialogFlow のアカウントを有効にするGoogleサインアップがフツーかもGoogle傘下なので
- Agentを作成(この中に intent を複数作成していく)
- Intentを作成(音声命令 = intent な感じです)
解説に有る Fulfillment のチェックボックスが見つからないのは、Fulfillment が定義されていないからです。Fulfillmentを定義すると出現します - Entities は音声命令を節毎に分離して汎用性を高められます
「テレビの電源 入れて」の各節を TV とか パワーとか オンして みたいなゆらぎを入れてクロスでマッチしてくれたりします(後で intent に組み込めるのでテストでは飛ばしてもOK) - Fulfillment で呼び出す URLを指定
ここのURLは Agentと対になり Intent の Action が送られてきますので、URLが違えば Agent も違うという事になる
PHP の場合、こちらの 形式で応答(Action の sayHello が該当の箇所)
また、送られてくる json は、DialogFlowの右側にある「try it now」からコマンドを入力して、一番下の show json で確認できるので、ファイルに保存して
上の
$update_response = file_get_contents("php://input");
を
$update_response = file_get_contents("filename.json");
としてデバッグするとわかりやすいです
最終的な動作確認は、Webを持っていれば Integrations の WebDemo をオンにして、
表示される iframe をHTMLで貼り付けてれば確認可能です
動作の流れ
コメント