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

如何实现Alexa果汁推荐Skill的循环交互功能?

搞定Alexa果汁推荐Skill的循环交互问题

嘿,我明白你现在的困扰——Skill只能跑一次就结束,没法持续和用户互动对吧?其实用Alexa SDK实现循环逻辑很简单,核心就是保持会话不关闭,同时正确处理后续的用户输入。我给你一步步拆解解决方案:

核心原理

Alexa的会话默认在返回:tell响应时会结束,要实现循环,你需要改用:ask响应,它会让会话保持打开状态,等待用户的下一次指令。同时配合reprompt提示,确保用户知道接下来该做什么。

具体代码修改示例

假设你的现有代码里已经有了状态和果汁的映射数组(比如juiceRecommendations),那你只需要调整Handler的响应方式,再补充必要的退出处理:

var Alexa = require('alexa-sdk');
const APP_ID = undefined;

// 状态与果汁的映射数组/对象
const juiceMap = {
  "疲惫": "鲜榨橙汁,补充维生素C快速提神",
  "口渴": "冰镇西瓜汁,清爽解渴",
  "消化不良": "山楂苹果汁,帮助促进消化",
  "运动后": "香蕉牛奶汁,补充电解质"
};

const handlers = {
  // 启动技能时,打开会话并引导用户输入
  'LaunchRequest': function() {
    this.emit(':ask', '欢迎来到果汁推荐小助手!请告诉我你的状态,比如疲惫或者口渴~', '请告诉我你的状态哦,我会给你合适的果汁推荐!');
  },

  // 处理果汁推荐的核心逻辑
  'GetJuiceRecommendationIntent': function() {
    // 获取用户输入的状态
    const userState = this.event.request.intent.slots.State.value;
    
    // 匹配对应的果汁推荐
    const recommendedJuice = juiceMap[userState] || '抱歉,我暂时不知道对应这个状态的果汁推荐呢';
    
    // 用:ask代替:tell,保持会话打开,同时添加后续提示
    this.emit(':ask', 
      `根据你的状态,推荐你喝${recommendedJuice}!你还可以告诉我其他状态,我继续给你推荐哦~`, 
      '请告诉我你的状态,或者说退出就能结束技能啦!'
    );
  },

  // 处理用户的退出/停止指令
  'CancelAndStopIntent': function() {
    this.emit(':tell', '再见啦,祝你喝得开心!');
  },

  // 会话自然结束时的处理
  'SessionEndedRequest': function() {
    console.log('会话已结束');
  }
};

exports.handler = function(event, context, callback) {
  const alexa = Alexa.handler(event, context, callback);
  alexa.APP_ID = APP_ID;
  alexa.registerHandlers(handlers);
  alexa.execute();
};

关键注意点

  • 用:ask替代:tell::tell会直接终止会话,而:ask会让Alexa保持监听状态,等待用户的下一次输入
  • 添加reprompt提示:当用户10秒内没响应时,Alexa会自动说出reprompt里的内容,引导用户继续交互
  • 必须处理退出意图:一定要实现CancelAndStopIntent,这样用户说“退出”“停止”时,Skill能优雅结束会话,避免会话异常挂起
  • 会话属性(可选):如果需要跟踪用户的历史推荐记录,可以用this.attributes存储会话数据,比如this.attributes.lastRecommendation = recommendedJuice,后续可以基于这个做更个性化的交互

这样修改后,你的Skill就能在给出推荐后自动发起提问,等待用户的下一个状态输入,实现循环交互啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:48:35