Ежедневное обновление в зависимости от местоположения пользователя - PullRequest
0 голосов
/ 31 января 2019

В приложении Google Actions, использующем диалоговое окно, я работаю над настройкой ежедневного обновления с целью извлечения данных в зависимости от местоположения пользователя.Я предполагаю, что для этого мне нужно будет попросить у пользователя разрешение на доступ к информации о его местонахождении.

Какое из этих намерений будет правильным местом для запроса местоположения пользователя?

// what is the best place to ask a user for access to their location in this scenario?
function locateUser(conv) {
    conv.ask(new Permission({
        context: 'To locate you',
        permissions: 'DEVICE_PRECISE_LOCATION'
    }));
}

// initial invocation: "i want the daily weather forecast"
app.intent('daily_weather_updates', (conv) => {
    conv.ask(new Suggestions('Send daily weather forecast.'));
});

app.intent('daily_weather_updates.update', (conv) => {
    const intent = conv.arguments.get('UPDATE_INTENT');
    conv.ask(new RegisterUpdate({
        intent: 'get_daily_weather',
        frequency: 'DAILY'
    }));
});

app.intent('daily_weather_updates.finish', (conv, params, registered) => {
    if (registered && registered.status === 'OK') {
        conv.close(`Ok, I'll start giving you daily updates.`);
    } else {
        conv.close(`Ok, I won't give you daily updates.`);
    }
});

app.intent('get_daily_weather', (conv) => {
    Weather.getDailyWeather().then((response) => {
        conv.close(response);
    });
});

1 Ответ

0 голосов
/ 31 января 2019

Зависит от того, какую погоду, по вашему мнению, захочет пользователь.Погода в одном конкретном месте, где они находились, когда они настраивали уведомление, или погода в месте, где они находились, когда они подтверждают уведомление.

Если вы ожидаете, что это произойдет в том же местеВы, вероятно, захотите сделать это в одном из двух мест:

  • Перед тем, как вызвать "daily_weather_updates" Intent.
  • Как часть ответа на daily_weather_updates.finish "Намерение.

Вы не хотите делать это ни на одном из посредников, поскольку им задают вопросы, связанные с настройкой уведомления.Я бы склонялся к первому, поскольку, если они отклонят разрешение, вам не нужно проходить настройку уведомлений.В любом из этих обработчиков вы захотите сохранить возвращаемое местоположение, поскольку оно отправляет вам информацию только тогда, когда они отвечают на разрешение.

Если вы хотите сообщить о своей погоде в «текущем» месте, когда ониответив на уведомление, вы захотите сделать это в обработчике для любого намерения, которое вы настроите, когда они подтвердят уведомление.В настоящее время у вас установлено значение «get_daily_weather», но вам потребуется другое намерение, чтобы запросить разрешение, а затем другое, чтобы сообщить о погоде, как только оно у вас будет.В этом сценарии вы сохраняете только место для сеанса, поскольку ожидаете, что оно изменится.

Имейте в виду, что Ассистент не даст вам местоположение, если вы его не попросите.Поэтому, если вы хотите использовать его для более позднего разговора (либо потому, что вы просто запрашиваете его один раз, либо хотите использовать его по умолчанию на более поздний срок), вам необходимо сохранить его.

...