web-dev-qa-db-ja.com

Dialogflow:値やその他の条件付き応答に基づいて応答します

ユーザーから取得した$dinetype変数があります。

enter image description here

しかし、$dinetype変数に設定されている値に基づいて応答を提供したいと思います。回答を与えるだけでなく、関連するコンテキストも設定する必要があります。 DialogFlowでこれを行うにはどうすればよいですか?

enter image description here

if($Dinetype=='dineout') 
      ask ('which restaurant would you like to go to?')
      set_context ('awaiting-restaurant')
if($Dinetype=='takeaway') 
      ask ('When would you like to take away?')
      set_context ('awaiting-takeaway-time')

まったくプログラム可能ですか?または、UIで上記と同等のものを達成することは可能ですか?

これを[応答]セクションで直接行うことはできません。応答セクションは、処理するために重要なロジックを必要としないかなり単純な応答を対象としています。応答でパラメーターを使用できますが、パラメーターの値に基づいて別の応答を返すことはできません。したがって、次のような応答を設定できます

I think $Dinetype is great food.

だがしかし

{{#if $Dinetype == "Thai"}}I think Thai food is too hot{{/if}}

またはそのようなもの

ただし、 Fulfillment Webhookを実装することで、条件付き応答とコンテキストを送信するコードを追加できます。インテントエディタ画面の一部としてインテントごとにこれを行うことはできませんが、フルフィルメント画面には組み込みのコードエディタが含まれています。

6
Prisoner

遅い返信ですが、多分誰かがこれが便利だと思うでしょう。

条件付き応答が単一のパラメーター値を参照するだけでよい場合は、エンティティの「参照値」を特定のシノニムのセットに与えたい応答として利用することで何ができるかを考えました。

したがって、次のようなエンティティがあります。

次に、$Dinetypeのレスポンスを使用して、次のようにインテントをセットアップします。

最終的な結果は次のようになります。

そして、そこから必要なフォローアップの意図を作成できます。

欠点はDinetypeが再利用可能にならないことです。ただし、単純な条件付き応答が必要になるたびに、フルフィルメントWebhookを作成するよりも優れていると思います。

10
corylulu