繁体   English   中英

如何使用Microsoft Bot Builder SDK for Node.js动态生成对话框?

[英]How can I generate dialogs dynamically using the Microsoft Bot Builder SDK for Node.js?

我正在构建一个工具,该工具允许用户生成自己的自定义表单调查。 我想让他们能够将这些传统的形式调查转换为聊天对话。 我已经在使用Microsoft Bot Builder SDK通过聊天与用户互动。

如何使用数据库中存储的表单结构动态生成对话框? 假设我在数据库中存储了一个像这样的数组:

var form = [
    {
        inputType: 'text',
        prompt: 'What is your first name?'
    },
    {
        inputType: 'choice',
        prompt: 'Select your gender',
        values: ['female', 'male']
    }
];

如何使用此数组生成瀑布对话框? 我知道我可以一直使用提示等方式手动编写对话框代码,如果我一直都知道调查问题是什么,但是我必须基于用户保存的动态表格来生成对话框。 我找不到有关如何实现此目的的任何信息。 感谢帮助。 谢谢。

您可以使用社区贡献的工具“ Form Flow”来完成此任务-它旨在完成与您的想法相似的想法。

您可以在此处找到NPM软件包:

可以在GitHub项目存储库上找到更多详细信息:

概述:

该库将允许您的漫游器向用户请求复杂的表单。 它有助于构建将处理整个表单流程的瀑布对话框。 该库将分为每个字段所需的对话框列表。 您可以使用预定义的提示,也可以围绕MBF提示创建自定义对话框包装。 每个字段的对话框分别评估,可以自定义。 图书馆的特点:

  • 标准提示以及有关电子邮件和网址的提示;
  • 验证者,提示,错误提示和值提取器可由开发人员定制
  • 支持子对话框

示例: 简单的注册表

const builder = require('botbuilder');
const formFlow = require('../../botbuilder-formflow');

let signupForm = [
  {
    "type": "text",
    "id": "login",
    "prompt": "Please enter your login",
    "response": "Your login is %s"
  },
  {
    "type": "text",
    "id": "password",
    "prompt": "Please enter your password",
    "response": "Your password is %s"
  }
];


let connector = new builder.ConsoleConnector().listen();
let bot = new builder.UniversalBot(connector);
bot.dialog('/', [
  session => session.beginDialog('/form'),
  (session, response) => session.endDialog(`Form result: ${JSON.stringify(response.response)}`)
]);
formFlow.create(bot, '/form', signupForm);

console.log('To start registration flow press [[ENTER]]');

另外,除了利用@nilsw所述的npm软件包外,您还可以尝试自己从数据库中的实体构建Adaptive Card json字符串。

字段定义代码段很简单:

    {
      "type": "TextBlock",
      "text": "Your name",
      "wrap": true
    },
    {
      "type": "Input.Text",
      "id": "myName",
      "placeholder": "Last, First"
    },

您可以参考http://adaptivecards.io/samples/InputForm.html以获得输入表单示例。

另外,有关字段定义,请参考http://adaptivecards.io/explorer/Input.Choice.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM