首页 > 解决方案 > 如何在 Alexa Skill.launch 之前进行 Http 调用并根据 Node JS 中收到的响应更改 Invocation 语音

问题描述

以下是我的问题:

问题是:

如果我定义一个全局变量,由于异步和语音被更改,它首先被执行,如果我在技能函数中使用 promise 函数,我将无法调用任何东西。

如何解决这个问题。

以下是我的代码(请注意,这不是全部代码)

您好我正在尝试根据 API 响应在调用后更改问候语。但是当我调用唤醒词时,Alexa 只是闪烁并停止。

'use strict';
module.change_code = 1;
var Alexa = require('alexa-app');
var skill = new Alexa.app('greeter-service');

var Patientdata = function (callback){
var body = [] ;
const https = require('http');
https.get('SomeURL', (resp) => {
resp.on('data', (chunk) => {
body.push(chunk);
});
resp.on('end', () => {
body = Buffer.concat(body).toString();
let  jbody = JSON.parse(body);
console.log(jbody);
callback(jbody);
});
});
};

function Checkdata(cb)
{
  Patientdata(function(res){

console.log(res);
// do some logic
cb(true);

});
}


skill.launch(function(req, res) {

Checkdata(function(def){

if(def)
{
 var prompt = 'Hi Greetings !!! '
    res.say(prompt).reprompt(prompt).shouldEndSession(false);
}
else
{
    var prompt = 'Hi you are not a registered user !!!'
    res.say(prompt).reprompt(prompt).shouldEndSession(false);
}
});
});

标签: node.jsaws-lambdaalexa

解决方案


推荐阅读