我目前正在尝试创建一种技巧,以从Bot Framework插入Microsoft虚拟助手。 在机器人停止对在星期二上午在聊天中发送的任何内容进行答复之前,我一直在平稳地编码,此后,我无法让它答复任何内容(即使是“取消”命令也使该程序结束了所有对话框并从例如开始)
起初我以为问题是自从升级到4.5以来的bot框架仿真器,但是进一步的测试证明我是错的:我构建了基本的Echo Bot和Core Bot,而且两者都工作正常。 但是,每次我构建虚拟助手或技能时,现在都让我拥有一个无法回答的机器人。
Azure配置很有可能是问题所在,但由于一切都是由部署技能生成的,因此看起来很奇怪。
当前,我的机器人可以成功显示欢迎消息/卡以及它告诉它显示的任何其他消息。 例如,我简化了代码,现在我的机器人在启动时向用户显示了一些选择: (该机器人在Typescript中)
protected async onStart(dc: DialogContext): Promise<void> {
const locale: string = i18next.language;
await dc.context.sendActivity(this.responseManager.getResponse(MainResponses.welcomeMessage));
await dc.beginDialog(IntroductionDialog.name);
}
然后在我的“简介对话框”构造函数中:
const sample: ((sc: WaterfallStepContext) => Promise<DialogTurnResult>)[] = [
this.showOptions.bind(this),
this.getFeedback.bind(this),
];
this.addDialog(new WaterfallDialog(IntroductionDialog.name, sample));
this.addDialog(new TextPrompt(DialogIds.textPrompt));
public async showOptions(sc: WaterfallStepContext): Promise<DialogTurnResult> {
const reply: MessageFactory = MessageFactory.suggestedActions(['Answer A', 'Answer B']);
return sc.prompt(DialogIds.textPrompt, reply);
}
然后用户单击其中一个或编写任何内容,然后getFeedback()方法将显示一条消息,告知用户它不理解并结束对话框,或根据答案提示他其他选择。
不幸的是,它在DialogBot.ts
之间卡住了if (dc.activeDialog !== undefined) {
console.log('Continue dialog');
const result: DialogTurnResult = await dc.continueDialog();
console.log('After continue');
}
在这一点上,我永远不会超越“ dc.continueDialog();”,在调试器之后,它将输入dialogContext.ts,并在这一行
return await dialog.continueDialog(this);
它返回并存在该函数。没错,没事。
我只是不知道下一步该怎么做,欢迎任何帮助