Привет и добрый вечер всем!
Я настроил вызов API в своем приложении Alexa, и я пытаюсь получить общее представление о том, почему он не работает с URL / ответом, который у меня есть.
Я знаю, что вызов API работает, потому что когда я заменяю 'host' на 'api.icndb.com' и 'path' на '/ jokes / random', он работает (когда я получаю доступ к данным ответа с использованием ответа.value.quote).
Мой вызов API не будет работать с предоставленным мною URL, или, возможно, я пытаюсь получить доступ к данным.API предоставляет данные в массиве с вложенными в него объектами, который отличается от вышеупомянутого URL.
Чтобы увидеть, что я имею в виду, вот URL для примера навыка Alexa, который я создал для своего приложения.с API api.icndb.com, на который я ссылаюсь.
Вот мой код:
/* eslint-disable func-names */
/* eslint-disable no-console */
const Alexa = require('ask-sdk');
var https = require('https')
const LaunchRequestHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'LaunchRequest'
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak('Welcome to Simpson Speak')
.getResponse();
}
};
const GetQuoteHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest' && request.intent.name === 'GetQuote';
},
async handle(handlerInput) {
const response = await httpGet();
console.log(response);
return handlerInput.responseBuilder
.speak(response[0].author)
.getResponse()
}
};
function httpGet(){
return new Promise(((resolve, reject) => {
var options = {
host: 'thesimpsonsquoteapi.glitch.me',
port: 443,
path: '/quotes',
method: 'GET',
};
const request = https.request(options, (response) => {
response.setEncoding('utf8');
let returnData = '';
response.on('data', (chunk)=>{
returnData += chunk;
});
response.on('end',()=>{
resolve(JSON.parse(returnData));
});
response.on('error', (error)=>{
reject(error);
});
});
request.end();
}));
};
const skillBuilder = Alexa.SkillBuilders.standard();
exports.handler = skillBuilder
.addRequestHandlers(
LaunchRequestHandler,
GetQuoteHandler
)
.lambda();