我正在尝试使用Dialogflow,并按照他们的指南building-your-first-agent创建一个带有响应的意图
但是,如果我在响应中使用参数,它将从默认响应返回'not available'。有谁知道它为什么会发生?
从图片中,它将在没有参数的情况下响应正确的句子。使用参数时,响应不可用。
诊断信息
没有参数
{
"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"
}
答案 0 :(得分:1)
问题在于您尝试使用@sys:given-name
参数来匹配相机"或者"相机2",但这两个都不是"给定名称",这意味着匹配给人的名字(而不是他们的姓氏),而不是名字给予设备。
在这些情况下,它正在使用一些粗略的匹配并确定"打开"匹配足够的示例短语以匹配Intent,但没有与其名称部分匹配的值。由于该参数不是必需的,因此Intent匹配时没有参数值。
根据您的具体需求,您可以采取一些措施来解决此问题:
您可能希望根据需要标记参数。 (这并不能解决名称问题,但会确保它匹配或提示用户输入值。)
您可以使用@sys:any
实体类型。这应该匹配用户为参数包含的任何内容。
如果您有一些已定义的名称,则可以define your own entity type。
答案 1 :(得分:0)
首先,我认为你没有在“培训短语”中添加任何短语。以上部分'行动和参数'部分。请添加这些内容以培训您的代理以检测“摄像机名称”'短语中的参数。其次,如果你看到你的json,result-> parameters-> cameraName是空的。如果参数为空,则无法响应需要参数' cameraName'的响应。尝试在响应中添加第三个响应,参数不使用参数并查看结果,它将返回第三个响应,当它检测到参数时,它将开始显示带参数的响应。