Dialogflow es 对话框流的实现响应
刚从DialogFlow开始构建应用程序。我在云上用Java托管了一个服务(不使用firebase)。基本上,我从代理接收数据并将响应作为Json发送回。对于简单查询,它将按预期工作。例如,如果我说“我的名字是X”,服务将响应为“Hello X”,并在响应中播放。JSON响应以如下方式发送:Dialogflow es 对话框流的实现响应,dialogflow-es,google-home,Dialogflow Es,Google Home,刚从DialogFlow开始构建应用程序。我在云上用Java托管了一个服务(不使用firebase)。基本上,我从代理接收数据并将响应作为Json发送回。对于简单查询,它将按预期工作。例如,如果我说“我的名字是X”,服务将响应为“Hello X”,并在响应中播放。JSON响应以如下方式发送: {speech: "Hello X", type:"0"} 现在,我想获取用户位置,因此我想请求用户访问该位置的权限。我有一个单独的意图,没有任何培训用语。它具有事件操作\u意图\u权限 我发送以下回复
{speech: "Hello X", type:"0"}
现在,我想获取用户位置,因此我想请求用户访问该位置的权限。我有一个单独的意图,没有任何培训用语。它具有事件操作\u意图\u权限
我发送以下回复
{
"conversationToken": "[\"_actions_on_google_\"]",
"expectUserResponse": true,
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": "PLACEHOLDER_FOR_PERMISSION"
}
}
]
}
},
"possibleIntents": [
{
"intent": "actions.intent.PERMISSION",
"inputValueData": {
"@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
"optContext": "To locate you",
"permissions": [
"NAME"
]
}
}
],
"speechBiasingHints": [
"$geo_city",
"$event_category",
"$event_date"
]
}
],
"responseMetadata": {
"status": {},
"queryMatchInfo": {
"queryMatched": true,
"intent": "1ec64dc5-a6f4-44f6-8483-633b8638c729"
}
}
}
但我得到的答复是400个错误的请求。这里有没有我做错了什么或者我遗漏了什么?有三个问题 第一个是
actions\u intent\u PERMISSION
事件是响应权限请求而发送的。因此,这不应该是触发请求的意图
第二,你要的是用户名,而不是他们的位置。您需要设备\u粗略\u位置
或设备\u精确\u位置
第三个更大的问题是,您发送的JSON是ActionSDK使用的格式。因为您使用的是Dialogflow,所以您将使用一个基本的,加上对data.Google
JSON属性中特定于Google内容的操作
您的回答应该更像这样:
{
"data": {
"google": {
"expectUserResponse": true,
"systemIntent": {
"intent": "actions.intent.PERMISSION",
"data": {
"@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
"optContext": "To locate you",
"permissions": [
"NAME",
"DEVICE_PRECISE_LOCATION"
]
}
}
}
}
}
Dialogflow还提供了一系列请求和回复,这些请求和回复应该对您的对话的其他部分有所帮助