Я создаю сервис, которому нужен город, в котором хранится устройство, как только я получу город, я сохраню его в пользовательском хранилище.
Поэтому, когда функция вызывается, она сначала проверяет, присутствует ли город в userStorage, если нет, то возвращается, чтобы запросить DEVICE_COARSE_LOCATION
.
Сервис отлично работает в Действиях на симуляторе Google, но когда я пробую его на Google Home Mini, ниже приводится ошибка, которую я получаю
Error: Permission not granted
at app.intent (/user_code/index.js:76:11)
at Function.<anonymous> (/user_code/node_modules/actions-on-google/dist/service/dialogflow/dialogflow.js:115:23)
at next (native)
at /user_code/node_modules/actions-on-google/dist/service/dialogflow/dialogflow.js:22:71
at __awaiter (/user_code/node_modules/actions-on-google/dist/service/dialogflow/dialogflow.js:18:12)
at Function.handler (/user_code/node_modules/actions-on-google/dist/service/dialogflow/dialogflow.js:58:16)
at Object.<anonymous> (/user_code/node_modules/actions-on-google/dist/assistant.js:53:32)
at next (native)
at /user_code/node_modules/actions-on-google/dist/assistant.js:22:71
at __awaiter (/user_code/node_modules/actions-on-google/dist/assistant.js:18:12)
Ниже мой код
app.intent('LaundryIntent', (conv, {room}) => {
conv.data.requestedPermission = 'DEVICE_COARSE_LOCATION';
if (!conv.user.storage.city) {
return conv.ask(new Permission({
context: 'To serve you better',
permissions: conv.data.requestedPermission,
}));
}
else
{
var city = conv.user.storage.city;
do something then
}
});
Это намерение, которое обрабатывает разрешение
app.intent('actions_intent_PERMISSION', (conv, params, permissionGranted) => {
if (!permissionGranted)
{
throw new Error('Permission not granted');
}
const {requestedPermission} = conv.data;
if (requestedPermission === 'DEVICE_COARSE_LOCATION')
{
conv.user.storage.city = conv.device.location.city;
}
});