私はこのカスタムAlexaスキルを一日書きましたが、非常に小さいものに固執しています。変数を使用する場合、配列から値を取り出すことができません。コードplaces[theplace].pincode
は、UNDEFINEDを返します。変数を使用するときに配列から値を引き出すことができません
任意のポインタ?ここに私が使用しているコード全体があります。
// 1. Text strings
var languageStrings = {
'en': {
'translation': {
'WELCOME' : "Welcome to Pincode search!",
'HELP' : "Hi! you can ask me the pin code for any place you want. For example say Tell me the pin code for mumbai",
'ABOUT' : "This is an Alexa Skill.",
'STOP' : "Bye!"
}
}
};
var places = {
"mumbai": {
"pincode": "400001",
},
"delhi": {
"pincode": "110001",
},
};
// 2. Skill Code
var Alexa = require('alexa-sdk');
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
// alexa.appId = 'amzn1.echo-sdk-ams.app.1234';
alexa.resources = languageStrings;
alexa.registerHandlers(handlers);
alexa.execute();
};
var handlers = {
'LaunchRequest': function() {
this.emit(':tell', this.t('WELCOME') + ' ' + this.t('HELP'));
},
'getPlaceIntent': function() {
var theplace = this.event.request.intent.slots.place.value;
var thepincode = places[theplace]['pincode'];
this.emit(':tell', 'The pin code for '+ theplace + ' is ' + thepincode);
},
'AMAZON.HelpIntent': function() {
this.emit(':ask', this.t('HELP'));
},
'AMAZON.NoIntent': function() {
this.emit('AMAZON.StopIntent');
},
'AMAZON.CancelIntent': function() {
this.emit(':tell', this.t('STOP'));
},
'AMAZON.StopIntent': function() {
this.emit(':tell', this.t('STOP'));
}
};
「theplace」の初期設定で 'this'の値が悪いことがほとんど問題ではないため、未定義の動作です。 'getPinCodeIntent'ハンドラに値をバインドするコードがありますか?私は事実ではない疑いがあります –
@JonathanBrooks明確にするためにコード全体を貼り付けました。 – powerd
私は 'alexa.registerHandlers(ハンドラ)'が 'this'に値を束縛すると思われるコードであると仮定しています。あなたは 'getPlaceIntent'関数で' JSON.stringify(this) 'をロギングしようとしましたか?それは問題を発見するのを助けることができる –