Botframework(Node) - dialogData剥离正则表达式

时间:2017-04-26 16:29:42

标签: node.js botframework

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()
}

1 个答案:

答案 0 :(得分:1)

关于您的初始问题,SDK不会主动从dialogData对象中删除任何内容。任何东西,除了正则表达式......

我不确定为什么会这样,但暂时我建议将您的模式存储为字符串'^[0-9]{19}$',然后在需要时通过new RegExp(session.dialogData.questions.validation)构建新的正则表达式。

我尝试使用this.questions.validation存储一个方法来构建一个新的RegExp,但同样也被删除了。

编辑:

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