6

我想知道用户的名字,但是我不能使用 nodejs sdk,因为我使用了另一种语言。

我如何请求许可?

我更喜欢使用正常 json 响应的方式。

4

3 回答 3

6

我破解了这个最小的脚本来获取 nodejs sdk 将返回的 JSON 响应:

gaction.js

const DialogflowApp = require('actions-on-google').DialogflowApp;

const app = new DialogflowApp({
    request: {
        body: {
            result: {
                action: 'Test',
                contexts: []
            }
        },
        get: (h) => h
    },
    response: {
        append: (h, v) => console.log(`${h}: ${v}`),
        status: (code) => {
            return {send: (resp) => console.log(JSON.stringify(resp, null, 2))}
        }
    }
});
function testCode(app) {
    app.askForPermission('To locate you', app.SupportedPermissions.DEVICE_PRECISE_LOCATION);
}
app.handleRequest(new Map().set('Test', testCode));

我仍然不是 node.js 专家,所以这可能不是最佳解决方案。安装 node 并运行命令 npm install actions-on-google后,这将安装必要的依赖项。
完成后,您只需要运行node gaction将创建此输出:

Google-Assistant-API-Version: Google-Assistant-API-Version
Content-Type: application/json
{
  "speech": "PLACEHOLDER_FOR_PERMISSION",
  "contextOut": [
    {
      "name": "_actions_on_google_",
      "lifespan": 100,
      "parameters": {}
    }
  ],
  "data": {
    "google": {
      "expect_user_response": true,
      "no_input_prompts": [],
      "is_ssml": false,
      "system_intent": {
        "intent": "assistant.intent.action.PERMISSION",
        "spec": {
          "permission_value_spec": {
            "opt_context": "To locate you",
            "permissions": [
              "DEVICE_PRECISE_LOCATION"
            ]
          }
        }
      }
    }
  }
}

如果您现在发送上面的 JSON,Google Home 会询问您。玩得开心!

有用

于 2017-01-01T09:14:31.067 回答
0

带有操作的 API.AI webhook 的请求/响应 JSON 格式记录在https://developers.google.com/actions/apiai/webhook

正如您所发现的,该data.google.permissions_request属性包含有关请求的两个字段:

  1. opt_context包含一个字符串,读取该字符串以提供有关您要求信息的原因的一些上下文。

  2. permissions是一个字符串数组,指定您请求的信息。字符串可以有值

    • 姓名
    • DEVICE_COARSE_LOCATION
    • DEVICE_PRECISE_LOCATION
于 2017-01-07T17:23:27.220 回答
0

如果您使用的是 Java 或 Kotlin,则有一个非官方的 SDK。它与官方 SDK api 几乎完全匹配。 https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin

于 2017-08-07T18:11:14.713 回答