【问题标题】:How do I get the canonical slot value out of an Alexa request如何从 Alexa 请求中获取规范槽值
【发布时间】:2020-01-04 17:36:13
【问题描述】:

我正在尝试使用自定义插槽编写 Alexa 技能,但 Alexa 忽略了我的同义词。显然Alexa.getSlotValue(requestEnvelope, 'intentSlotName'); 将检索实际口语,而不是规范值。我正在与规范值进行比较以确定程序行为,所以我真的希望我的插槽在我遇到同义词时返回规范值,而不是同义词本身。

我该怎么做?我在 Alexa 文档中找到答案时遇到了一些麻烦,而且我看到的答案对于实际上应该是默认的行为来说似乎真的很复杂(当我尝试它们时它们不起作用)

有没有类似的

Alexa.getCanonicalSlotValue(requestEnvelope, 'intentSlotName');

【问题讨论】:

    标签: node.js alexa


    【解决方案1】:

    目前 ASK SDK 中没有帮助程序来访问规范值,但您可以创建一个简单的函数来获取它。您首先要使用 getSlot 帮助器,它返回一个 Slot 对象,其中包含定义为 here 的已解析实体。

    const getCanonicalSlot = (slot) => {
        if (slot.resolutions && slot.resolutions.resolutionsPerAuthority.length) {
            for (let resolution of slot.resolutions.resolutionsPerAuthority) {
                if (resolution.status && resolution.status.code === 'ER_SUCCESS_MATCH') {
                    return resolution.values[0].value.name;
                }
            }
        }
    }
    

    然后在你的处理程序中调用它:

    let mySlot = Alexa.getSlot(requestEnvelope, 'mySlot');
    let mySlotCanonical = getCanonicalSlot(mySlot);
    

    我建议在 Alexa 开发人员控制台的“测试”选项卡中进行试验(或简单地完整记录请求),以更好地了解上述代码为何有效。例如,基本插槽实现的 JSON 将按如下方式返回:

    "slots": {
        "mySlot": {
            "name": "mySlot",
            "value": "bar",
            "resolutions": {
                "resolutionsPerAuthority": [{
                    "authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.****.mySlotType",
                    "status": {
                        "code": "ER_SUCCESS_MATCH"
                    },
                    "values": [{
                        "value": {
                            "name": "foo",
                            "id": "acbd18db4cc2f85cedef654fccc4a4d8"
                        }
                    }]
                }]
            },
            "confirmationStatus": "NONE",
            "source": "USER"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2019-06-06
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      相关资源
      最近更新 更多