Node.js 如何阻止bot向前移动,除非实体已解析

Node.js 如何阻止bot向前移动,除非实体已解析,node.js,botframework,azure-language-understanding,Node.js,Botframework,Azure Language Understanding,当我使用findentity时,如果答案正确或不正确,它会向前移动。如何在非内置实体上使用实体解析 var intent = args.intent; var number = builder.EntityRecognizer.findEntity(intent.entities, 'builtin.numer'); 当我使用resolve time时,它会再次询问,除非实体是resolve var location1 = builder.EntityRecognize

当我使用findentity时,如果答案正确或不正确,它会向前移动。如何在非内置实体上使用实体解析

    var intent = args.intent;
    var number = builder.EntityRecognizer.findEntity(intent.entities, 'builtin.numer');
当我使用resolve time时,它会再次询问,除非实体是resolve

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

我相信我已经回答了这个关于StackOverflow的问题

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

第二步将获取用户对第一步的响应,并将该值设置为
会话
数据对象(如
会话.userData
会话.conversationData
),或使用或重新启动对话框

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

    var alarm = session.dialogData.alarm = {
      number: number ? number.entity : null,
      timestamp: time ? time.getTime() : null,
      location1: location1? location1.entity :null
    };
    /*  if (!number & !location1 time)
     {} */


    // Prompt for number
    if (!alarm.number) {
        builder.Prompts.text(session, 'how many people you are');
    } else {
        next();
    }
},
function (session, results, next) {
    var alarm = session.dialogData.alarm;

    if (results.response) {
        alarm.number = results.response;
    }
var location1=builder.EntityRecognizer.findEntity(intent.entities,'Location');
session.userData.location1=位置1?location1.entity:空;
如果(!session.userData.location1){
session.beginDialog(“”);
}

我相信我已经回答了StackOverflow的这个问题:“

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

第二步将获取用户对第一步的响应,并将该值设置为
会话
数据对象(如
会话.userData
会话.conversationData
),或使用或重新启动对话框

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

    var alarm = session.dialogData.alarm = {
      number: number ? number.entity : null,
      timestamp: time ? time.getTime() : null,
      location1: location1? location1.entity :null
    };
    /*  if (!number & !location1 time)
     {} */


    // Prompt for number
    if (!alarm.number) {
        builder.Prompts.text(session, 'how many people you are');
    } else {
        next();
    }
},
function (session, results, next) {
    var alarm = session.dialogData.alarm;

    if (results.response) {
        alarm.number = results.response;
    }
var location1=builder.EntityRecognizer.findEntity(intent.entities,'Location');
session.userData.location1=位置1?location1.entity:空;
如果(!session.userData.location1){
session.beginDialog(“”);
}

关闭GH问题。请只在GitHub上发布SDK相关的bug、问题或建议,并将一般操作问题放在StackOverflow上。结束问题。请仅在GitHub上发布SDK相关的错误、问题或建议,并将一般操作问题放在StackOverflow上。我们无法在提示中执行此操作,并检查实体是否已解决,或者是否与下面给出的类似。提示将检查值或值类型是否与要求的值匹配。例如,如果使用
builder.Prompts.number()
,聊天机器人将使用正则表达式模式匹配用户提供的内容。同样,对于
.choices()
它将检查用户的响应,以查看它是否与提供的选项匹配。但是,对于
.text()
,它不会执行这些操作,也不会检查您在下一个瀑布式步骤中所期望的任何值。我们无法在提示符中执行此操作,并检查实体是否已求解,或者是否与下面给出的类似。提示符将检查值或值类型是否与要求的值匹配。例如,如果使用
builder.Prompts.number()
,聊天机器人将使用正则表达式模式匹配用户提供的内容。同样,对于
.choices()
它将检查用户的响应,以查看它是否与提供的选项匹配。但是,对于
.text()
,它不会执行这些操作,也不会检查您在下一个瀑布式步骤中期望的任何值。