0

我正在编写一个 Lambda 函数,该函数从 Alexa Skill 的 API 获取数据,但我想通过使用 Amazon 的内置AMAZON.DATE插槽类型使结果更加具体。例如,仅返回特定日期的事件。

功能:

switch(event.request.intent.name) {
  case "GetTodaysPerfs":
    var endpoint = "http://services-app.lincolncenter.org/api/v1/event?dateFrom=2017-06-11T04%3A00%3A00.0Z&dateTo=2017-06-12T04%3A00%3A00.0Z"
    var body = ""
    http.get(endpoint, (response) => {
      response.on('data', (chunk) => { body += chunk })
      response.on('end', () => {
        var data = JSON.parse(body)
        var perfs = data.data[0].show.title
        context.succeed(
          generateResponse(
            buildSpeechletResponse(`The following performances are on today: ${perfs}`, true),
            {}
          )
        )
      })
    })
    break;

  default:
    throw "Invalid intent"
}

我可以通过在端点 URL 中手动指定日期范围来获得更具体的结果,但显然,这并不理想,因为它不是动态的。

我是使用 API 的新手,但我有一些想法:

  1. 使用动态构建端点 URLAMAZON.DATE

  2. 循环遍历data对象并根据data.dateRange每个事件进行过滤

为了获得更好的性能,我倾向于第一个,因为默认数据非常大。哪个对我来说是最好的解决方案,我该如何实现?

如果我能提供更多有用的信息,请告诉我。

谢谢!

4

1 回答 1

1

如果您想让用户指定日期,请在意图中包含一个日期槽。正如您所确定的,此插槽的类型为 AMAZON.DATE。

然后在您的意图处理程序中,测试插槽是否具有有效数据,并在您的请求中使用它。

请参阅 Alexa 文档(例如此链接)以获取有关插槽的详细信息(听起来您已经阅读过此内容)并搜索“alexa 插槽示例”(例如此链接)以获取有关访问插槽数据的代码的帮助。

听起来您使用第一种方法走在正确的轨道上。

于 2017-07-12T13:00:13.947 回答