我有一些我无法理解的事情。
在这里我想做的事情:
Bot:你好,你想做什么?
用户:搜索产品
Bot:哪个 你想找产品吗?
用户:Apple
Bot - >产品清单 与苹果相匹配
这是片段代码:
function searchProduct() {
agent.add('Which product are you looking for ?');
// receive the product answer
//-> then research the matched product in DB
}
const intentMap = new Map();
intentMap.set('I want a product', searchProduct);
agent.handleRequest(intentMap);
在此代码中,我要求用户提供他正在寻找的产品。 但当他回答“Apple”时,如何在同一功能中接收用户响应以继续我的过程?
我知道有“上下文”概念,但要继续“搜索产品”过程,我需要回到功能中。
目前,我使用对话框实现。我试着理解这个文档来找到解决方案: https://github.com/dialogflow/dialogflow-fulfillment-nodejs/blob/master/docs/WebhookClient.md
答案 0 :(得分:0)
简短的回答是你不能(或者,至少不应该)在“相同”的功能中这样做。每个函数代表一个Intent,或者用户与我们沟通的内容。在该功能中,我们需要执行以下操作:
一旦我们将回复发送给用户 - 那一轮对话就结束了。我们需要等待用户触发下一个Intent,以便我们重复上述步骤。
使用上下文,因此我们知道我们所处的整个会话的哪个阶段。作为我们回复的一部分(上面的步骤3),我们可以设置一个Context,它将帮助Dialogflow确定应该触发哪个Intent(以及哪个Intent)应该调用函数来处理我们目前所知的内容)。上下文还可以存储有关对话之前轮次的信息。
请记住,Intents不是关于我们所说的内容,而是关于用户所说的内容。我们发送的回复是基于我们需要的,然后我们将使用单个Intent来捕获每个部分。处理Intent的函数会将答案存储在Context中并确定问题的下一部分。