我正在创建一种技能,该技能允许Alexa首先咨询所有连接的设备(例如空调设备),并从服务中返回列表(这些名称可由用户自定义)。我需要这些设备名称将它们存储为自定义插槽的值,以便能够向以下类型的Alexa发出订单:Alexa,请告诉我{deviceName}的温度。
有什么想法或建议吗?
答案 0 :(得分:1)
使用alexa对话框,当dialogState!='COMPLETED'时,检查{deviceName}插槽的值,如果该值不在列表中,则以正确的响应再次引发该插槽。做这样的事情:
if (dialogState === 'STARTED') {
return handlerInput.responseBuilder
.addDelegateDirective()
.getResponse();
}
else if (dialogState !== 'COMPLETED') {
if (intent.slots.deviceName.value) {
if ( //check if the deviceName is not in the list ) {
return handlerInput.responseBuilder
.speak('Sorry, this device is not added in your list, say again...')
.addElicitSlotDirective(intent.slots.deviceName.name)
.getResponse();
}
else {
return handlerInput.responseBuilder
.addDelegateDirective()
.getResponse()
}
}
else {
//dialogState is 'COMPLETED'
//here you have the correct device name
}
答案 1 :(得分:1)
无法在Alexa Skills中进行动态排位。
只有在建立交互模型和成功的技能认证后,才能更新在线技能中的插槽值。
Dialogflow API允许更新slot values dynamically
希望亚马逊会尽快添加类似的内容。
答案 2 :(得分:0)
现在Alexa可以使用动态实体了。