Bot Builder女士:如何创建分层库结构?

时间:2017-05-21 14:26:07

标签: botframework

我们说我创建了一个库shop并添加到我的机器人:

对话框/ shop.js

 var lib = new builder.Library('shop');
    lib.dialog('car', function(session){})

    module.exports.createLibrary = function () {
        return lib.clone();
    };

BOT / index.js

bot.library(require('./dialogs/shop').createLibrary());

所以我可以通过car触发session.beginDialog('shop:car')对话框。

我希望为每个商品类别创建一个库,以便汽车进入vehicle库,我可以通过car来调用session.beginDialog('shop:vehicle:car')对话框

我试过这样做:

var lib = new builder.Library('shop');
var lib_vehicle = new builder.Library('vehicle');

lib_vehicle.dialog('car', function(session){})

lib.library(lib_vehicle.clone());

module.exports.createLibrary = function () {
    return lib.clone();
};

bot.library(require('./dialogs/shop').createLibrary());

但这会通过car而不是session.beginDialog('vehicle:car')

触发session.beginDialog('shop:vehicle:car')对话

如何实现库之间的层次关系?

由于

1 个答案:

答案 0 :(得分:0)

在查看源代码之后,SDK未设置为在您描述的这种情况下处理层次结构。

在处理'vehicle:car'时,它会生成一个数组并获取库名称和对话框ID。会话方法findDialog()(在beginDialog内部调用)is hardcoded to only accept one id,所以'car',一切正常。对于'shop:vehicle:car''car'基本上处于空白状态,您的聊天机器人会在库'vehicle'中查找ID为'shop'的对话框。

修改:如果您认为这是值得探索的功能,请在BotBuilder仓库中提交[Feature Request] issue,以便进行讨论。