Botframework (Node) - dialogData 剥离正则表达式
Botframework (Node) - dialogData stripping out regex
BotBuilder Node SDK 是否主动删除存储在 dialogData
对象中的任何内容?
例如,我创建了一个简单的循环并将正则表达式存储在 session.dialogData.questions
中。当我在存储后控制台记录它时,我可以看到我的正则表达式按预期存储:
{
validation: /^[0-9]{19}$/,
}
但是,当我尝试在瀑布的下一步中记录相同的 session.dialogData.questions
对象时,正则表达式似乎已转换为空对象:
{
validation: {}
}
我认为这是为了防止 XSS 和其他类型的利用而故意尝试的?
此示例的代码如下:
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 对象中删除任何内容。任何东西,除了正则表达式...
我不确定这是为什么,但目前我建议将您的模式存储为字符串 '^[0-9]{19}$'
,然后在需要时通过 new RegExp(session.dialogData.questions.validation)
构建一个新的正则表达式。
我尝试存储一个使用 this.questions.validation
构建新 RegExp 的方法,但同样这也被删除了。
编辑:
根据 Ezequiel 的评论,这最终不是 Bot Framework 问题。无法在 JSON.
中存储不可序列化的数据
BotBuilder Node SDK 是否主动删除存储在 dialogData
对象中的任何内容?
例如,我创建了一个简单的循环并将正则表达式存储在 session.dialogData.questions
中。当我在存储后控制台记录它时,我可以看到我的正则表达式按预期存储:
{
validation: /^[0-9]{19}$/,
}
但是,当我尝试在瀑布的下一步中记录相同的 session.dialogData.questions
对象时,正则表达式似乎已转换为空对象:
{
validation: {}
}
我认为这是为了防止 XSS 和其他类型的利用而故意尝试的?
此示例的代码如下:
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 对象中删除任何内容。任何东西,除了正则表达式...
我不确定这是为什么,但目前我建议将您的模式存储为字符串 '^[0-9]{19}$'
,然后在需要时通过 new RegExp(session.dialogData.questions.validation)
构建一个新的正则表达式。
我尝试存储一个使用 this.questions.validation
构建新 RegExp 的方法,但同样这也被删除了。
编辑:
根据 Ezequiel 的评论,这最终不是 Bot Framework 问题。无法在 JSON.
中存储不可序列化的数据