You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alexa Skill自定义槽位值是否必填?能否通过API直接检索用户输入?

关于Alexa自定义槽位的两个问题解答

嘿,我来给你拆解这两个问题:

1. LIST_OF_ITEMS自定义槽位是否为必填项?

这个完全由你在技能的交互模型里决定:

  • 如果你在对应的Intent配置中,把这个槽位标记为「必填」,Alexa会自动帮你追问用户,直到用户提供了这个槽位的内容(或者用户明确拒绝);
  • 如果没设为必填,哪怕用户没说出预设的槽位值,技能也能继续执行,但你需要在代码里处理槽位为空的情况,避免报错。

2. 能否直接获取用户输入内容,通过自身Web应用API检索?

当然可以!而且有两种常用方式,看你的需求选:

方式一:用Alexa匹配后的预设槽位值(精准匹配)

就是你现在代码里用的resolutions,这是Alexa把用户输入和你预设的槽位值做匹配后返回的结果,准确性高,但只能匹配你预先定义的那些Item。不过要注意加个判断,避免用户输入不在预设值里时代码报错:

let matchedItem = null;
// 先检查resolutions是否有有效匹配结果
if (slots.items.resolutions && 
    slots.items.resolutions.resolutionsPerAuthority[0].values.length > 0) {
  matchedItem = slots.items.resolutions.resolutionsPerAuthority[0].values[0].value;
  // 调用你的API,用匹配到的预设值查询
} else {
  // 处理没有匹配到预设值的情况,比如提示用户换个说法,或者用原始输入去查
}

方式二:直接获取用户原始输入(灵活检索)

如果你想支持用户说任何Item名称(哪怕不在预设槽位里),可以直接取槽位的value,这是用户输入的原始文本,然后传给你的Web API去检索数据库:

const userInput = slots.items.value;
// 把原始输入编码后传给你的API,建议做模糊匹配
fetch(`https://your-web-app-api.com/items/search?name=${encodeURIComponent(userInput)}`)
  .then(res => res.json())
  .then(itemData => {
    // 拿到数据后给用户返回结果
    if (itemData) {
      // 比如:`Here's what I found about ${itemData.name}: ${itemData.description}`
    } else {
      // 提示用户没找到对应Item
    }
  })
  .catch(err => {
    // 处理API调用错误
  });

这种方式更灵活,适合你的数据库里有大量Item,没法全部加到预设槽位的场景,只要你的API支持模糊查询就行。

内容的提问来源于stack exchange,提问作者paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:15:14