我们说我创建了一个库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')
对话
如何实现库之间的层次关系?
由于
答案 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,以便进行讨论。