Dialogflow不执行Web请求

时间:2019-03-13 12:38:01

标签: javascript google-cloud-functions dialogflow dialogflow-fulfillment

我写了一个小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的绝对入门者,所以我不知道还能尝试什么。

1 个答案:

答案 0 :(得分:0)

如果您的Intent Handler执行任何异步功能,则它必须返回一个Promise,当这些功能完成时,该Promise将被满足,以便Handler Dispatcher知道等待Promise完成。

您正在使用Promises,但没有返回它们。

从现在开始,您只需使用以下行返回Promise

return dvb.findStop("NUP").then((data) => {