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

Alexa技能开发:如何通过语音选择List Template中的项目?

解决Echo Spot技能返回列表后Alexa停止监听的问题

我之前在开发带屏幕的Alexa技能时也踩过类似的坑,结合你的描述,咱们来拆解问题并一步步解决:

核心逻辑误区:会话状态设置搞反了

你提到“技能返回列表后,即使将shouldEndSession设置为true,Alexa也不再监听”——这里其实是理解偏差:当shouldEndSession=true时,Alexa会直接结束会话,自然不会再监听任何语音或屏幕输入。如果你希望用户能点击屏幕选择项目(触发ElementSelected意图),必须把shouldEndSession设为false,同时搭配reprompt提示语,让Alexa保持会话打开状态,等待用户操作。

举个正确的响应示例(JSON结构):

{
  "version": "1.0",
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": "请从屏幕上选择一个项目,或者告诉我你的选择"
    },
    "reprompt": {
      "outputSpeech": {
        "type": "PlainText",
        "text": "你可以点击屏幕上的选项,或者说出项目名称"
      }
    },
    "shouldEndSession": false,
    "directives": [
      {
        "type": "Display.RenderTemplate",
        "template": {
          "type": "ListTemplate1",
          "title": "可选项目列表",
          "listItems": [
            {
              "token": "item1",
              "textContent": {
                "primaryText": {
                  "type": "PlainText",
                  "text": "项目一"
                }
              }
            },
            {
              "token": "item2",
              "textContent": {
                "primaryText": {
                  "type": "PlainText",
                  "text": "项目二"
                }
              }
            }
          ]
        }
      }
    ]
  }
}

额外需要排查的细节

  • ElementSelected意图的参数匹配:确保你列表项的token值和{choice}槽位的候选值对应,这样Alexa才能把屏幕点击的操作正确映射到意图参数上。比如列表项token是item1,那{choice}槽位要包含item1或者对应的项目名称作为可选值。
  • 意图处理程序的逻辑:检查你的ElementSelected意图处理代码,确保处理完成后返回的响应符合需求——如果用户选择后还需要继续交互,就保持shouldEndSession=false;如果流程结束,再设为true。
  • 屏幕模板的正确性:Echo Spot对Display Directive的模板有特定要求,比如ListTemplate1的结构是否完整,每个列表项是否设置了可点击的token,避免因为模板错误导致点击事件无法触发。

测试小技巧

可以在Alexa开发者控制台的「测试」页面查看交互日志,检查每次技能返回的响应结构是否正确,有没有报错信息——很多时候问题都能在日志里找到直接线索。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:03:32