Я помогаю создать чат-бота, который извлекает данные о недвижимости из таблицы Google и отображает эту информацию пользователю. Пользователь вводит адрес, затем извлеченная информация присваивается переменной houseData, которая была объявлена вне функции с HTTP-запросом. У объекта houseData есть такие ключи, как спальни, ванные комнаты, ежемесячная оплата, адрес и т. Д., На которые затем ссылаются в полезной нагрузке agent.add для отображения значений ключей для пользователя в виджете чата. Все это связано с одним намерением.
Позже я пытаюсь получить доступ к monthPayment объекта 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)