最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

提示输入验证

运维笔记admin12浏览0评论

提示输入验证

提示输入验证

上下文是节点上的MS Bot Framework。我需要自定义验证来自Prompt.text或Prompt.Number的输入。我一直在看一些例子和文档。我已经使用DialogAction.validatePrompt()实现了一个快速示例,该工作正常,但是在验证失败的情况下,我不能(或者至少我不知道如何)自定义消息的问题。

验证可能由于多种原因而失败,能够根据失败原因选择响应消息会很棒。

此外,我已经看到了基础 - 自定义提示示例:(),它使用和IntentDialog来获得所需的行为。它还提到它是basics-validatedPrompt示例的替代品。

我的问题是:

  • 建议使用哪一个,validatedPrompt或IntentDialog方法?
  • validatedPrompt()会被弃用吗?
  • validatedPrompt()是否提供自定义消息的机制?
回答如下:

Microsoft Bot Framework版本4提示验证示例链接在下面指定:

https://github/Microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/10.prompt-validations

对于正确的文本提示验证,您可以创建单独的文件来执行验证任务代码:namePrompt / index.js

const { TextPrompt } = require('botbuilder-dialogs');

module.exports.NamePrompt = class NamePrompt extends TextPrompt {
    constructor(dialogId) {
        super(dialogId, async (prompt) => {
            if (!prompt.recognized.succeeded) {
                await prompt.context.sendActivity('Please tell me your name.');
                return false;
            } else {
                const value = prompt.recognized.value;
                if (value.length < 1) {
                    await prompt.context.sendActivity('Your name has to include at least one character.');
                    return false;
                } else if (value.length > 50) {
                    await prompt.context.sendActivity(`Sorry, but I can only handle names of up to 50 characters. Yours was ${ value.length }.`);
                    return false;
                } else {
                    return true;
                }
            }
        });
    }
};

现在在当前对话框中,您可以导入上面的文件:

const { NamePrompt } = require('../../prompts/namePrompt');
const GET_NAME_PROMPT = 'namePrompt';
this.addDialog(new NamePrompt(GET_NAME_PROMPT));

在对话框步骤中,您可以提示如下:

async promptForName(step) {
           return await step.prompt(GET_NAME_PROMPT, `What is your name, human?`);

}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论