Ошибка типа метода Nodejs http.get (url [, options] [, callback]) при включении параметров - PullRequest
0 голосов
/ 11 ноября 2019

Я занимаюсь разработкой простого чат-бота на Amazon Alexa. Идея состоит в том, чтобы узнать, есть ли пункт в меню в определенном магазине.

function httpGet() {
  return new Promise(((resolve, reject) => {

      const options = {
          headers: {
              'auth_key':'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx'
          }          
      };


    http.get("http://example.com/lookup/api/getitemlist?item=cake&storeid=50", options, (resp) => {       
        let data = '';      
        resp.on('data', (chunk) => {
            data += chunk;
        });

        resp.on('end', () => {            
            resolve(JSON.parse(data));
        });

        }).on('error', (err) => {
            reject(err);
        });

  }));
}

Я слежу за документацией по nodejs docs

API хорошо работает впочтальон, где auth_key передается в заголовке.

Вот ошибка от amazon cloudwatch log

API отвечает сообщением об ошибке, когда auth_key отсутствует. Я что-то пропустил? Из прочтения документации. Я думал, что это будет работать.

GetItemIntentHandler. Я должен написать больше, чтобы справиться с ответом. Пока я только регистрирую это. Здесь я вызываю функцию httpGet ();

const GetItemIntentHandler = {
    canHandle(handlerInput) {
        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
            && Alexa.getIntentName(handlerInput.requestEnvelope) === 'GetItemIntent';
    },

    async handle(handlerInput){
      const item = handlerInput.requestEnvelope.request.intent.slots.Item.value;    

      const response = await httpGet();
      console.log("response reached us");
      console.log(response);
      return handlerInput.responseBuilder

            .speak(` ${item}`)
            .reprompt("What would you like?")
            .getResponse();

   }

}; 

1 Ответ

0 голосов
/ 11 ноября 2019

Я использовал метод http.get (options [, callback]), чтобы обойти. Обновленная функция httpGet, которую я сейчас использую.

function httpGet() {
  return new Promise(((resolve, reject) => {

      var options = {
          host: 'example.com',
          path: '/lookup/api/getitemlist?item=cake&storeid=50',
          port: null,
          headers: {
              'auth_key':'xxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx'
          }

      };



    http.get(options, (resp) => {

         let data = '';

        resp.on('data', (chunk) => {
            data += chunk;
        });

        resp.on('end', () => {

            resolve(JSON.parse(data));
        });

        }).on('error', (err) => {
            reject(err);
        });

  }));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...