Я помогаю создать чат-бота, который извлекает данные о недвижимости из листа Google и отображает эту информацию для пользователя.Пользователь вводит адрес, затем извлекаемая информация присваивается переменной houseData, которая была объявлена вне функции с помощью http-запроса.Объект houseData имеет ключи, такие как спальни, ванные комнаты, monthPayment, address и т. Д., На которые затем ссылается полезная нагрузка agent.add для отображения значений ключей пользователя в виджете чата.Все это связано с одним намерением.
Позже я пытаюсь получить доступ к ежемесячной оплате объекта houseData в функции, сопоставленной с другим намерением, чтобы увидеть, как отчетный доход пользователя сравнивается с выплатой за дом.Переменная houseData не определена, хотя в firebase я вижу, что информация получена с листа google в console.log во время первого намерения.
Сбрасывать ли значения переменных в редакторе выполнения после намерения, котороефункции отображаются на это закончено?Как я могу сохранить постоянную информацию в редакторе, к которой можно получить доступ в течение всего сеанса разговора?Это ситуация, когда я должен установить новый контекст?
Спасибо.
edit: я добавил быстрый макет кода, чтобы помочь визуализировать проблему:
let houseData;
function sendHouseData(agent) {
let address = userInput
return getHouseData(address).then(agent.add(new Payload(
`Your house has ${houseData.bedrooms} bedrooms and ${houseData.bathrooms} bathrooms.`
))).catch(err);
}
function getHouseData(address) {
https.get(apiURL, (res) => {
res.on('end', () => {
houseData = parsedJSONData
})
})
}
// ------- LATER ------ //
let userData = {
income: '',
qualified: true
}
function qualify(agent) {
// user self reports their monthly income thru some quick reply options
if (houseData.monthlyPayment / userData.income < 0.39) { // houseData is undefined at this point
userData.qualified = false
}
}
intentMap.set(enterAddress, sendHouseData);
intentMap.set(qualify, qualify)