对话流:根据值和其他条件响应进行响应

时间:2018-07-22 11:52:02

标签: if-statement dialogflow api-ai

我从用户那里获得了$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')

它完全可编程吗?还是可以在用户界面中实现与以上相同的功能?

2 个答案:

答案 0 :(得分:4)

您不能直接在“响应”部分中执行此操作。 “响应”部分用于相当简单的响应,不需要处理大量逻辑。尽管您可以在响应中使用参数,但是您不能基于参数的值给出不同的响应。因此,您可以将响应设置为

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
    .AddJsonOptions(options => {
        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    });
}

但不是

I think $Dinetype is great food.

或类似的东西

但是,您可以通过实现Fulfillment Webhook来添加发送条件响应和上下文的代码。尽管您无法在“意图编辑器”屏幕的一部分中为每个意图进行此操作,但“实现”屏幕包括内置的代码编辑器。

答案 1 :(得分:1)

最新答复,但也许有人会觉得有用。

如果条件响应只需要引用一个参数值,那么我想出了可以做的是利用实体的“参考值”作为要对特定同义词集给出的响应。

因此,您将拥有一个看起来像这样的实体:

  

然后,像这样设置您的意图,并回复$Dinetype

  

然后,最终结果将如下所示:

  

您可以从那里做出任何需要的跟进意图。

缺点是Dinetype不可重用。但是我仍然认为,每当您需要简单的条件响应时,编写一个实现Webhook都比打败。