Я работаю над созданием навыка alexa, где требуется получить значение для предыдущего слота.
User: Alexa,create an appointment
Alexa: please state the subject for appointment
User : subject is {subject}
Alexa: on which day?
User : {Day}
Alexa : Appointment has been created with {subject} on {day}
Последний метод должен извлечь значения из предыдущих слотов (тема и дата) и создать встречу. Пока я в состоянии извлечь значение слота для текущего намерения ... но я хотел бы получить значение слота для предыдущего намерения и использовать его в текущем методе.
< Сильный > * Пример сильный >
protected SpeechletResponse method1(Intent intent,Session session)throws
Exception{
SpeechletResponse response=null;
Map<String, Slot> slots = intent.getSlots();
Slot example = slots.get(SampleSlot);
String value=example.getValue().toString();
String output="something";
response = SpeechletResponseHelper.getSpeechletResponse(output, reprompt,
true);
return response;
}
protected SpeechletResponse method2(Intent intent,Session session)throws
Exception{
SpeechletResponse response=null;
****How to fetch the slot value used for method1 and use it in method2? ****
response = SpeechletResponseHelper.getSpeechletResponse(xxxx, reprompt,
true);
return response;
}
Возможно ли это? Если да, то как я могу это сделать?
Спасибо и С уважением
3 ответа
Я использовал сессии для достижения моего запроса, как это ....
Map<String, Slot> slots = intent.getSlots();
Slot example = slots.get(SampleSlot);
session.setAttributes(Sample_String);
session.getAttributes(SampleSessionString);
Как сказал Амит, вы должны иметь возможность использовать session.setAttribute
, однако, если по какой-то причине вы хотите сохранить то, что не может быть принято session.setAttribute
, у вас всегда может быть переменная поля , который всегда доступен, пока, конечно, сессия не закроется, как только сессия закроется, все уйдет без базы данных.
String output;
protected SpeechletResponse method1(Intent intent,Session session)throws
Exception{
SpeechletResponse response=null;
Map<String, Slot> slots = intent.getSlots();
Slot example = slots.get(SampleSlot);
String value=example.getValue().toString();
output="something";
response = SpeechletResponseHelper.getSpeechletResponse(output, reprompt,
true);
return response;
}
protected SpeechletResponse method2(Intent intent,Session session)throws
Exception{
SpeechletResponse response=null;
****How to fetch the slot value used for method1 and use it in method2? ****
response = SpeechletResponseHelper.getSpeechletResponse(output, reprompt,
true);
return response;
}
Все, что я сделал, это инициализировал строковую переменную output
в более широкой области видимости (вне метода), что делает ее доступной для любых других методов.
Я считаю, что вы должны быть в состоянии использовать session.setAttribute()
и session.getAttribute()
, как указано здесь - https://github.com/amzn/alexa-skills-kit-java/blob/master/src/com/amazon/speech /speechlet/Session.java
Похожие вопросы
Новые вопросы
amazon-web-services
Amazon Web Services (AWS) - это общедоступное облако: IaaS (инфраструктура как услуга) и SaaS (программное обеспечение как услуга), предоставляемые Amazon. Вопросы по программированию и архитектуре находятся по теме. Общую справку по серверу можно получить по адресу https://serverfault.com. Тег AWS редко используется отдельно и обычно используется вместе с другими тегами, чтобы более четко определить тему вопроса.