Node.js : Как мне получить идентификатор сеанса Alexa и идентификатор пользователя?

#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» с заглавной буквы в названии элементов («Идентификатор пользователя», «Идентификатор сеанса»). В запросе используется регистр верблюда: «Идентификатор пользователя» и «идентификатор сеанса».

Если вы соответствующим образом замените вхождения в своем коде, вы должны получить значения.