Botframework(Node) – dialogData删除正则expression式

BotBuilder Node SDK是否主动dialogData存储dialogData对象的任何内容?

例如,我创build了一个简单的循环,我在session.dialogData.questions存储了一个正则expression式。 当我存储它后,控制台login这个,我可以看到我的正则expression式存储如期:

  { validation: /^[0-9]{19}$/, } 

但是,当我尝试在我的瀑布的下一步logging相同的session.dialogData.questions对象,那么正则expression式似乎已被转换为一个空的对象:

  { validation: {} } 

我认为这是防止XSS和其他types的剥削的故意的尝试?

这个例子的代码可以在下面find:

 const builder = require('botbuilder') const lib = new builder.Library('FormBuilder') lib.dialog('/', [ (session, args) => { session.dialogData.questions = { validation: /^[0-9]{19}$/ } console.log(session.dialogData.questions) builder.Prompts.confirm(session, 'Would you like to proceed?') }, (session, results) => { console.log(session.dialogData.questions) } ]) module.exports.createLibrary = () => { return lib.clone() } 

关于你最初的问题,SDK不会主动去除dialogData对象中的任何东西。 任何东西,除了正则expression式…

我不确定这是为什么,但是暂时我build议将模式存储为string'^[0-9]{19}$' ,然后通过new RegExp(session.dialogData.questions.validation)构造一个新的正则expression式new RegExp(session.dialogData.questions.validation)在需要的时候。

我试图存储一个方法来构build一个新的RegExp使用this.questions.validation ,但同样这也被剥离出来。


编辑:

根据Ezequiel的评论,这不是最终的Bot框架问题。 在JSON中不可能存储不可序列化的数据。