如何结束自定义亚历克萨技能的会话?



我正在为Alexa创建自定义技能。我想在AMAZON.StopIntent上关闭会话。如何使用以下代码实现此目的?

const ExitHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& (request.intent.name === 'AMAZON.StopIntent');
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak('bye!')
.reprompt('bye!')
.getResponse();
},
};

shouldEndSession标志在响应 JSON 中设置为 true 时,Alexa 会结束会话。

... 
"shouldEndSession": true
...

在您的响应生成器中,您可以尝试使用ShouldEndSession(true(的帮助程序函数吗?

return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();

此处列出了响应生成器帮助程序函数

在您的代码片段中,您只需删除重新提示符行即可结束会话:

return handlerInput.responseBuilder
.speak('bye!')
.getResponse();

因此,下面建议的解决方案有效,但这是多余的:

return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();

上面的代码通常用于相反的情况,当您想要保持会话打开而不重新提示时:

return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(false)
.getResponse();

最新更新