Google Home × Dialogflowでクリスマスケーキ予約


GoogleHomeを購入しました!

DialogflowでEntity・Intent・Webhookを作成し、Google Homeで発話しました。
本記事では、発話の内容がわかりやすいように、Actions on GoogleのSimulatorで実行した結果を載せております。

準備したものは、Google Home / Google アカウント / SenseTecnic アカウントです。SenseTecnic アカウントは、FRED - Front end for Node-RED - というサービスを使用するために作成しました。

1.Entityを作成

CakeRequestというEntityを作成します。

2.Intentを作成

クリスマスケーキを予約するBookingというIntentを作成します。

Simulatorの実行結果

3.Webhookを作成

Use webhookチェックボックスをチェックONに設定します。

FREDでNode-REDのフローを作成します。次のJSONデータをインポートするとNode-REDのフロー作成完了です。

[{"id":"ee7f0f11.4ce3d","type":"tab","label":"Webhookサンプル","disabled":false,"info":""},{"id":"cd3794b1.92dfa8","type":"comment","z":"ee7f0f11.4ce3d","name":"Webhookサンプル","info":"","x":110,"y":60,"wires":[]},{"id":"caeac3be.ec691","type":"http in","z":"ee7f0f11.4ce3d","name":"","url":"/sample","method":"post","upload":false,"swaggerDoc":"","x":100,"y":120,"wires":[["40570184.52132"]]},{"id":"40570184.52132","type":"function","z":"ee7f0f11.4ce3d","name":"レスポンス情報セット","func":"node.status({fill:\"green\",shape:\"dot\",text:\"intentName : \" +  msg.payload.result.metadata.intentName + \", resolvedQuery : \" + msg.payload.result.resolvedQuery});\nmsg.payload={ speech: \"予約を承りました。\" };\nreturn msg;","outputs":1,"noerr":0,"x":337,"y":120,"wires":[["b953f25d.4a50d"]]},{"id":"b953f25d.4a50d","type":"http response","z":"ee7f0f11.4ce3d","name":"","statusCode":"","headers":{"content-type":"application/json"},"x":550,"y":120,"wires":[]}]

ResponseのJSONフィールド名とContent-typeの設定については
Dialogflowのマニュアルを参照ください。

function
node.status({fill:"green",shape:"dot",text:"intentName : " +  msg.payload.result.metadata.intentName + ", resolvedQuery : " + msg.payload.result.resolvedQuery});
msg.payload={ speech: "予約を承りました。" };
return msg;

WebhookのURLとBASIC AUTH欄を入力します。

Simulatorの実行結果

「予約を承りました」という文言になっていることを確認

ファンクションノードの下に、Intent名とメッセージが表示されていることを確認

4.Google Assistantを終了する

Google Homeを終了するためには、必ず停止してと言う必要があり「ばいばい」や「さようなら」では、Google Homeを終了できないと思っていました。
しかし、Actions on Googleのマニュアルに終了させる設定が記載されていることがわかりました。

DialogflowのIntentにGoogle Assistant欄があり、End conversationというチェックボックスをチェックONすると、Google Assistantが終了することがわかりました。

Simulatorの実行結果