Я работаю над изучением Dialogflow с помощью Google Actions, и я немного потерялся с новыми v2 actions-on-google.
Я пытаюсь определить местоположение устройства, но метод, который я считал правильным, возвращает значение undefined.
Я чувствую, что упускаю что-то простое, но не могу этого найти.
Код такой:
const functions = require('firebase- functions');
const { dialogflow, Permission } = require('actions-on-google');
const app = dialogflow();
app.intent('create_log', conv => {
conv.ask(new Permission({
context: 'To locate you',
permissions: 'DEVICE_PRECISE_LOCATION'
}));
});
app.intent('user_info', (conv, params, granted) => {
if (granted) {
const coordinates = app.getDeviceLocation().coordinates;
if (coordinates) {
conv.close(`You are at ${coordinates}`);
} else {
// Note: Currently, precise locaton only returns lat/lng coordinates on phones and lat/lng coordinates
// and a geocoded coordinates on voice-activated speakers.
// Coarse location only works on voice-activated speakers.`enter code here`
conv.close('Sorry, I could not figure out where you are.');
}
} else {
conv.close('Sorry, I could not figure out where you are.');
}
});
Я не думаю, что вам нужен какой-либо метод на app
, даже если он существует, поскольку app
доступен для всех вызовов Intent Handler. Информация, относящаяся к этому диалогу, содержится в параметре conv
, передаваемом обработчику намерений.
Вы, наверное, хотите чего-то большего, например
const coordinates = conv.device.location;
Большой! Если это помогло вам, принятие и / или голосование ответа всегда приветствуются.
Спасибо за быстрый отзыв. Должно быть, я неправильно понял то, что читал в документации, это отлично работает.