0

インタラクション モデルに設定されているカスタム スロットを検査または列挙する方法はありますか? たとえば、次のインテントを持つインテント スキーマがあるとします。

{
  "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 つ。これは正しいことであるように思われますか?

4

2 に答える 2

0

いいえ - API にはそれを可能にするものは何もありません。

Alexa が提供する Request Body 構造の全範囲を見ることができます。これは非常にシンプルで、ここから入手できます。

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interface-reference#Request%20Format

リクエスト ボディは、バージョンとセッションの 2 つの兄弟を持つリクエスト ボディ内の構造であるリクエストと混同しないでください。

于 2016-06-02T00:45:06.987 に答える
0

いいえ、API ではこれを行うことはできません。

ただし、インタラクション モデルは開発と密接に結びついているため、ソース コントロール システムでソース コードと一緒にモデルをチェックインすることをお勧めします。それを行う場合は、ソースと一緒に置くこともできます。言語にもよりますが、これはおそらく実行時に読めることも意味します。

この手法を使用すると、実行時に対話モデルにアクセスできます。API を介して自動的に行うのではなく、ベスト プラクティスに従って行います。

TsaTsaTzu's examplesで、Java でのこの動作のいくつかの例を見ることができます。

于 2016-06-02T12:06:22.433 に答える