Botframework Ms Bot Builder:如何创建分层库结构?

Botframework Ms Bot Builder:如何创建分层库结构?,botframework,Botframework,假设我创建了一个库shop,并将其添加到我的bot中: 对话框/shop.js var lib = new builder.Library('shop'); lib.dialog('car', function(session){}) module.exports.createLibrary = function () { return lib.clone(); }; bot.library(require('./dialogs/shop').cre

假设我创建了一个库
shop
,并将其添加到我的bot中:

对话框/shop.js

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

    module.exports.createLibrary = function () {
        return lib.clone();
    };
bot.library(require('./dialogs/shop').createLibrary());
bot/index.js

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

    module.exports.createLibrary = function () {
        return lib.clone();
    };
bot.library(require('./dialogs/shop').createLibrary());
因此,我可以通过
session.beginDialog('shop:car')
触发
car
对话框

我希望为要购物的每一类物品创建一个库,这样汽车就在
vehicle
库中,我可以通过
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());
但这会通过
session.beginDialog('vehicle:car')
而不是
session.beginDialog('shop:vehicle:car')
触发
car
对话框

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


谢谢

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

当处理
'vehicle:car'
时,它会生成一个数组并获取库名和对话框id。会话方法
findDialog()
(在
beginDialog
内部调用),因此
'car'
,一切正常。对于
'shop:vehicle:car'
'car'
基本上被留在灰尘中,您的聊天机器人会在库
'shop'
中查找id为
'vehicle'
的对话框


编辑:如果您认为这是一项值得探索的功能,请在BotBuilder repo中提交一个文件,以便进行讨论。

当试图通过id
“shop:vehicle:car”访问时,记录器是否向您发送了任何消息。
?我很好奇它说了些什么;是否抛出了一些错误。