2017-11-16 2 views
0

GoogleホームとDialogflowによって私のオフィスに会議室を予約するアプリを作ろうとしています。Dialogflowでステートフルな会話をデザインするには

Me: "OK Google, is there any available room now?" 
Google Home: "Room 1 is available until 16:00." 
Me: "Book it." 
Google Home: "Booked Room 1." 

現在の問題は、Googleホームの応答ステートフルを作成する方法である: はここに私の計画です。私の計画では、「予約する」と言うと、Google Homeはルーム1を覚えていなければなりません。しかし、そのようにする方法はわかりません。

私は会話APIのドキュメントを読みましたが、同じ会話ID内の変数や状態を保存することは可能です。 https://developers.google.com/actions/reference/v1/conversation

誰でも知っていますか?

答えて

2

ユーザーがあなたの行動に持っている会話の一部として状態を保持することは、絶対に可能であり、かなり簡単です。 Dialogflow彼らはcontext呼ぶもので、それは特に容易になり、それはいくつかの方法でこれを使用しています。

  1. あなたの履行の一環として、あなたはコンテキストを設定することができ、寿命(会話のステップ数)はコンテキストが良好になること、およびこのコンテキストのパラメータ/値のペアが含まれます。あなたの例を使用して、部屋番号と時間に返答するActionがある場合、ペア "{room}" "1"}と{"time": "2017-11-15T16: 00Z "}と5

  2. の寿命は、あなたはその意図が会話の中で選択するため設定しなければならない文脈どのような意図の一部として示すことができます。だから "誰が利用できるの?"一方、 "pending_request"コンテキストがアクティブである場合、(同じ建物内にいるため)その部屋で会うことができるその時に誰が利用可能であるかを調べるインテントをトリガすることができます。しかし、コンテキストがアクティブでない場合、インテントは、誰がすぐに利用できるかを(別の建物にいる場合であっても)確認することができます。

  3. コンテキストで設定したパラメータは、呼び出されたインテントで使用できます。あなたは意図の達成にどのような部屋と時間が設定されているかを知ることができます。

  4. コンテキストを更新しないと、選択した数の交換後にコンテキストが更新されません。これは、あなたが部屋について調べた後、あなたは今日(部屋や時間に無関係な質問)今日の予定があるかどうかを問うことができます。あなたがGoogleからのnode.js client libraryを使用している場合

、あなたはapp.getContext()app.setContext()を使用することができます。 JSONでこれを行う場合は、レスポンスに直接コンテキスト情報を入力する必要があります。

Googleでは、node.jsクライアントライブラリでプロパティを設定できるより一般的なapp.dataオブジェクトも提供しています。これらのプロパティは会話中(会話の間ではありません)に保持されます。 Contextは舞台裏で使用されますが、Intentマッチングの一部として使用することはできないため、コンテキストほど強力ではありません。

(あなたが提供したリンクはAPIのバージョン1になっていますが、そのバージョンは廃止され、2018年5月に無効になります)、DialogflowではなくActions API用でもあります。 https://developers.google.com/actions/reference/rest/conversation-webhookにありますが、これはDialogflowを使用している場合にはおそらく必要ではありません。)

+0

私は文脈の特徴について知らなかった。本当にありがとう! – Udomomo

関連する問題