Alexa API调用未返回任何内容



大家好,晚上好!

我已经在我的Alexa应用程序中设置了一个API调用,我正在尝试基本了解为什么它不能使用我的URL/响应。

我知道API调用是有效的,因为当我将"host"替换为"API.icndb.com",将"path"替换为"/cakokes/random"时,它是有效的(当我使用response.value.squote访问响应数据时(。

我的API调用无法使用我提供的URL,或者这可能是我试图访问数据的方式。API在数组中提供数据,数组中嵌套有与上述URL不同的对象。

看看我指的是什么,这里是我用"api.icndb.com"api构建应用程序的示例Alexa技能的URL。

这是我的代码:

/* 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();

此代码将与httpGet函数配合使用。

const GetQuoteHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'GetQuote';
},
async handle(handlerInput) {
const {responseBuilder } = handlerInput;
const response = await httpGet();
console.log(response);
const items = response[0]
const item = items.quote
var speechText = "Your quote is" + JSON.stringify(item)
return responseBuilder
.speak(speechText)
.reprompt("don't even know that one")
.getResponse();
}
}

相关内容

最新更新