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

如何用JOVO的tell方法响应Alexa/Google且不结束会话?有无类似shouldEndSession的方法?

你说的没错,JOVO里的tell()方法确实会默认结束会话,这就是为啥你每次测试完都得重新打开技能/动作——它对应Alexa的shouldEndSession: true,一响应完会话就直接断开了。下面给你两种解决思路,帮你实现“响应后不结束会话”的需求:

解决方法

1. 用ask()替代tell()(推荐)

JOVO专门设计了ask()方法来处理“响应后保持会话打开”的场景,它会自动适配Alexa和Google平台的会话参数(Alexa的shouldEndSession、Google的expectUserResponse),兼容性拉满。用法很直观:

// 基础写法:直接带响应内容+引导语
return this.$response
  .ask('这是你的问题答案,还有其他问题要问吗?')
  .send();

// 拆分响应内容与提示语的写法(适合多语言或复杂场景)
return this.$response
  .speak('针对你问题的具体回答')
  .reprompt('请问还有其他问题吗?')
  .send();

这里的reprompt()是备用提示——如果用户没及时回应,平台会自动播放这句话,确保会话能持续下去。

2. 手动修改会话状态(特殊场景使用)

如果你确实需要用类似tell()的方式发送响应,但又不想结束会话,可以手动修改对应平台的会话参数:

针对Alexa平台

直接调用Alexa技能的setShouldEndSession(false)方法:

return this.$alexaSkill
  .tell('这是你的问题答案')
  .setShouldEndSession(false)
  .send();

针对Google Assistant平台

调用Google Action的setExpectUserResponse(true)方法:

return this.$googleAction
  .tell('这是你的问题答案')
  .setExpectUserResponse(true)
  .send();

跨平台通用写法

想一次适配两个平台?用JOVO的通用响应对象就行,它会自动把参数转换成对应平台的格式:

return this.$response
  .speak('这是你的问题答案')
  .setShouldEndSession(false)
  .send();

小提醒

  • Alexa平台:如果设置shouldEndSession: false,响应里最好带上引导用户继续交互的提示语,不然可能会被平台判定为无效响应,导致会话意外结束。
  • Google Assistant平台:setExpectUserResponse(true)后,同样需要确保响应内容能引导用户继续提问,避免会话超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:53:00