これは簡単なことかもしれませんが、数日でわかりませんでした。Alexa(Amazon Echo)会話スキル - セッション属性(JavaScript - AWS Lambda)を使用
私はAlexaに会話をしたいと思っています。
>> Alexa、start testSkill。
A:テストスキルが開始されました。番号を教えてください。
>> 1。
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"
}
]
}
] }
だから、私は間違ったことのすべてをやっていますか?間違いはどこですか?そして、私は言及したように会話をどのように構築できますか?ありがとう。
Soooは誰かがこれに答えることを望みます。その間、同様の質問の私の研究はこれを助けたかもしれません:http://lovemyecho.com/wp-content/uploads/2015/07/SessionAttributesInJavascript.pdf – brianfit