node.js - 如何在 Alexa Skill.launch 之前进行 Http 调用并根据 Node JS 中收到的响应更改 Invocation 语音
问题描述
以下是我的问题:
- 需要进行http调用并获得repsonse
- 处理响应并获得所需的值
- 现在根据上面收到的值更改 Launch 的调用。
问题是:
如果我定义一个全局变量,由于异步和语音被更改,它首先被执行,如果我在技能函数中使用 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);
}
});
});
解决方案
推荐阅读
- python - ModuleNotFoundError:没有名为“未来”的模块
- kendo-ui - 过滤器列表完成时,Kendo Grid MVC 不遵守过滤器顺序
- skbio - 使用 skbio 0.5.4 中的 smith-waterman 时出错
- c++ - 是否可以统一 VSVC 和 GCC 中的 std::wstring 行为?
- html - 如何在这个 div 中居中这些图像?
- python - 训练集包含“标签”作为 keras 模型的输入
- sql-server - 内存优化表中的逻辑读取
- javascript - 如何在Angular 2中解析并将一个字段中的值填充到另一个字段中
- c++ - 具有数组引用和移动/复制分配的 C++ reinterpret_cast 安全性
- firemonkey - iOS 通知零星 (FMX)