#node.js #mongodb #alexa-skill
Вопрос:
Я создаю навык Alexa, и для этого требуется сохранить идентификатор пользователя и идентификатор сеанса в базе данных. Для базы данных я использую MongoDB. До сих пор я использовал handlerInput.requestEnvelope.session.SessionID для получения идентификатора сеанса, а для получения идентификатора пользователя я применяю handlerInput.requestEnvelope.session.user.userId. Однако я получаю неопределенные значения как для сеанса, так и для идентификатора пользователя. Вот код:
const LaunchRequestHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
},
async handle(handlerInput) {
const speakOutput = 'Hi, I am Nao. I am here to give you counseling on your anxiety issues. Can I have your name, please? Note: We are not professional therapists or counselors. ';
//These two lines of code is for testing purpose//
const useri=handlerInput.requestEnvelope.session.user.userID;
const g=handlerInput.requestEnvelope.session.sessionID;
const curr_session=new post.session({
alexa_sessionid:handlerInput.requestEnvelope.session.sessionID
});
let user=await post.findOne({userID:handlerInput.requestEnvelope.session.user.userID});
if(!user){
user=new post({
userID:handlerInput.requestEnvelope.session.user.userID
});
}
user.session_list.push(curr_session);
user.save();
return handlerInput.responseBuilder
.speak(speakOutput g)
.reprompt(speakOutput)
.getResponse();
}
};
Как я могу получить сеанс Alexa и идентификатор пользователя с помощью handlerInput?
Ответ №1:
Возможно, будет нелегко определить, если вы сравните свой код с фактическим запросом JSON для вашего навыка, но ошибка заключается в том, что вы пишете «ID» с заглавной буквы в названии элементов («Идентификатор пользователя», «Идентификатор сеанса»). В запросе используется регистр верблюда: «Идентификатор пользователя» и «идентификатор сеанса».
Если вы соответствующим образом замените вхождения в своем коде, вы должны получить значения.