如何在没有 SDK 的情况下在 Actions on Google 中请求权限?
How to ask permission in Actions on Google without the SDK?
我想知道用户的名字,但是我用的是其他语言,无法使用nodejs sdk
如何请求许可?
我更喜欢使用正常 json 响应的方式。
我破解了这个最小脚本以获得 JSON nodejs sdk 会 return:
的响应
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 主页询问您。玩得开心!
带有操作的 API.AI webhooks 的 request/response JSON 格式记录在 https://developers.google.com/actions/apiai/webhook
如您所见,data.google.permissions_request
属性包含两个与请求相关的字段:
opt_context
包含一个字符串,读取该字符串是为了提供一些有关您为何要求提供信息的背景信息。
permissions
是一个字符串数组,指定您请求的信息。字符串可以有值
- 姓名
- DEVICE_COARSE_LOCATION
- DEVICE_PRECISE_LOCATION
如果您使用的是 Java 或 Kotlin,则可以使用非官方 SDK。它几乎完全匹配官方 SDK api。
https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin
我想知道用户的名字,但是我用的是其他语言,无法使用nodejs sdk
如何请求许可?
我更喜欢使用正常 json 响应的方式。
我破解了这个最小脚本以获得 JSON nodejs sdk 会 return:
的响应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 主页询问您。玩得开心!
带有操作的 API.AI webhooks 的 request/response JSON 格式记录在 https://developers.google.com/actions/apiai/webhook
如您所见,data.google.permissions_request
属性包含两个与请求相关的字段:
opt_context
包含一个字符串,读取该字符串是为了提供一些有关您为何要求提供信息的背景信息。permissions
是一个字符串数组,指定您请求的信息。字符串可以有值- 姓名
- DEVICE_COARSE_LOCATION
- DEVICE_PRECISE_LOCATION
如果您使用的是 Java 或 Kotlin,则可以使用非官方 SDK。它几乎完全匹配官方 SDK api。 https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin