如何使用actions.intent.DATETIME?

How to use actions.intent.DATETIME?

它是在文档中定义的 "clearly",但我找不到如何使用 actions.intent.DATETIME 的示例。

请提供 'action.json' 文件中所需内容的示例,以及我的代码如何使用 assistant SDK 帮助程序获取提供的日期和时间。我一直没弄清楚如何使用 actions.intent.___

在最简单的层面上,我希望我的代码知道这个人是早上还是晚上,因为我需要在每种情况下提供不同的信息。有人可能想这样做来回应 "Good morning" 或 "Good evening".

也与意图有关,在更复杂的层面上,我还想知道它们的大致位置 (lat/long)。我想一旦我知道如何使用 DATETIME,我就能够应用相同的代码模式来使用 getDeviceLocation.

https://github.com/actions-on-google/actions-on-google-nodejs 中有一些代码使用 DATETIME 意图,但它会随时询问用户。我只想知道他们现在几点了。

可以使用 client library 中 ActionsSdkApp class 的 askForDateTime() 方法调用 DateTime 意图。只需从意图中调用该方法,并向其传递一些澄清提示的查询。然后使用 actions.intent.DATETIME 意图的侦听器来侦听响应,就像侦听 actions.intent.TEXT 意图一样。

actions.intent.DATETIME 意图的处理程序中,您可以使用 getDateTime() 方法检索数据。不幸的是,这个意图只能通过向用户询问确切的日期和时间来工作,而且它是一个通用的日期和时间,所以不能保证它是他们当前的日期时间,除非你以一种引导用户的方式构建你的提示那。

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,您可以使用他们的日期和时间系统实体来执行此操作,或者使用 ApiAiApp class 中的 askForDateTime() 方法客户端库。

您可以将地图 API location/time 嵌入到您的应用程序 JSON 或其他开源中。就位置而言,它是特定于设备和用户设置的,因此,您是否从 device/user 获得 JSNODE 响应取决于用户,即使他们是 运行 应用程序,并且具有不同的设置偏好。