我正在尝试为我的机器人对话框构建一些测试。我将相同的测试代码(和修改后的测试数据)与两个具有相同对话框名称的不同机器人一起使用。因此,两个机器人的 test.js 文件是相同的。但是,当我尝试在第二个机器人上通过 Mocha 运行我的测试时,我得到了一个Error: DialogSet.add(): Invalid dialog being added.
每次测试的消息。我的第一个机器人不会发生这种情况。我什至尝试将第二个机器人中的对话框文件替换为(工作)中的对话框文件,但我仍然遇到相同的错误。因此,我在机器人之间找不到任何不同之处。我什至用第一个机器人的文件替换了所有有问题的文件(测试、测试数据/对话和对话框本身),但仍然出现相同的错误。最后,机器人之间的所有 botbuilder 包和其他依赖项都是相同的版本。我在这里不知所措......有人有任何想法吗?
这是正在调用的对话框。我省略了实际的对话框步骤,但这应该与问题无关,因为所有的对话框添加活动都发生在构造函数中。
const { TextPrompt, ChoicePrompt, ConfirmPrompt, ChoiceFactory, ComponentDialog, WaterfallDialog, DialogSet, DialogTurnStatus } = require('botbuilder-dialogs');
const { VistaServiceHelper } = require('../helpers/vistaServiceHelper');
const { TrackingServiceHelper } = require('../helpers/trackingServiceHelper');
const { CosmosDbStorage } = require('botbuilder-azure');
const LINE_PROMPT = 'linePrompt';
const ORDER_PROMPT = 'orderPrompt';
const CRITERIA_PROMPT = 'criteriaPrompt';
const SEARCH_CRITERIA = ['GO', 'PO'];
const WATERFALL_DIALOG = 'waterfallDialog';
const CONFIRM_PROMPT = 'confirmPrompt';
// Static texts
const escalateMessage = `Escalation message here` …
Run Code Online (Sandbox Code Playgroud) 当我的机器人在文本之间有多行要说时,我想显示打字指示器。我正在使用ActivityTypes.Typing
,但在网络聊天(和模拟器)中消失得太快,我什至看不到它。在 Teams 中存在的时间较长,但不多。有没有办法设置动画出现的时间,或者至少有办法让它持续更长时间?在我的代码中,我将其作为离散活动发送,如下所示:
async getEmployeeTitle(step) {
await step.context.sendActivity('OK, first I will need some additional information about the employee.');
await step.context.sendActivity({ type: ActivityTypes.Typing });
return await step.prompt(TEXT_PROMPT, `What is the employee's **Job Title**?`);
}
Run Code Online (Sandbox Code Playgroud)