Node.js 如何阻止bot向前移动,除非实体已解析
当我使用findentity时,如果答案正确或不正确,它会向前移动。如何在非内置实体上使用实体解析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
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()
,它不会执行这些操作,也不会检查您在下一个瀑布式步骤中期望的任何值。