我有一个dialog,它有多个Prompts(Prompts.text、Prompts.number、Prompts.Choice、Prompts.confirm)。虽然Prompts.choice和Prompts.confirm似乎有内置的验证,但是如何验证Prompts.text呢?
我已经浏览过这个线程如何处理来自用户的错误输入?,但它是通过将文本转换为选择来纠正的。
另外,我不想重新启动整个对话框,因为它从开始询问问题形式,然后如创建自定义提示来验证输入中所示
下面是我的对话框的较短版本:
bot.dialog('/getDetails', [
function (session, args, next) {
let options = {
retryPrompt: 'The response id invalid'
}
builder.Prompts.text(session, 'What is your full name?', options);
//passing options as argument works for Prompts.choice, which seems an inbuilt validation
},
function (session, results, next){
var name = session.dialogData.name;
//How to to reprompt if user does not enters its full name?
if (results.response) {
name.fullname = results.response;
}
builder.Prompts.text(session, 'Can you please provide your country name?');
},
function (session, results) {
var name = session.dialogData.name;
//How to reprompt only last Prompts.text if user enter an invlid value?
if (results.response) {
name.text = results.response;
}
}
}]).triggerAction({
matches: 'GetDetails',
})发布于 2018-02-14 13:38:08
下面是我如何通过DialogAction.validatedPrompt解决这个问题
bot.dialog('/getDetail', [
function (session) {
session.beginDialog('/validateAge', { prompt: "What's your age?" });
//if false response, then prmopts "I did not understand {age}""
},
function (session, results) {
if (results.response) {
session.send("Thank you for adding your age");
}
}
]).triggerAction({
matches: /^lets validate$/i
})
bot.dialog('/validateAge', builder.DialogAction.validatedPrompt(builder.PromptType.text, function (response) {
if(response> 0 && response < 70){
return response;
}
}));https://stackoverflow.com/questions/48785441
复制相似问题