Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dialogflow es 不带nodejs库的请求用户位置_Dialogflow Es_Actions On Google - Fatal编程技术网

Dialogflow es 不带nodejs库的请求用户位置

Dialogflow es 不带nodejs库的请求用户位置,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,我在GoogleNodeJS库上的操作帮助下成功地请求了用户位置,但我更喜欢java,我需要用java来做这件事 从上面的链接中,我发现只使用json响应是可能的 我已经在api.ai中创建了我的poc应用程序,它的返回值低于json响应 1. 这将返回: 2. 本申报表: 我想知道我这样做是可能的还是不可能的。如果是,我做错了什么 请帮助。对于初学者-是的,这是可能的。您可以使用JSON请求权限。所有node.js库所做的都是帮助格式化JSON 大部分看起来是正确的,但我认为这里有两

我在GoogleNodeJS库上的操作帮助下成功地请求了用户位置,但我更喜欢java,我需要用java来做这件事

从上面的链接中,我发现只使用json响应是可能的

我已经在api.ai中创建了我的poc应用程序,它的返回值低于json响应

1. 这将返回:

2. 本申报表:

我想知道我这样做是可能的还是不可能的。如果是,我做错了什么


请帮助。

对于初学者-是的,这是可能的。您可以使用JSON请求权限。所有node.js库所做的都是帮助格式化JSON

大部分看起来是正确的,但我认为这里有两种不同类型的错误

首先,我怀疑在您的第一个示例中,有几个字段导致API.AI/Google出现问题。两个空字段,
conversationToken.state
expectedInputs.inputPrompt.noInputPrompts
,可能会导致问题。
state
字段应该只是一个字符串(任何字符串都可以),而
noInputPrompts
应该是一个空数组

此外,您还表示您正在使用API.AI,这需要返回额外的信息,以及您在
data.google
部分(您在第二个示例中有,但不是第一个示例中)中指示的大部分信息。有关API.AI响应的基本布局以及Google助手使用的其他字段,请参阅

以下是我生成的一些有效输出:


{
    "speech": "PLACEHOLDER_FOR_PERMISSION",
    "contextOut": [
        {
            "name": "_actions_on_google_",
            "lifespan": 100,
            "parameters": {}
        }
    ],
    "data": {
        "google": {
            "expectUserResponse": true,
            "isSsml": false,
            "noInputPrompts": [],
            "systemIntent": {
                "intent": "actions.intent.PERMISSION",
                "data": {
                    "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
                    "optContext": "To pick you up",
                    "permissions": [
                        "NAME",
                        "DEVICE_PRECISE_LOCATION"
                    ]
                }
            }
        }
    }
}


非常感谢你的帮助。它按我的要求工作。:)嗨@Captive,我有一个问题:一旦我们获得用户名和位置许可,我们是否有任何方法可以仅存储该会话的许可,并且无论何时需要,我都会获得该许可,是吗?对于其他/不同的问题,最好问另一个SO问题,而不是尝试使用评论进行跟进。然而,在这种情况下,它已经被问到和回答了:如果这回答了你的问题,就把问题和答案投上一票。如果没有-尽可能多地询问一个新问题。现在有一个非官方的Java/Kotlin SDK。它具有nodejs的所有特性和非常相似的api。我维护这个项目,并将很快更新文档和自述文件,但它已经准备好使用,并且在maven central上@帕特里克,谢谢,我去看看
{
    "contextOut": [
        {
            "lifespan": 100,
            "name": "_actions_on_google_",
            "parameters": null
        },
        {
            "lifespan": 5,
            "name": "requesting_permission",
            "parameters": null
        }
    ],
    "data": {
        "google": {
            "expect_user_response": true,
            "is_ssml": false,
            "no_input_prompts": null,
            "permissions_request": {
                "opt_context": "Requesting Location.",
                "permissions": [
                    "DEVICE_COARSE_LOCATION"
                ]
            }
        }
    },
    "speech": "PLACEHOLDER_FOR_PERMISSION"
}

{
    "speech": "PLACEHOLDER_FOR_PERMISSION",
    "contextOut": [
        {
            "name": "_actions_on_google_",
            "lifespan": 100,
            "parameters": {}
        }
    ],
    "data": {
        "google": {
            "expectUserResponse": true,
            "isSsml": false,
            "noInputPrompts": [],
            "systemIntent": {
                "intent": "actions.intent.PERMISSION",
                "data": {
                    "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
                    "optContext": "To pick you up",
                    "permissions": [
                        "NAME",
                        "DEVICE_PRECISE_LOCATION"
                    ]
                }
            }
        }
    }
}