除非实体得到解决,否则如何阻止机器人向前移动

时间:2016-11-17 14:49:41

标签: node.js botframework luis

 { case(a, b) => Some(a, (b, a+b)) }

当我使用findentity时,如果答案是否正确,它会向前推进我如何使用不是内置的实体解析

    var intent = args.intent;
    var number = builder.EntityRecognizer.findEntity(intent.entities, 'builtin.numer');

当我使用解决时间时,它会再次询问,除非实体已解决;

    var location1 = builder.EntityRecognizer.findEntity(intent.entities, 'Location');
    var time = builder.EntityRecognizer.resolveTime(intent.entities);

1 个答案:

答案 0 :(得分:0)

我相信我已经在StackOverflow上回答了这个问题:“ Botframework Prompt dialogs until user finishes ”。

您需要创建一个至少包含两个瀑布步骤的迷你对话框。您的第一步将采用任何args并将其设置为聊天机会等待的潜在价值。它会提示用户验证这些值是否正确。如果未传入args,或者数据无效,系统将提示用户提供聊天机会等待的值。

第二步将用户对第一步的响应,并将值设置为session数据对象(如session.userDatasession.conversationData)或使用 session.replaceDialog()session.beginDialog()

在主对话框中,您将修改使用EntityRecognizers的步骤,以包含开始迷你对话的if语句。要触发if语句,您可以使用与此GitHub example或代码中所示相同的设计。此代码可能如下所示:

var location1 = builder.EntityRecognizer.findEntity(intent.entities, 'Location');

session.userData.location1 = location1 ? location1.entity : null;

if(!session.userData.location1) {
    session.beginDialog('<get-location-dialog>');
}