我想根据条件设置实体值。如何在dialogflow中做到这一点?

时间:2018-12-10 18:13:32

标签: dialogflow actions-on-google

我正在为房间预订机器人。对于预订房间,用户可以选择“高级服务”或“标准服务”。

但是,可以预订的酒店取决于“高级”或“标准”。

如何在对话框流程中做到这一点?

我尝试设置实体“ Service_type”和“ Hotels”。但是,如何根据用户选择的“服务类型”为实体“酒店”设置值?

请注意,机器人的意图是书房。并且还有许多其他步骤可以完成。

2 个答案:

答案 0 :(得分:0)

您可以从创建quality之类的实体开始,考虑一下用户可以参考您定义为“标准”和“高级”质量的其他方式很有帮助。

enter image description here

现在,当您创建意图时,您应该会看到Dialogflow在训练短语中自动检测到您的实体

enter image description here

如果Dialogflow尚未检测到您的实体,则可以突出显示训练短语中的单词并将其与您选择的类型相关联

enter image description here

那是容易的部分。

为了根据选择的标准来显示一组不同的酒店,您应该研究开发处理逻辑的fulfillment endpoint

用户在第一个问题中做出的质量选择将作为参数传递,您可以轻松地根据条件逻辑选择条件来选择酒店

conv.ask(`Here is a list of ${quality} hotel options for you`);
if (quality === "premium") {
    conv.ask(getPremiumHotelOptions()); // Carousel or list
} else {
    conv.ask(getStandardHotelOptions()); // Carousel or list
}

答案 1 :(得分:0)

您可以先创建一个空的Hotels实体,然后在实现Webhook中创建populate it with the relevant entity values for that session

如果您将node.js用于Webhook,则可以调查Dialogflow library来完成许多工作。呼叫可能看起来像这样:

  const sessionEntityTypeRequest = {
    parent: sessionPath,
    sessionEntityType: {
      name: sessionEntityTypePath,
      entityOverrideMode: entityOverrideMode,
      entities: entities,
    },
  };

  const [response] = await sessionEntityTypesClient.createSessionEntityType(
    sessionEntityTypeRequest
  );

(请参见createSessionEntityType()函数中https://github.com/googleapis/nodejs-dialogflow/blob/master/samples/resource.js的更完整的示例)