如果权限请求被拒绝,如何传递给意图
How to pass to an intent if Permission request is denied
我有一个与 Dialogflow 集成的操作,它作为对话的一部分请求访问用户的位置。
这是通过 webhook 实现的:
app.intent('actions_intent_PERMISSION', async (conv, params, permissionGranted) => {
if (!permissionGranted) {
app.intent('actions_intent_PERMISSION - no', (conv, params) => {
conv.ask('sad face, you said no to my permission request!');
});
// conv.ask(`Ok, no worries. I'll have to figure out how to get your postcode. follow-up intent I suppose`);
} else {
conv.data.postcode = conv.device.location.zipCode;
conv.ask(`Ok great - please give me a minute, I have to get data from a few different places.`);
//use postcode to make some other API calls
}
});
当用户授予权限时,一切都很好,但当他们不授予权限时,我想传递给手动请求其位置的意图 ('what is your postcode/zipcode?')。
根据屏幕截图,我尝试为 actions_intent_PERMISSION
创建一个名为 actions_intent_PERMISSION - no
的后续意图,但这会导致应用程序崩溃。
将对话传递给另一个意图的最佳方式是 permissionGranted
的值是 false
?
你的问题不像你问的那样有道理。意图代表用户所说的而不是你用它做什么 - 这就是你的 webhook 在意图处理程序中所做的。没有什么(技术上)阻止您通过不同的回复来回复用户询问他们的邮政编码。
如果您希望用户在授予权限时能够触发某些 Intent,而在未授予权限时触发其他 Intent,则可以为每个设置不同的 Context。然后,您可以将一些 Intents 设置为仅在设置 "permitted" 上下文时触发,而其他 Intent 仅在设置 "notpermitted" 上下文时触发。
但是,您有一个 non-technical 问题需要考虑。如果他们不允许您获取他们的位置,他们为什么要告诉您他们的位置?审稿人也很可能会拒绝它,说你应该通过提供的 API.
获取位置信息。
我有一个与 Dialogflow 集成的操作,它作为对话的一部分请求访问用户的位置。
这是通过 webhook 实现的:
app.intent('actions_intent_PERMISSION', async (conv, params, permissionGranted) => {
if (!permissionGranted) {
app.intent('actions_intent_PERMISSION - no', (conv, params) => {
conv.ask('sad face, you said no to my permission request!');
});
// conv.ask(`Ok, no worries. I'll have to figure out how to get your postcode. follow-up intent I suppose`);
} else {
conv.data.postcode = conv.device.location.zipCode;
conv.ask(`Ok great - please give me a minute, I have to get data from a few different places.`);
//use postcode to make some other API calls
}
});
当用户授予权限时,一切都很好,但当他们不授予权限时,我想传递给手动请求其位置的意图 ('what is your postcode/zipcode?')。
根据屏幕截图,我尝试为 actions_intent_PERMISSION
创建一个名为 actions_intent_PERMISSION - no
的后续意图,但这会导致应用程序崩溃。
将对话传递给另一个意图的最佳方式是 permissionGranted
的值是 false
?
你的问题不像你问的那样有道理。意图代表用户所说的而不是你用它做什么 - 这就是你的 webhook 在意图处理程序中所做的。没有什么(技术上)阻止您通过不同的回复来回复用户询问他们的邮政编码。
如果您希望用户在授予权限时能够触发某些 Intent,而在未授予权限时触发其他 Intent,则可以为每个设置不同的 Context。然后,您可以将一些 Intents 设置为仅在设置 "permitted" 上下文时触发,而其他 Intent 仅在设置 "notpermitted" 上下文时触发。
但是,您有一个 non-technical 问题需要考虑。如果他们不允许您获取他们的位置,他们为什么要告诉您他们的位置?审稿人也很可能会拒绝它,说你应该通过提供的 API.
获取位置信息。