Node.js 在我的messenger bot处于120秒不活动状态后,向用户发送消息的正确方式是什么?

Node.js 在我的messenger bot处于120秒不活动状态后,向用户发送消息的正确方式是什么?,node.js,botframework,chatbot,facebook-messenger-bot,Node.js,Botframework,Chatbot,Facebook Messenger Bot,我正在使用bot框架构建一个问答机器人,我希望这个人在2分钟内变得不活动时从机器人那里得到一条消息。 当我试着 bot.dialog('/', [(session)=>{ session.dialogData.inactive = setTimeout(()=>{ session.send('You there?') },30000) }]) 它给了我这个错误 TypeError: Converting circular structure to J

我正在使用bot框架构建一个问答机器人,我希望这个人在2分钟内变得不活动时从机器人那里得到一条消息。 当我试着

bot.dialog('/', [(session)=>{
    session.dialogData.inactive = setTimeout(()=>{
        session.send('You there?')
    },30000)
}])
它给了我这个错误

TypeError: Converting circular structure to JSON
    at Object.stringify (native)
    at addWrite (D:\bots\zupquiz\node_modules\botbuilder\lib\bots\ChatConnector.js:261:29)
    at ChatConnector.saveData (D:\bots\zupquiz\node_modules\botbuilder\lib\bots\ChatConnector.js:276:21)
    at D:\bots\zupquiz\node_modules\botbuilder\lib\bots\UniversalBot.js:405:21
    at UniversalBot.tryCatch (D:\bots\zupquiz\node_modules\botbuilder\lib\bots\UniversalBot.js:425:13)
    at UniversalBot.saveStorageData (D:\bots\zupquiz\node_modules\botbuilder\lib\bots\UniversalBot.js:402:14)
    at Object.onSave (D:\bots\zupquiz\node_modules\botbuilder\lib\bots\UniversalBot.js:266:27)
    at Session.sendBatch (D:\bots\zupquiz\node_modules\botbuilder\lib\Session.js:381:22)
    at Timeout.<anonymous> (D:\bots\zupquiz\node_modules\botbuilder\lib\Session.js:513:23)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)
TypeError:将循环结构转换为JSON
at Object.stringify(本机)
在addWrite(D:\bots\zupquiz\node\u modules\botbuilder\lib\bots\ChatConnector.js:261:29)
在ChatConnector.saveData(D:\bots\zupquiz\node\u modules\botbuilder\lib\bots\ChatConnector.js:276:21)
位于D:\bots\zupquiz\node\u modules\botbuilder\lib\bots\UniversalBot.js:405:21
在UniversalBot.tryCatch(D:\bots\zupquiz\node\u modules\botbuilder\lib\bots\UniversalBot.js:425:13)
位于UniversalBot.saveStorageData(D:\bots\zupquiz\node\u modules\botbuilder\lib\bots\UniversalBot.js:402:14)
在Object.onSave(D:\bots\zupquiz\node\u modules\botbuilder\lib\bots\UniversalBot.js:266:27)
在Session.sendBatch(D:\bots\zupquiz\node\u modules\botbuilder\lib\Session.js:381:22)
超时时。(D:\bots\zupquiz\node\u modules\botbuilder\lib\Session.js:513:23)
在ontimeout(timers.js:365:14)
在tryOnTimeout(timers.js:237:5)
at Timer.listOnTimeout(timers.js:207:5)

我认为这里的问题是,您正在将计时器句柄存储在dialogData中,它会被序列化到存储中。试着不存储计时器手柄当我如何在瀑布的两个方法之间跟踪计时器id时,我想在一个方法中设置计时器,在另一个方法中清除计时器。你能以可序列化的形式保存它吗?可能是一个时间戳,甚至可能只是一个布尔值(意味着计时器存在)。我认为这里的问题是您正在将计时器句柄存储在dialogData中,它会被序列化到存储中。试着不存储计时器手柄当我如何在瀑布的两个方法之间跟踪计时器id时,我想在一个方法中设置计时器,在另一个方法中清除计时器。你能以可序列化的形式保存它吗?可能是一个时间戳,甚至可能只是一个布尔值(表示计时器存在)。