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社区印度小组做了一个演讲,并逐步介绍了如何设置和使用它。

https://www.youtube.com/watch?v=xODwbsvisr4