【发布时间】:2018-05-28 06:29:56
【问题描述】:
我正在尝试从由欢迎意图触发的外部站点获取数据。现在我正在尝试向google.com 发送一个简单的GET 请求。
代理按预期工作,除非从请求回调内部调用。它有时有效,有时无效。
'use strict';
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
process.env.DEBUG = 'dialogflow:debug';
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
function search(agent){
var request = require("request");
var options = {
method: 'GET',
url: 'http://google.com'
};
console.log("Before request");
agent.add("Before request");
request(options, function (error, response, body){
console.log("Request completed");
agent.add("Request completed"); //<- This line doesn't show in agent
console.log("finished"); //<- This line shows in the log
});
console.log("Request sent");
agent.add(`Request sent`);
}
let intentMap = new Map();
intentMap.set('Default Welcome Intent', search);
agent.handleRequest(intentMap);
});
我在日志中注意到消息"Function execution took 1697 ms, finished with status code: 200" 显示在消息"finished" 之前。我不知道这是否意味着该进程正在关闭并在此之后忽略 agent.add() 调用。
Image: firebase log console showing function excecution finished before request compelted
【问题讨论】:
标签: node.js httprequest dialogflow-es