为Alexa Skill创建自定义和动态插槽值

时间:2018-10-17 19:29:09

标签: amazon-web-services iot alexa

我正在创建一种技能,该技能允许Alexa首先咨询所有连接的设备(例如空调设备),并从服务中返回列表(这些名称可由用户自定义)。我需要这些设备名称将它们存储为自定义插槽的值,以便能够向以下类型的Alexa发出订单:Alexa,请告诉我{deviceName}的温度。

有什么想法或建议吗?

3 个答案:

答案 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可以使用动态实体了。