dialogflow:不明白我如何通过编码检索上下文

时间:2018-04-20 15:09:52

标签: node.js chatbot dialogflow api-ai

我有一些我无法理解的事情。

在这里我想做的事情:

  

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

1 个答案:

答案 0 :(得分:0)

简短的回答是你不能(或者,至少不应该)在“相同”的功能中这样做。每个函数代表一个Intent,或者用户与我们沟通的内容。在该功能中,我们需要执行以下操作:

  1. 确定用户对我们说的重要内容。
  2. 根据他们所说的内容计算任何内容。
  3. 根据(1)和(2)向用户发送回复。
  4. 一旦我们将回复发送给用户 - 那一轮对话就结束了。我们需要等待用户触发下一个Intent,以便我们重复上述步骤。

    使用上下文,因此我们知道我们所处的整个会话的哪个阶段。作为我们回复的一部分(上面的步骤3),我们可以设置一个Context,它将帮助Dialogflow确定应该触发哪个Intent(以及哪个Intent)应该调用函数来处理我们目前所知的内容)。上下文还可以存储有关对话之前轮次的信息。

    请记住,Intents不是关于我们所说的内容,而是关于用户所说的内容。我们发送的回复是基于我们需要的,然后我们将使用单个Intent来捕获每个部分。处理Intent的函数会将答案存储在Context中并确定问题的下一部分。