Google Home mini не запрашивает DEVICE_COARSE_LOCATION - PullRequest
0 голосов
/ 29 июня 2018

Я создаю сервис, которому нужен город, в котором хранится устройство, как только я получу город, я сохраню его в пользовательском хранилище. Поэтому, когда функция вызывается, она сначала проверяет, присутствует ли город в 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;
     }
  });

1 Ответ

0 голосов
/ 30 июля 2018

Для устройства Google Home необходимо использовать DEVICE_COARSE_LOCATION.

Проверьте Имя психического примера кода для Разрешения

// If the request comes from a phone, we can't use coarse location.
conv.data.requestedPermission =
  conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')
  ? 'DEVICE_PRECISE_LOCATION'
  : 'DEVICE_COARSE_LOCATION';
if (!conv.user.storage.location) {
  return conv.ask(new Permission({
    context: responses.permissionReason,
    permissions: conv.data.requestedPermission,
  }));
}
if (requestedPermission === 'DEVICE_COARSE_LOCATION') {
  // If we requested coarse location, it means that we're on a speaker device.
  conv.user.storage.location = conv.device.location.city;
  return showLocationOnScreen(conv);
}
if (requestedPermission === 'DEVICE_PRECISE_LOCATION') {
  // If we requested precise location, it means that we're on a phone.
  // Because we will get only latitude and longitude, we need to
  // reverse geocode to get the city.
...