我正在尝试 Build 一个连接到Jira的Alexa技能 . 我开始时的一段时间Alexa Skills Kit中的交互模型工作正常,并在一个语句中获取多个槽值,即使没有被要求 . 例如,“在BLAH项目中打开用户故事并将其分配给Blah”可以正常工作并完美地获取插槽值 . 现在我已经开始在ASK中使用Dialog.Delegate指令,以允许交互模型找出它还没有的内容并继续提问,直到填满所有必需的插槽 . 在我实现这一点之后的一段时间,交互模型停止识别仅用于填充一个槽值的话语中的其他槽值 . 如果我用上面的请求打开技能,那么它会询问我的票类型是什么,就像我没有给出的那样 . 我已经在交互模型中为我的意图定义了样本话语,并且都以“打开”开头,所以当它在输入中给出时它仍然要求我提供票据类型的事实对我来说没有意义 .

我怀疑它与我返回Dialog.Delegate指令的方式有关 . 在我下面链接的代码中,我正在调用一个函数AddDialogDirective func(dialogType string,intent * Intent),它位于我使用的开源框架中,名为alexa-skills-kit-golang . 我可以确认Dialog.Delegate指令实际上是正确调用的,因为在我的lambda函数的响应中,我看到了Dialog.Delegate指令集 .

{
    "body": {
        "version": "1.0",
        "response": {
            "directives": [
                {
                    "type": "Dialog.Delegate"
                }
            ],
            "shouldEndSession": false
        }
    }
}

我已经尝试将AddDialogDirective函数修改为func(dialogType string,slotToIllicit * string,slotToConfirm * string,intent * Intent),认为框架以某种方式在SlotToIllicit和SlotToConfirm JSON字段中返回空字符串而不是返回那些田野,但没有运气 . 我在想这里返回空字符串可能会使交互模型一次只能一个插槽而忽略对话框模型 . 你认为这是问题还是完全不同?