我正在为房间预订机器人。对于预订房间,用户可以选择“高级服务”或“标准服务”。
但是,可以预订的酒店取决于“高级”或“标准”。
如何在对话框流程中做到这一点?
我尝试设置实体“ Service_type”和“ Hotels”。但是,如何根据用户选择的“服务类型”为实体“酒店”设置值?
请注意,机器人的意图是书房。并且还有许多其他步骤可以完成。
答案 0 :(得分:0)
您可以从创建quality
之类的实体开始,考虑一下用户可以参考您定义为“标准”和“高级”质量的其他方式很有帮助。
现在,当您创建意图时,您应该会看到Dialogflow在训练短语中自动检测到您的实体
如果Dialogflow尚未检测到您的实体,则可以突出显示训练短语中的单词并将其与您选择的类型相关联
那是容易的部分。
为了根据选择的标准来显示一组不同的酒店,您应该研究开发处理逻辑的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的更完整的示例)