{ 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);
答案 0 :(得分:0)
我相信我已经在StackOverflow上回答了这个问题:“ Botframework Prompt dialogs until user finishes ”。
您需要创建一个至少包含两个瀑布步骤的迷你对话框。您的第一步将采用任何args
并将其设置为聊天机会等待的潜在价值。它会提示用户验证这些值是否正确。如果未传入args
,或者数据无效,系统将提示用户提供聊天机会等待的值。
第二步将用户对第一步的响应,并将值设置为session
数据对象(如session.userData
或session.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>');
}