우선 dialogState
속성은 IntentRequest
에 있습니다. 나는 1.3.1 버전의 의존성 (maven)을 사용한다. 값을 얻으려면 yourIntentRequestObject.getDialogState()
을 사용하십시오.
<dependency>
<groupId>com.amazon.alexa</groupId>
<artifactId>alexa-skills-kit</artifactId>
<version>1.3.1</version>
</dependency>
당신은 onIntent
방법에 Speechlet
일부 샘플 사용을 참조 아래 :
if ("DoSomethingSpecialIntent".equals(intentName))
{
// If the IntentRequest dialog state is STARTED
// This is where you can pre-fill slot values with defaults
if (dialogueState == IntentRequest.DialogState.STARTED)
{
// 1.
DialogIntent dialogIntent = new DialogIntent(intent);
// 2.
DelegateDirective dd = new DelegateDirective();
dd.setUpdatedIntent(dialogIntent);
List<Directive> directiveList = new ArrayList<Directive>();
directiveList.add(dd);
SpeechletResponse speechletResp = new SpeechletResponse();
speechletResp.setDirectives(directiveList);
// 3.
speechletResp.setShouldEndSession(false);
return speechletResp;
}
else if (dialogueState == IntentRequest.DialogState.COMPLETED)
{
String sampleSlotValue = intent.getSlot("sampleSlotName").getValue();
String speechText = "found " + sampleSlotValue;
// Create the Simple card content.
SimpleCard card = new SimpleCard();
card.setTitle("HelloWorld");
card.setContent(speechText);
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech, card);
}
else
{
// This is executed when the dialog is in state e.g. IN_PROGESS. If there is only one slot this shouldn't be called
DelegateDirective dd = new DelegateDirective();
List<Directive> directiveList = new ArrayList<Directive>();
directiveList.add(dd);
SpeechletResponse speechletResp = new SpeechletResponse();
speechletResp.setDirectives(directiveList);
speechletResp.setShouldEndSession(false);
return speechletResp;
}
}
- 만들기 새로운
DialogIntent
- 가
DelegateDirective
를 만들고 updatedIntent
속성에 할당을
shoulEndSession
플래그를 false
으로 설정하십시오. 그렇지 않으면 Alexa ter 세션을 minates
SkillBuilder 내에서 Intent를 선택하려면 적어도 하나의 슬롯이 있어야합니다. 발언 및 프롬프트 구성. 프롬프트 내에서 {slotNames}를 사용할 수도 있습니다.
-alal
출처
2017-08-14 19:05:42
Sal