Я новичок в Dialogflow. Как запросить у пользователей разрешение на их местоположение и как узнать их текущее местоположение, если они согласны поделиться им.
DialgoFlow - получение местоположения пользователя
comment
Разместите код, который вы пробовали
- person farooq   schedule 29.10.2019
comment
Вы просто используете диалог или создаете бота для одной из интеграций, таких как Google Assistant, Facebook и т. Д.?
- person Jordi   schedule 29.10.2019
Ответы (2)
Я перешел по следующей ссылке, и она отлично работает ссылка для получения сообщения
Итак, идея состоит в том, чтобы создать два намерения, одно для запроса разрешения пользователя. Для обоих целей Включите Webhook. Добавьте следующий код в Fulfillment для первого намерения:
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.');
}
});
Для подробного объяснения вы можете обратиться по ссылке выше.
person
Gray_Rhino
schedule
29.10.2019
спасибо! но у меня есть эта ошибка Нет обработчика запрошенного намерения. может я что-то упускаю.
- person Inc Bot; 30.10.2019
спасибо, но у меня эта ошибка ›Нет обработчика запрошенного намерения, думаю, я что-то пропустил, мой index.js end exports.dialogflowFirebaseFulfillment = functions.https.onRequest (app); можешь мне помочь?
- person Inc Bot; 30.10.2019
Если при использовании кода возникает ошибка, обновите исходный вопрос, включив в него код и снимки экрана с намерениями. что, по вашему мнению, должно его вызвать.
- person Prisoner; 30.10.2019
Получение местоположения обычно доступно не во всех интеграциях Dialogflow, но чтобы сделать это в Actions on Google, вы можете следовать это руководство:
app.intent('Permission', (conv) => {
const permissions = ['NAME'];
let context = 'To address you by name';
// Location permissions only work for verified users
// https://developers.google.com/actions/assistant/guest-users
if (conv.user.verification === 'VERIFIED') {
// Could use DEVICE_COARSE_LOCATION instead for city, zip code
permissions.push('DEVICE_PRECISE_LOCATION');
context += ' and know your location';
}
const options = {
context,
permissions,
};
conv.ask(new Permission(options));
});
После получения разрешения вы можете обработать его в следующем обработчике:
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',
]));
});
person
Nick Felker
schedule
29.10.2019