【发布时间】:2020-04-24 02:50:29
【问题描述】:
大家好,
我目前正在研究 Alexa Skill,但我遇到了一个问题,我需要从另一个人那里调用处理程序。
我阅读了几篇帖子,但我的问题没有明确的答案。我有一个处理程序“AskForEmployeeInformation_Handler”,它处理几个意图,回答关于一个人的几个问题。但是,如果用户只说出姓氏或名字而不是全名,那么 Alexa 会提示是否有人与给定的名字匹配。用户现在应该说出建议的名称之一。在说出这个名称时,会调用另一个处理程序“SetName_Handler”,它将所选名称设置为会话属性。现在我想在返回语句中再次调用“AskForEmployeeInformation_Handler”,因为它包含提示所需信息的整个逻辑。
我看到了一些调用处理程序的解决方案,就像您在以下代码中看到的那样,并且执行了逻辑,但是 Alexa 没有说任何话,也没有向用户提示答案。
您知道我可以做些什么来解决这个问题吗?
感谢您的帮助。
const SetName_Handler = {
canHandle(handlerInput){
const request = handlerInput.requestEnvelope.request;
let sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
return sessionAttributes.event === 'AskForEmployee_Name' || sessionAttributes.event === 'AskForPhoneNumber_Name' || sessionAttributes.event === 'AskForRole_Name';
},
handle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
const responseBuilder = handlerInput.responseBuilder;
let sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
let say = '';
let slotValues = getSlotValues(request.intent.slots);
console.log('***** slotValues: ' + JSON.stringify(slotValues, null, 2));
//save person for the session - maybe for further questions
sessionAttributes['employeeSurname'] = slotValues.employeeSurname.resolved;
sessionAttributes['employeeName'] = slotValues.employeeName.resolved;
handlerInput.attributesManager.setSessionAttributes(sessionAttributes);
return AskForEmployeeInformation_Handler.handle(handlerInput;
}
};
【问题讨论】:
标签: node.js aws-lambda handler alexa-skills-kit alexa-skill