首页 > 解决方案 > 我是否错误地使用了 PromptOptions?

问题描述

我正在尝试ChoicePrompt为我的聊天机器人创建一个,但由于某种原因我无法导入PromptOptions界面。当我尝试将其包含在botbuilder-dialogs导入中时:

const { DialogSet, WaterfallDialog, ChoicePrompt, WaterfallStepContext, PromptOptions } = require('botbuilder-dialogs');

VS Code 不将其识别为包的一部分,并在创建提示时尝试使用它WaterfallStepContext

async (step = new WaterfallStepContext()) => {
       const semOptions = ["Fall", "Winter", "Summer"];
       options = new PromptOptions({ 
              prompt: `What semester are you currently in, ${this.name}?`, 
              choices: semOptions 
       });
       return await step.prompt("semPrompt", options);
}

我收到一个未处理的错误:

TypeError: PromptOptions is not a constructor

我多次重新安装了最新版本的botbuilder-dialog软件包,但无济于事。谁能提供任何关于我可能做错了什么的见解?

标签: javascriptbotframework

解决方案


PromptOptions是一个界面,其中包含您在提示中传递的可配置选项。您不需要通过新的 PromptOptions 来“构建”它。

Wrt您提出问题,您可以执行以下操作:

添加“ChoiceFactory”实用程序

const { WaterfallDialog, ChoiceFactory, ChoiceFactory, ConfirmPrompt, TextPrompt } = require('botbuilder-dialogs');

在对话框构造函数中,添加提示并将其添加到 dialogSet:

 this.addDialog(new ChoicePrompt(CHOICE_PROMPT_NAME));

在您的对话步骤中,您调用提示并传递选项


    async Step(stepContext) {
        const SEMOPTIONS = ['Fall', 'Winter', 'Summer'];
        return await stepContext.prompt(CHOICE_PROMPT_NAME, {
            prompt: `What semester are you currently in, ${this.name}?`,
            retryPrompt: 'Please select one of the options',
            choices: ChoiceFactory.toChoices(SEMOPTIONS),
            style: 5
        });
    }

顺便说一句:您似乎在 Javascript 代码中使用 C# / Python 类。JS 的 SDK 文档位于此处


推荐阅读