2017-10-15 2 views
0

事前にお問い合わせいただきありがとうございます。私はこのインテントのインテントとカスタムスロットの値を持っています。スロットの値は "LIST_OF_EVENTS"リストの値である "event"と呼ばれます。intentrequestからIDを取得できません。

このリストでは、スロットには多くのオプションがありますが、もっと重要なことに、各スロット値には多くの同義語があります。それらをすべて同じように扱うために、私は各スロットに割り当てたIDを使用したいと思います。私は0-11と設定しました。このIDを取得することは、このIDに基づいてJSONファイルのどの部分をユーザーに返すのかを定義するため重要です。

ここでの問題は、私のコードでこのIDを取得する方法を見つけることができない、私は多くの研究を行い、多くのドキュメントを見てまだIDを取得することができないことです。

私が試してみました:

var id = alexa.event.request.intent.slots.event.resolutions.resolutionsPerAuthority[].values[].value.id; 

だけでなく、他の多くのものを。

私はインテントのリクエストを見て、テストプラットフォーム経由で送信します。アマゾンは私のインテントリクエストでこの解決オブジェクトを見つけることができません。このようなものはありません。しかし、ドキュメントでは、複数のページで、このオブジェクトを示して参照します。 Here is the link to the documentation。 Amazonが作成

私の要求は

{ 
    "session": { 
    "new": false, 
    "sessionId": "SessionId.4bce2f23-d11e-4022-b6d1-b91aec14b9d6", 
    "application": { 
     "applicationId": "amzn1.ask.skill.e0cc33bb-4ad7-4bbb-91e8-a0eab852a49c" 
    }, 
    "attributes": {}, 
    "user": { 
     "userId": "amzn1.ask.account.AF53KNANELPR77LPYI7GAED6MM2EIVTFZZRJQ3FGLKW7HMRWLEEET6T7MEY5FLD67JO4OZNTTRFB2XDH6J2X2GGHZKOM4UDW6WKP6GLCYW3OI7WCHW2HTEYNQQWUF6TARFBX64WUIAAUL6RFCZ663P4RKGJ43PEXQ43G4BSA3KWSKKRUPCXJWFLWUSDAHD6LMAQKXCPREDMKHQI" 
} 
    }, 
    "request": { 
"type": "IntentRequest", 
"requestId": "EdwRequestId.0171880d-8006-47d9-b17b-52e1f431f5f4", 
"intent": { 
    "name": "WhenIsBLANK", 
    "slots": { 
    "event": { 
     "name": "event", 
     "value": "dream to fly" 
    } 
    } 
}, 
"locale": "en-US", 
"timestamp": "2017-10-14T20:24:43Z" 
    }, 
    "context": { 
"AudioPlayer": { 
    "playerActivity": "IDLE" 
}, 
"System": { 
    "application": { 
    "applicationId": "amzn1.ask.skill.e0cc33bb-4ad7-4bbb-91e8-a0eab852a49c" 
    }, 
    "user": { 
    "userId": "amzn1.ask.account.AF53KNANELPR77LPYI7GAED6MM2EIVTFZZRJQ3FGLKW7HMRWLEEET6T7MEY5FLD67JO4OZNTTRFB2XDH6J2X2GGHZKOM4UDW6WKP6GLCYW3OI7WCHW2HTEYNQQWUF6TARFBX64WUIAAUL6RFCZ663P4RKGJ43PEXQ43G4BSA3KWSKKRUPCXJWFLWUSDAHD6LMAQKXCPREDMKHQI" 
    }, 
    "device": { 
    "supportedInterfaces": {} 
    } 
} 
    }, 
    "version": "1.0" 
} 

いる誰もが、あなたに感謝し、この問題を解決する方法上の任意のアイデアを持っている場合は私に知らせてください!

答えて

0

あなたのラムダに送信されたスロットデータは、あなたが掲示したリクエストに示されているように、例えば「飛ぶ夢」のような文字列になります。

この文字列をLIST_OF_EVENTSの値と比較して、送信された文字列を判断するのはラムダコードまでです。これは、通常、期待値を含む文字列の配列を反復処理することによって行われますが、可能な値ごとにcaseを含むswitch文を使用して行うこともできます。スロット値に何が入るかは、期待したものとは異なることがあるので、比類のない値を扱うことを忘れないでください。

これで、そのインデックスを使用して、応答がどのようになるかを選択できます。例えば

var slot = request.intent.slot.event.value; 
var index; 
for(index=0; index<NUM_SLOT_VALUES; index++) { 
    if(knownValues[i] == slot) { 
     break; 
    } 
} 
// index is now the index of the matching value, or NUM_SLOT_VALUES if not found 

あなたは、このようなこのlinkとしてJavaScriptでループを、実行に関するオンライン情報の多くを見つけることができます。

+0

ご協力いただきありがとうございます。そのリンクを必ず確認してください。助けてくれてありがとう! –

関連する問題