Как получить приблизительное местоположение устройства для каждого запроса веб-крючка в действиях в Google - PullRequest
0 голосов
/ 17 октября 2018

Привет. Я пытаюсь определить приблизительное местоположение устройства, получив разрешение от пользователя. Но мне нужно было получать сведения о расположении устройства для каждого запроса веб-крючка, не спрашивая разрешения снова и снова. Так что я немного запутался, как это сделать.

Вот код ниже, который я попробовал.

const {Permission} = require('actions-on-google');
const {WebhookClient} = require('dialogflow-fulfillment');
const agent = new WebhookClient({ request: req, response: res });
function x(agent){
    conv.ask(new Permission({context:'To Locate You',permissions:'DEVICE_COARSE_LOCATION'}));
}

        function userinfo(agent){
                var conv=agent.conv();
                var resp=conv.arguments.get('PERMISSION');
            console.log(conv.device.location);
            if(resp){

                        var country=conv.device.location.country;
                        var speech="you are located in "+country;
                        conv.ask(speech);
                        agent.add(conv);
                }else{
                    conv.ask('Sorry, I could not figure out where you are');
                    agent.add(conv);
            }
        }

1 Ответ

0 голосов
/ 17 октября 2018

Пожалуйста, проверьте вспомогательные функции здесь .Вам нужно сделать следующее:

  • Создать намерение, чтобы запросить разрешение.
  • В этом намерении спросите разрешение, которое вы хотите
  • Создать второе намерение для захватаответ пользователя на намерение путем помещения события Dialogflow actions_intent_PERMISSION в это намерение.
  • В дескрипторе webhook второй проверки намерения для подтверждения.

Запрос разрешения в первом намерении

app.intent('FIRST_INTENT_NAME', (conv) => {
  // Choose one or more supported permissions to request:
  // NAME, DEVICE_PRECISE_LOCATION, DEVICE_COARSE_LOCATION
  const options = {
    context: 'To address you by name and know your location',
    // Ask for more than one permission. User can authorize all or none.
    permissions: ['NAME', 'DEVICE_PRECISE_LOCATION'],
  };
  conv.ask(new Permission(options));
});

Результат захвата во втором намерении

app.intent('SECOND_INTENT_NAME', (conv, params, confirmationGranted) => {
  const {name} = conv.user;
  if (confirmationGranted) {
    if (name) {
      conv.ask(`I'll send the driver you're way now ${name.display}.`);
    }
  }
});

Для точного понимания с примером кода, посмотрите этот пример ссылки GitHubb .

...