Как использовать actions.intent.DATETIME?

Это «четко» определено в документации, но я не могу найти примера того, как использовать actions.intent.DATETIME.

Приведите пример того, что необходимо в файле «action.json», и как мой код может получить дату и время, предоставленные с помощью помощника assistant SDK. Я вообще не мог понять, как использовать actions.intent.___!

На самом простом уровне я хочу, чтобы мой код знал, утро или вечер для человека, поскольку мне нужно предоставлять разную информацию в каждом случае. Кто-то может захотеть сделать это, чтобы ответить «Доброе утро» или «Добрый вечер».

Также, что касается намерений, на более сложном уровне я также хочу знать их приблизительное местоположение (широта / долгота). Я подумал, что как только я узнаю, как работать с DATETIME, я смогу применить тот же шаблон кода для использования getDeviceLocation.

Код есть на https://github.com/actions-on-google/actions-on-google-nodejs, который использует намерение DATETIME, но запрашивает у пользователя любое время. Я просто хочу знать их текущее время.


person Glen Little    schedule 31.07.2017    source источник


Ответы (2)


Намерение DateTime можно вызвать с помощью метода askForDateTime() из класса ActionsSdkApp в нашем клиентская библиотека. Просто вызовите метод из намерения и передайте ему несколько запросов, поясняющих подсказку. Затем прислушайтесь к ответу, используя прослушиватель намерения actions.intent.DATETIME, точно так же, как вы слушали бы намерение actions.intent.TEXT.

В обработчике намерения actions.intent.DATETIME вы можете использовать метод getDateTime() для извлечения данных. К сожалению, это намерение работает только при запросе точной даты и времени у пользователя, и это общая дата и время, поэтому нет гарантии, что это их текущее datetime, если вы не структурируете свои запросы таким образом, чтобы направлять пользователя к что.

const app = new ActionsSdkApp({ request, response });

function welcomeIntent (app) {
  app.askForDateTime('When do you want to come in?',
    Which date works best for you?',
    'What time of day works best for you?');
}

function datetime (app) {
  app.tell({speech: 'Great see you at your appointment!',
    displayText: 'Great, we will see you on '
    + app.getDateTime().date.month
    + '/' + app.getDateTime().date.day
    + ' at ' + app.getDateTime().time.hours
    + (app.getDateTime().time.minutes || '')});
}

const actionMap = new Map();
actionMap.set(app.StandardIntents.MAIN, welcomeIntent);
actionMap.set(app.StandardIntents.DATETIME, datetime);
app.handleRequest(actionMap);

Как вы упомянули, вы можете вызывать и обрабатывать намерение actions.intent.PERMISSION аналогичным образом, чтобы получить точное местоположение по долготе и широте.

В качестве побочного примечания, если вы используете API.AI, вы можете использовать их системные сущности Date и Time для этого или использовать метод askForDateTime () в классе ApiAiApp из клиентской библиотеки.

person Sachit Mishra    schedule 04.08.2017
comment
Есть ли способ узнать текущее время пользователя, не требуя его предоставить? - person Glen Little; 04.08.2017
comment
К сожалению, вы можете либо спросить их напрямую, либо использовать намерение PERMISSION, чтобы получить местоположение и сопоставить его со временем в вашем бэкэнде. - person Sachit Mishra; 04.08.2017
comment
Итак, я могу узнать их местоположение без словесного взаимодействия, но не их текущее время? Это неясно в документах, которые я видел. Запрос, показанный в симуляторе, включает местоположение, но мой код node.js этого не понимает. - person Glen Little; 05.08.2017
comment
Чтобы быть ясным, намерение РАЗРЕШЕНИЕ вызовет поворот диалогового окна, в котором у пользователя запрашивается разрешение поделиться с вами своим местоположением (или именем, если хотите). - person Sachit Mishra; 08.08.2017
comment
возможно, что запросить только дату в намерении datetime - person Lokesh; 13.08.2019

Вы можете встроить местоположение / время API карт в свое приложение JSON или другой открытый исходный код. Что касается местоположения, это зависит от настроек устройства и пользователя, поэтому, получите ли вы ответ JSNODE от устройства / пользователя, зависит от пользователя, даже если они запускают приложение и имеют разные настройки.

person Jeremy Waters    schedule 04.08.2017