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");

有了这些信息,我就不必维护两个单独的“列表”或“枚举”;一个在交互模型中,另一个在我的请求处理程序中。似乎这应该是一件事吧?

4

2 回答 2

0

不,API 不允许您这样做。

但是,由于您的交互模型与您的开发密切相关,因此我建议您将模型与源代码控制系统中的源代码一起签入。如果你打算这样做,你不妨把它和你的来源放在一起。根据您的语言,这也意味着您可能可以在运行时阅读它。

使用这种技术,您可以在运行时访问您的交互模型。不是通过 API 自动完成,而是通过最佳实践来完成。

您可以在TsaTsaTzu 的示例中看到几个针对 Java的示例。

于 2016-06-02T12:06:22.433 回答
0

不 - API 中没有任何内容允许您这样做。

您可以看到 Alexa 为您提供的 Request Body 结构的全部内容。它非常简单,可以在这里找到:

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

请注意,请求正文不要与请求混淆,请求是请求正文中的一个结构,有两个兄弟:版本和会话。

于 2016-06-02T00:45:06.987 回答