我正在尝试遵循GitHub上的以下示例,该示例说明使用Node JS SDK的权限如何工作:
https://github.com/actions-on-google/dialogflow-name-psychic-nodejs
我注意到一些奇怪的事情:
在网络模拟器上进行测试时,该位置始终默认为加州山景城。是因为Google总部位于那儿吗?
当我在Google Home mini上调用相同的操作时(我已登录到我的Google帐户)
2.1我没有听到请求许可的原因。从日志中可以看到,调用了request_location_permission操作,但是未触发conv.ask API调用。
下面的代码段:
app.intent('request_location_permission', (conv) => {
// If the request comes from a phone, we can't use coarse location.
conv.data.requestedPermission =
conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')
? 'DEVICE_PRECISE_LOCATION'
: 'DEVICE_COARSE_LOCATION';
if (!conv.user.storage.location) {
console.log('**inside the if condition');
return conv.ask(new Permission({
context: responses.permissionReason,
permissions: conv.data.requestedPermission,
}));
}
showLocationOnScreen(conv);
});
2.2始终默认为拒绝权限(在handle_permission意图内)
以下是Google Home mini上的事件顺序:
User-> Talk to my test app
Google Home-> bla..bla bla
User-> location
Google Home-> I can't read your mind
App Quits.
但是,可以预料的是,在我说“位置”后,Google Home应该请求位置许可,而是读出错误消息。
任何人都可以对此有所了解。