Навык Alexa не работает с исходящим вызовом API

#node.js #alexa #alexa-skills-kit #alexa-skill

#node.js #alexa #alexa-skills-kit #alexa-навык

Вопрос:

Если у меня есть следующий код в моем намерении, все отлично…

 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();
  }));
}
  

Комментарии:

1. если вы запустите код HttpGet как отдельную функцию вне вашей функции alexa, что он вернет?

Ответ №1:

Вам следует просмотреть журналы CloudWatch для вашего AWS Lambda на предмет сообщений об ошибках.

Кроме того, вы можете запускать и отлаживать свой навык локально с помощью node.js , CLI ASK и плагин для VS Code. Несколько дней назад я провел презентацию для группы Alexa Community India и рассказал, как это настроить и использовать.

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

Комментарии:

1. На самом деле это не ответ, но вопрос пока не дает достаточной информации