Dialogflow上下文和实体

时间:2018-08-18 20:25:45

标签: dialogflow

关于Dialogflow我有两个快速问题。我觉得这些应该是相对简单的问题,但我似乎找不到答案。

1)是否有一种方法可以指定在一个上下文或另一个上下文处于活动状态时应触发意图?我知道您可以列出多个输入上下文,但是据我了解,只有所有这些上下文都处于活动状态时,才会触发该意图。如果其中任何一个处于活动状态,是否有任何方法可以触发意图?

2)是否有一种使用实现将值分配给实体的方法?我认为实现通常可以在另一个方向上起作用,但是我想在Dialogflow中创建一个实体,通过实现为它分配一个值,然后能够简单地继续调用Dialogflow中的实体,所以我不必继续使用在没有必要时实现。我无法通过Dialogflow本身分配它们的原因是它不是基于用户输入的。

我非常感谢您对以上两个问题的帮助。

非常感谢

2 个答案:

答案 0 :(得分:0)

Ans1 。否。当您将上下文设置为输入上下文并且全部处于活动状态时,则仅触发意图,或者如果触发了事件。

if((all_input_contexts_active && user_says_active) || (event_is_active)){
   trigger intent
}else{
   trigger fallback intent
}<br><br>

Ans2 。我不这么认为。使用Dialogflow SDK可能需要“ MAYBE ”。但是使用webhook似乎不受支持。

答案 1 :(得分:0)

基于一个或另一个上下文触发

否,但是您有一些方法可以解决此问题。您是正确的,输入上下文必须与列出的上下文的 all 全部匹配。

但是您也可以设置多个上下文作为传出上下文。

因此,例如,如果您当前有context-a和context-b,则可以更改内容,以便同时设置context-a和context-ab或同时设置context-b和context-ab。

然后,您可以在context-ab上触发一个Intent,只要您设置-a或-b即可设置该意图。

在配送期间分配实体值

是的。您可以使用Dialogflow的API设置用户实体(有时称为会话实体-它们是同一回事)。如果您使用的是V1 API,则可以使用/userEntities端点。如果您正在使用V2 API(应该这样做),则可以使用sessions.entityTypes方法。

无论哪种方式,您都需要先创建实体类型,但不给它提供实际要使用的实体(或一些默认的实体),然后,作为实现的一部分,用实体和同义词更新实体类型。在该会话期间,用户的其他通话将使用您设置的通话。