我有一种Alexa技能可以调用外部Web服务。我的网络服务当前向我返回变量数组或字符串(句子),我将整个数组串联在字符串中,并提示它作为响应。
现在,我想添加下一个功能,跳过上一个,最后一个,第一个。
例如如果我有5个数组作为响应。现在,在Web服务的响应上,我将所有字符串串联起来时通常会说话,但是如果Alexa说出1行而用户说跳过,则Alexa会跳过第一行并从第二行开始。如果用户说的是最后一句话,而不是Alexa直接说出最后一行。
是否可以实现此功能?
我正在使用node.js
和对话来进行用户输入以调用Web服务。
答案 0 :(得分:0)
是的,AMAZON.NextIntent
和AMAZON.PreviousIntent
可以做到这一点。
下一步,请使用AMAZON.NextIntent
当后端收到初始请求时,查询外部服务并保留句子数组作为响应sessionAttributes
。您还可以设置STATE属性,以便在给出句子之前可以在AMAZON.NextIntent
或其他分页处理程序中检查此状态。
"sessionAttributes": {
"sentences": ["This is the first sentence","This is the second sentence", .. ],
"index": 1,
"STATE": "READING_SENTENCES"
}
当用户说“ next”时,检查状态是否为READING_SENTENCES
并根据索引给出列表中的下一项。然后在sessionAttributes
中增加index
类似地,对于 AMAZON.PreviousIntent ,相应地减小index
。
您可以为Last
和Skip
创建两个自定义意图(skip
具有与AMAZON.NextIntent
相同的功能,因此可以在{{1 }})
当用户说“ Last”时,说出最后一句话。
有关sessionAttributes和响应参数here的更多信息