我正在帮助创建一个聊天机器人,它从谷歌表格中提取房地产数据,并将该信息显示给用户。用户输入一个地址,然后将提取的信息分配给一个 houseData 变量,该变量已通过 http 请求在函数外部声明。houseData 对象具有卧室、浴室、monthlyPayment、地址等键,然后在 agent.add Payload 中引用,用于在聊天小部件中向用户显示键的值。这都映射到一个意图。
稍后,我尝试在映射到不同意图的函数中访问 houseData 对象的monthlyPayment,以查看用户报告的收入与房屋付款的比较情况。houseData 变量是未定义的,即使在 firebase 中我可以看到在第一个意图期间从 console.log 中的谷歌表接收到信息。
完成特定功能映射到的意图后,是否会在履行编辑器中重置变量值?如何在编辑器中存储可在整个对话流程中访问的持久信息?这是我应该设置新上下文的情况吗?
谢谢你。
编辑:我添加了代码的快速模型以帮助可视化问题:
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)