我有一个 lambda 函数,它成功执行了一个名为GetEvent
返回特定字符串的意图。我为此意图创建了一个语句用于测试目的(一个简单且不需要任何可选插槽来调用技能),但是当使用服务模拟器测试 lambda 函数时,GetEvent
我' m 遇到了一个 lambda 响应,上面写着"The response is invalid"
. 这是交互模型的样子:
#Intent Schema
{
"intents": [
{
"intent": "GetVessel",
"slots": [
{
"name": "boat",
"type": "LIST_OF_VESSELS"
},
{
"name": "location",
"type": "LIST_OF_LOCATIONS"
},
{
"name": "date",
"type": "AMAZON.DATE"
},
{
"name": "event",
"type": "LIST_OF_EVENTS"
}
]
},
{
"intent": "GetLocation",
"slots": [
{
"name": "event",
"type": "LIST_OF_EVENTS"
},
{
"name": "date",
"type": "AMAZON.DATE"
},
{
"name": "boat",
"type": "LIST_OF_VESSELS"
},
{
"name": "location",
"type": "LIST_OF_LOCATIONS"
}
]
},
{
"intent": "GetEvent",
"slots": [
{
"name": "event",
"type": "LIST_OF_EVENTS"
},
{
"name": "location",
"type": "LIST_OF_LOCATIONS"
}
]
}
]
}
使用适当的自定义技能类型语法,并且,
#First test Utterances
GetVessel what are the properties of {boat}
GetLocation where did {event} occur
GetEvent get me my query
当给 Alexa 话语时get me my query
,lambda 响应应该像在执行中一样输出字符串。我不确定为什么不是这样。这是我第一个使用 Alexa Skills Kit 的项目,所以我很新。lambda函数、意图模式和话语是如何拼凑在一起的,有什么我不理解的吗?
更新:感谢 AWSSupport 的帮助,我已将问题缩小到 json 请求中新会话标记为true
. 为了使话语起作用,必须将其设置为false
(这在手动输入 json 请求时起作用,在 lambda 执行期间也是如此)。为什么会这样?Alexa 是否真的关心它在调用期间是否是新会话?几天前我也在亚马逊开发者论坛上交叉发布了这个,但还没有得到任何人的回复。