如何为自定义 Alexa 技能结束 session?
How to end session for custom Alexa skill?
我正在为 Alexa 创建自定义技能。我想在 AMAZON.StopIntent
上关闭 session。我如何使用以下代码实现此目的?
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 中设置为真时,Alexa 结束会话 JSON。
...
"shouldEndSession": true
...
在您的响应生成器中,您可以尝试使用辅助函数 withShouldEndSession(true)
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
响应生成器辅助函数已列出here
在您的代码片段中,您只需删除重新提示行即可结束会话:
return handlerInput.responseBuilder
.speak('bye!')
.getResponse();
所以下面建议的解决方案有效,但它是多余的:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
上面的代码经常用在相反的场景中,当你想在没有重新提示的情况下保持会话打开时:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(false)
.getResponse();
我正在为 Alexa 创建自定义技能。我想在 AMAZON.StopIntent
上关闭 session。我如何使用以下代码实现此目的?
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 中设置为真时,Alexa 结束会话 JSON。
...
"shouldEndSession": true
...
在您的响应生成器中,您可以尝试使用辅助函数 withShouldEndSession(true)
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
响应生成器辅助函数已列出here
在您的代码片段中,您只需删除重新提示行即可结束会话:
return handlerInput.responseBuilder
.speak('bye!')
.getResponse();
所以下面建议的解决方案有效,但它是多余的:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
上面的代码经常用在相反的场景中,当你想在没有重新提示的情况下保持会话打开时:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(false)
.getResponse();