如何解决Alexa Skill不适用于出站API调用
如果我有以下意图,那么一切都很好...
handle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
const responseBuilder = handlerInput.responseBuilder;
let sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
let say = 'Hello. ';
let slotStatus = '';
let resolvedSlot;
let slotValues = getSlotValues(request.intent.slots);
slotStatus = "I heard you say " + slotValues.query.heardAs;
say += slotStatus;
return responseBuilder
.speak(say)
.reprompt('try again,' + say)
.getResponse();
},
当我尝试打出电话时,出现错误,我不知道为什么。
async handle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
const responseBuilder = handlerInput.responseBuilder;
let sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
let say = 'Hello. ';
let slotStatus = '';
let resolvedSlot;
let slotValues = getSlotValues(request.intent.slots);
slotStatus = "I heard " + slotValues.query.heardAs;
const response = await httpGet(slotValues.query.heardAs);
slotStatus = "I heard " + response.heard + " from the server.";
say += slotStatus;
return handlerInput.responseBuilder
.speak(say)
.reprompt("try again. " + say)
.getResponse();
},
httpGet方法在下面...
function httpGet(query) {
return new Promise(((resolve,reject) => {
var options = {
host: 'www.hostname.app',port: 443,path: '/api/alexa.php?'+query,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();
}));
}
解决方法
您应该挖掘AWS Lambda的CloudWatch日志中的错误消息。
此外,您可以使用node.js,ASK CLI和VS Code插件在本地运行和调试技能。几天前,我为Alexa社区印度小组做了一个演讲,并逐步介绍了如何设置和使用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。