node-red
GoogleHome
dialogflow
SRADay 20

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

image1.jpeg

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を作成します。

スクリーンショット 2017-12-20 23.09.39.png

スクリーンショット 2017-12-20 21.36.23.png

2.Intentを作成

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

スクリーンショット 2017-12-20 23.10.25.png

スクリーンショット 2017-12-21 7.30.00.png

Simulatorの実行結果

スクリーンショット 2017-12-20 19.32.40.png

スクリーンショット 2017-12-21 7.40.51.png

3.Webhookを作成

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

スクリーンショット 2017-12-21 7.29.53.png

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":[]}]

スクリーンショット 2017-12-20 22.32.59.png

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;

スクリーンショット 2017-12-20 19.12.01.png

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

スクリーンショット 2017-12-20 19.06.13.png

Simulatorの実行結果

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

スクリーンショット 2017-12-20 19.11.47.png

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

スクリーンショット 2017-12-20 19.09.04.png

4.Google Assistantを終了する

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

End conversation.PNG

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

スクリーンショット 2017-12-20 11.54.08.png

スクリーンショット 2017-12-20 11.54.13.png

Simulatorの実行結果

スクリーンショット 2017-12-20 19.12.45.png