Я пытаюсь получить данные с внешнего сайта, инициированные желанным намерением.Сейчас я пытаюсь выполнить простой запрос GET
на google.com
.
. Агент работает, как и ожидалось, за исключением случаев, когда он вызывается из обратного вызова запроса.Иногда это работает, а иногда нет.
'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()
после этой точки.
Изображение: консоль журнала firebase, показывающая завершение функции, завершенной до того, как запрос выполнен