获取用于先前意图(方法)的插槽值并在当前方法中使用它?
Fetch the slot value used for a previous intent(method) and use it in current method?
我正在开发一项 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;
}
这可能吗?如果可以,我该怎么做?
感谢和问候
我相信您应该能够使用此处提到的 session.setAttribute()
和 session.getAttribute()
- https://github.com/amzn/alexa-skills-kit-java/blob/master/src/com/amazon/speech/speechlet/Session.java
如 Amit 所说,您应该可以使用 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
,这使得它可用于任何其他方法。
我使用会话来实现这样的查询....
Map<String, Slot> slots = intent.getSlots();
Slot example = slots.get(SampleSlot);
session.setAttributes(Sample_String);
session.getAttributes(SampleSessionString);
我正在开发一项 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;
}
这可能吗?如果可以,我该怎么做?
感谢和问候
我相信您应该能够使用此处提到的 session.setAttribute()
和 session.getAttribute()
- https://github.com/amzn/alexa-skills-kit-java/blob/master/src/com/amazon/speech/speechlet/Session.java
如 Amit 所说,您应该可以使用 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
,这使得它可用于任何其他方法。
我使用会话来实现这样的查询....
Map<String, Slot> slots = intent.getSlots();
Slot example = slots.get(SampleSlot);
session.setAttributes(Sample_String);
session.getAttributes(SampleSessionString);