インタラクション モデルに設定されているカスタム スロット値を検査または列挙する方法はありますか? たとえば、次のインテントを持つインテント スキーマがあるとします。
{
"intent": "MySuperCoolIntent",
"slots":
[
{
"name": "ShapesNSuch",
"type": "LIST_OF_SHAPES"
}
]
}
さらに、次の値を持つように LIST_OF_SHAPES カスタム スロットを定義しました。
SQUARE
TRIANGLE
CIRCLE
ICOSADECAHECKASPECKAHEDRON
ROUND
HUSKY
質問: Speechlet または RequestStreamHandler から呼び出して、カスタム スロット値の列挙を取得できるメソッドはありますか??
ここにあるAlexa Skills KitのSDK Javadocsを調べました
そして、私は何も見つけていません。
私は、インテントで送信されたスロットの値を取得できることを知っています:
String slotValue = incomingIntentRequest.getIntent().getSlot("LIST_OF_SHAPES").getValue();
すべての着信スロット (およびその値) を列挙することもできます。
Map<String, Slot> slotMap = IncomingIntentRequest.getIntent().getSlots();
for(Map.Entry<String, Slot> entry : slotMap.entrySet())
{
String key = entry.getKey();
Slot slot = (Slot)entry.getValue();
String slotName = slot.getName();
String slotValue = slot.getValue();
//do something nifty with the current slot info....
}
私が本当に欲しいのは次のようなものです:
String myAppId = "amzn1.echo-sdk-ams.app.<TheRestOfMyID>";
List<String> posibleSlotValues = SomeMagicAlexaAPI.getAllSlotValues(myAppId, "LIST_OF_SHAPES");
この情報があれば、2 つの個別の「リスト」または「列挙」を維持する必要はありません。インタラクション モデル内に 1 つ、リクエスト ハンドラー内にもう 1 つ。これは正しいことであるように思われますか?