我写了一个小js文件,该文件返回了公共交通工具的离开。这是我的期望:
while (window.isOpen())
{
// Event processing
sf::Event event;
while (window.pollEvent(event))
{
// Request for closing the window
if (event.type == sf::Event::Closed)
window.close();
}
// Clear the whole window before rendering a new frame
window.clear();
// Draw some graphical entities
window.draw(sprite);
window.draw(circle);
window.draw(text);
// End the current frame and display its contents on screen
window.display();
}
控制台上的输出如下:
const dvb = require("dvbjs");
dvb.findStop("NUP").then((data) => {
console.log( "Abfahrten für "+data[0].name+ " in " +data[0].city+":" );
dvb.monitor(data[0].id, 0, 1).then((data) => {
for (const bus of data){
console.log(bus.mode.title +" "+ bus.line+" Richtung "+bus.direction+ " in "+bus.arrivalTimeRelative+ " Minuten.")
}
});
});
很好。现在,我对其进行了更改,以便Google Assistant可以读取输出:
Abfahrten für Nürnberger Platz in Dresden:
Straßenbahn 8 Richtung Hellerau in 3 Minuten.
当我在模拟器中的Google上启动我的操作时,出现以下错误,但没有响应:
app.intent('Haltestellenabfrage', (conv, {haltestelle}) => {
//conv.ask("Debug 1");
dvb.findStop("NUP").then((data) => {
//conv.ask("Debug 2");
conv.ask( "Abfahrten für "+data[0].name+ " in " +data[0].city+":" );
dvb.monitor(data[0].id, 0, 1).then((data) => {
for (const bus of data){
//conv.ask("Debug 3");
conv.close(bus.mode.title +" "+ bus.line+" Richtung "+bus.direction+ " in "+bus.arrivalTimeRelative+ " Minuten.");
}
});
});
//conv.ask("Debug 3");
});
无论我做什么,Dialogflow都不会执行.then()子句中的部分。我是javascript的绝对入门者,所以我不知道还能尝试什么。
答案 0 :(得分:0)
如果您的Intent Handler执行任何异步功能,则它必须返回一个Promise,当这些功能完成时,该Promise将被满足,以便Handler Dispatcher知道等待Promise完成。
您正在使用Promises,但没有返回它们。
从现在开始,您只需使用以下行返回Promise
return dvb.findStop("NUP").then((data) => {