이것은 쉬운 것일 수 있지만 며칠 만에 알아낼 수 없었습니다.Alexa (Amazon Echo) 대화 기술 - 세션 속성 사용 (JavaScript - AWS Lambda)
나는 Alexa가 대화를하고 싶습니다.
>> 알렉사, 테스트 스킬 시작.
A : 시험 기술이 시작되었습니다. 번호를 말해줘.
>> 하나.
A : 알았어요, 지금 색을 말해주세요.
>> 블루.
A : 마지막으로 동물의 이름을 말해주십시오.
>> 치킨.
A : 당신은 저에게 푸른 색과 닭고기를 말했습니다.
JSON이 보유하고 인 텐트간에 정보를 전송하는 스킬의 세션 속성을 처리해야한다는 것을 알게되었습니다.
저는 다음과 같은 함수를 사용합니다.
function testConversation(intent, session, callback) {
var cardTitle = intent.name;
var repromptText = "";
var sessionAttributes = { // I don't know how to handle this
nameOfPairOne: "",
nameOfPairTwo: "",
};
var shouldEndSession = false;
var speechOutput = "";
var color= convertToASCII(intent.slots.color.value);
sessionAttributes.nameOfPairOne = color;
speechOutput = "You said "+sessionAttributes.nameOfPairOne+". Please say another thing. ";
callback(sessionAttributes, buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession));
}
function testConversation2(intent, session, callback) {
var cardTitle = intent.name;
var repromptText = "";
var sessionAttributes = session.attributes;
var shouldEndSession = false;
var speechOutput = "";
var number = convertToASCII(intent.slots.number.value);
sessionAttributes.nameOfPairTwo = number;
speechOutput = "You first said "+sessionAttributes.nameOfPairOne+", and now said "+sessionAttributes.nameOfPairTwo;
callback(sessionAttributes, buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession));
}
//------Helpers that build all of the responses ---------//
function buildSpeechletResponse(title, output, repromptText, shouldEndSession) {
return {
outputSpeech: {type: "PlainText", text: output},
card: {type: "Simple", title: "SessionSpeechlet - " + title, content: "SessionSpeechlet - " + output},
reprompt: {outputSpeech: {type: "PlainText", text: repromptText}},
shouldEndSession: shouldEndSession
};
}
function buildResponse(sessionAttributes, speechletResponse) {
return {version: "1.0", sessionAttributes: sessionAttributes, response: speechletResponse};
}
위의 함수를 호출하는 onIntent() 함수의 코드 조각입니다. (나는 틀렸지만 올바른 방법을 알 수는 없다는 것을 알고있다.)
else if ("getColorNum" == intentName) {
if (session.attributes.nameOfPairOne === "") {
testConversation(intent, session, callback);
} else {
testConversation2(intent, session, callback);
}
}
그리고 인 텐트 스키마 JSON은 이와 비슷하다.
"intents": [
{
"intent": "getColorNum",
"slots": [
{
"name": "Color",
"type": "ColorSlot"
},
{
"name": "Number",
"type": "NumberSlot"
}
]
}
] }
그래서, 나는 모든 것들을 잘못하고 있는가? 실수는 어디 있습니까? 그리고 제가 언급 한 것처럼 대화를 어떻게 구축 할 수 있습니까? 고마워.
누군가가이 답변을 원합니다. 그동안 비슷한 질문에 대한 연구가 도움이 될 수 있습니다. http://lovemyecho.com/wp-content/uploads/2015/07/SessionAttributesInJavascript.pdf – brianfit