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中不可能存储不可序列化的数据。