以下是代码示例:
const Alexa = require('ask-sdk-core');
const request = require('request');
const LaunchRequestHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
},
async handle(handlerInput) {
const accessToken = getAccessToken(handlerInput);
const options = {
url: 'https://api.example.com/data',
headers: {
'Authorization': `Bearer ${accessToken}`
}
};
return new Promise((resolve, reject) => {
request.get(options, (error, response, body) => {
if (error) {
return reject(error);
}
const data = JSON.parse(body);
const speechText = `Hello, your data is ${data.value}`;
return resolve(handlerInput.responseBuilder
.speak(speechText)
.getResponse());
});
});
},
};
function getAccessToken(handlerInput) {
const session = handlerInput.requestEnvelope.session;
const userAccessToken = session.user.accessToken;
// check if the token is expired
if (isTokenExpired()) {
const refreshToken = getRefreshToken(handlerInput);
const newAccessToken = refreshAccessToken(refreshToken);
return newAccessToken;
}
return userAccessToken;
}
function isTokenExpired() {
// check if access token is expired
}
function getRefreshToken(handlerInput) {
// get the refresh token from a database or other secure location
}
function refreshAccessToken(refreshToken) {
// send a request to the authorization server to get a new token
return newAccessToken;
}
const skillBuilder = Alexa.SkillBuilders.custom();
exports.handler = skillBuilder
.addRequestHandlers(
LaunchRequestHandler
)
.lambda();