У меня похожая проблема, такая как Использовать асинхронные функции в DialogFlow WebHook, но это решение, изменение request-promises для request-promises-native у меня не сработало, разница в том, что я использую actions-on-google lib с ActionsSDK вместо DialogFlow one, вот мой код:
function call() {
var options = {
url: "https://google.es"
};
return request(options)
.then((res) => {
console.log("Success", res);
Promise.resolve();
})
.catch((err) => {
console.log("Error", err);
Promise.resolve();
});
}
const handleAction = (conv) => {
call()
.then(() => {
console.log("Going to ASK");
conv.ask('Hi, how is it going?');
return Promise.resolve();
})
.catch(error => {
console.log("Ask ERROR");
conv.ask('Hi, how is it going?');
return Promise.resolve();
});
}
app.intent('actions.intent.MAIN', (conv) => {
handleAction(conv);
});
Если я изменю функцию вызова для этого:
function call() {
let prom = new Promise((resolve,reject) =>{
resolve();
});
return prom;
}
Работает как часы. Не понимаю, в чем я ошибаюсь, я возвращаю обещания до намерения. Любая идея?
Спасибо!