【问题标题】:How to ask permission in Actions on Google without the SDK?如何在没有 SDK 的情况下在 Actions on Google 中请求权限?
【发布时间】:2017-05-15 19:50:33
【问题描述】:

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

我该如何申请许可?

我更喜欢普通 json 响应的方式。

【问题讨论】:

    标签: actions-on-google dialogflow-es


    【解决方案1】:

    我破解了这个最小的脚本来获取 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 专家,所以这可能不是最佳解决方案。当您安装好节点并运行命令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 会询问您。玩得开心!

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-20
          • 2012-02-02
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          • 2012-08-04
          相关资源
          最近更新 更多