'明天'定义为@ sys.date实体,不为第二天设置闹钟

时间:2017-08-28 07:29:43

标签: android dialogflow

我正在使用API.AI来设置使用语音助手的闹钟,为此我创建了一个名为“设置闹钟”的意图,并定义了各种用户表达式,其中一个是“明天时设置闹钟”其中'time'定义为@sys.time实体,而'明''定义为@sys.date实体。

虽然@sys.time设置时间非常合适,但@sys.date只是显示正确的日期值,例如'2017-08-29',但无法为明天设置闹钟。< / p>

例如,当我说“明天下午2点设置闹钟”时,它会在今天下午2点设置闹钟而不是明天。

以下是一些代码:

if (entry.getValue().getAsJsonArray().size() != 0) {
    createAlarm("", Integer.valueOf(entry.getValue().toString().substring(2, 4)), Integer.valueOf(entry.getValue().toString().substring(5, 7)));
    hResponse.setText("Alarm set successfully!");
    tts.speak("Alarm set successfully!", TextToSpeech.QUEUE_ADD, null);
} else {
    Toast.makeText(getBaseContext(), "no time parameter", Toast.LENGTH_SHORT).show();
}

如果我明天设定它,我怎样才能达到为明天设置警报的预期结果?

1 个答案:

答案 0 :(得分:1)

API.AI将@sys.date和@sys.time参数作为ISO-8601字符串发送。我建议您检查如何解析来自API.AI的日期和时间字符串,并使用您所选平台的日期时间库,以避免在日期解析时出错。 (time and date entity docs

要确保始终向您的webhook发送您可能想要同时发送required parameters的时间和日期。确保为每个必需参数设置提示(即&#34;您希望在什么时间设置闹钟?&#34;)