Dialogflow无法在响应中使用参数

时间:2018-05-16 18:37:44

标签: dialogflow

我正在尝试使用Dialogflow,并按照他们的指南building-your-first-agent创建一个带有响应的意图

但是,如果我在响应中使用参数,它将从默认响应返回'not available'。有谁知道它为什么会发生?

从图片中,它将在没有参数的情况下响应正确的句子。使用参数时,响应不可用。

Result of response with parameter Result of response without parameter

诊断信息

没有参数

{
  "id": "aa316e0a-7f41-46cb-a03c-03c13d80ae6b",
  "timestamp": "2018-05-16T18:31:11.858Z",
  "lang": "en",
  "result": {
    "source": "agent",
    "resolvedQuery": "turn on asdkasjd",
    "action": "",
    "actionIncomplete": false,
    "parameters": {
      "cameraName": ""
    },
    "contexts": [],
    "metadata": {
      "intentId": "41b046bc-65ea-425b-8a33-9e37c44dddf4",
      "webhookUsed": "false",
      "webhookForSlotFillingUsed": "false",
      "intentName": "opencamera"
    },
    "fulfillment": {
      "speech": "Sorry I don't know",
      "messages": [
        {
          "type": 0,
          "speech": "OK. I will try to turn on"
        }
      ]
    },
    "score": 0.9300000071525574
  },
  "status": {
    "code": 200,
    "errorType": "success"
  },
  "sessionId": "e488d71a-a21e-4cf0-bfcb-13b4a36fd811"
}

Training Phase

2 个答案:

答案 0 :(得分:1)

问题在于您尝试使用@sys:given-name参数来匹配相机"或者"相机2",但这两个都不是"给定名称",这意味着匹配给人的名字(而不是他们的姓氏),而不是名字给予设备。

在这些情况下,它正在使用一些粗略的匹配并确定"打开"匹配足够的示例短语以匹配Intent,但没有与其名称部分匹配的值。由于该参数不是必需的,因此Intent匹配时没有参数值。

根据您的具体需求,您可以采取一些措施来解决此问题:

  • 您可能希望根据需要标记参数。 (这并不能解决名称问题,但会确保它匹配或提示用户输入值。)

  • 您可以使用@sys:any实体类型。这应该匹配用户为参数包含的任何内容。

  • 如果您有一些已定义的名称,则可以define your own entity type

答案 1 :(得分:0)

首先,我认为你没有在“培训短语”中添加任何短语。以上部分'行动和参数'部分。请添加这些内容以培训您的代理以检测“摄像机名称”'短语中的参数。其次,如果你看到你的json,result-> parameters-> cameraName是空的。如果参数为空,则无法响应需要参数' cameraName'的响应。尝试在响应中添加第三个响应,参数不使用参数并查看结果,它将返回第三个响应,当它检测到参数时,它将开始显示带参数的响应。