Dialogflow es DialgoFlow-获取用户位置

Dialogflow es DialgoFlow-获取用户位置,dialogflow-es,actions-on-google,dialogflow-es-fulfillment,Dialogflow Es,Actions On Google,Dialogflow Es Fulfillment,我是个新手。如何向用户请求其位置权限,以及如果用户同意共享,如何获取其当前位置 并非每个Dialogflow集成中都有获取位置的功能,但要在Google上的操作中实现此功能,您可以遵循以下步骤: 获得权限后,您可以在下一个处理程序中处理它: app.intent('Permission Handler', (conv, params, confirmationGranted) => { // Also, can access latitude and longitude // co

我是个新手。如何向用户请求其位置权限,以及如果用户同意共享,如何获取其当前位置

并非每个Dialogflow集成中都有获取位置的功能,但要在Google上的操作中实现此功能,您可以遵循以下步骤:

获得权限后,您可以在下一个处理程序中处理它:

app.intent('Permission Handler', (conv, params, confirmationGranted) => {
  // Also, can access latitude and longitude
  // const { latitude, longitude } = location.coordinates;
  const {location} = conv.device;
  const {name} = conv.user;
  if (confirmationGranted && name && location) {
    conv.ask(`Okay ${name.display}, I see you're at ` +
      `${location.formattedAddress}`);
  } else {
    conv.ask(`Looks like I can't get your information.`);
  }
  conv.ask(`Would you like to try another helper?`);
  conv.ask(new Suggestions([
    'Confirmation',
    'DateTime',
    'Place',
  ]));
});

我遵循了以下链接,它工作得非常完美
因此,我们的想法是创建两个意图,一个用于请求权限,另一个用于获取用户权限。对于这两种意图,都启用Webhook。 在实现第一个目的时添加以下代码:

app.intent('location', (conv) => {

conv.data.requestedPermission = 'DEVICE_PRECISE_LOCATION';
return conv.ask(new Permission({
    context: 'to locate you',
    permissions: conv.data.requestedPermission,
})); 
});
对于第二个目的,添加以下代码:

app.intent('user_info', (conv, params, permissionGranted) {
if (permissionGranted) {
    const {
        requestedPermission
    } = conv.data;
    if (requestedPermission === 'DEVICE_PRECISE_LOCATION') {

        const {
            coordinates
        } = conv.device.location;
        // const city=conv.device.location.city;

        if (coordinates) {
            return conv.close(`You are at ${coordinates.latitude}`);
        } else {
            // Note: Currently, precise locaton only returns lat/lng coordinates on phones and lat/lng coordinates
            // and a geocoded address on voice-activated speakers.
            // Coarse location only works on voice-activated speakers.
            return conv.close('Sorry, I could not figure out where you are.');
        }

    }
} else {
    return conv.close('Sorry, permission denied.');
}
});

有关详细说明,您可以参考上面的链接

发布一些您尝试过的代码。您是否正在使用dialogflow或正在为其中一个集成(如Google Assistant、Facebook等)构建机器人?thks!但我有这个错误,没有处理请求意图的处理程序。也许我遗漏了什么。谢谢,但我有一个错误>请求意图没有处理程序我想我遗漏了什么,我的index.js end“exports.dialogflowFirebaseFulfillment=functions.https.onRequest(app);”你能帮我吗?如果你的代码有错误,请包括您的代码和您认为应该触发它的意图的屏幕截图。
app.intent('user_info', (conv, params, permissionGranted) {
if (permissionGranted) {
    const {
        requestedPermission
    } = conv.data;
    if (requestedPermission === 'DEVICE_PRECISE_LOCATION') {

        const {
            coordinates
        } = conv.device.location;
        // const city=conv.device.location.city;

        if (coordinates) {
            return conv.close(`You are at ${coordinates.latitude}`);
        } else {
            // Note: Currently, precise locaton only returns lat/lng coordinates on phones and lat/lng coordinates
            // and a geocoded address on voice-activated speakers.
            // Coarse location only works on voice-activated speakers.
            return conv.close('Sorry, I could not figure out where you are.');
        }

    }
} else {
    return conv.close('Sorry, permission denied.');
}
});