我目前正在为 Java 中的 Alexa 构建自定义技能。
我希望 Alexa 使用现有的 Exchange Server 设置约会。
对于约会,我希望 Alexa 检查用户是否提供了姓名、日期和时间。我这样做是使用 if 语句,例如:
if(date.getValue() == null) { return askResponse("请给出日期以便创建约会")
发生的事情是 Alexa 要求缺少的插槽,但是当我回答该技能时就退出了。我不知道如何让 Alexa 识别我的回复。
代码如下:
public SpeechletResponse getTerminResponse(Slot name, Slot date, Slot time, Session session, IntentRequest request) throws Exception {
if(time.getValue() == null) {
return askResponse("Please insert time");
} else if (date.getValue() == null) {
return askResponse("Please insert date");
} else if (name.getValue() == null) {
return askResponse("Please insert name");
} else {
try {
String[] datumArray = date.getValue().split("-");
String[] zeitArray = time.getValue().split(":");
Date startDate = new Date((Integer.parseInt(datumArray[0])-1900), (Integer.parseInt(datumArray[1])-1), (Integer.parseInt(datumArray[2])), (Integer.parseInt(zeitArray[0])), (Integer.parseInt(zeitArray[1])), 0);
Date endDate = new Date((Integer.parseInt(datumArray[0])-1900), (Integer.parseInt(datumArray[1])-1), (Integer.parseInt(datumArray[2])), (Integer.parseInt(zeitArray[0]))+1, (Integer.parseInt(zeitArray[1])), 0);
System.out.println(startDatum.toString());
System.out.println(endDatum.toString());
ExchangeHelper eh = new ExchangeHelper();
eh.createMeeting(name.getValue(), "Test", startDate, endDate);
return getTellSpeechletResponse("Appointment created successfully");
} catch (Exception e) {
System.out.println(e);
return askResponse("Failed to create appointment");
}
}
}
这是我的交互模型
任何帮助都将受到高度赞赏,因为我已经研究了几天的文档和示例,但我无法让它发挥作用。
此致