botframework - 在字典中上课
问题描述
我有一个关于在字典中开课的问题。所以我正在做一个关于大学的项目。有多个教师姓名。当用户键入教师姓名时,我使用 context.call 将用户引导到适当的教师班级
所以在这里,如果用户输入 show me computer engineering,用户会被定向到 ShowComp 类。
但是使用 if-else 会使代码真的不可读。我认为我可以将这些关键字放入字典
但是这一次 context.Call 给出了一个关于值类型的错误。我应该把字典值类型放在什么地方。我想不通。有人可以帮我吗?
解决方案
由于 Dialogs 继承自IDialog<object>
,因此您可以将其放入字典中:
private readonly Dictionary<string, IDialog<object>> options
= new Dictionary<string, IDialog<object>>
{ { "computer", new ShowComp() }, { "law", new ShowLaw() } };
public async Task GetFacilities(IDialogContext context, LuisResult result)
{
var entity = result.Entities.FirstOrDefault(e => options.ContainsKey(e.Entity));
if (entity != null)
{
IDialog<object> dialog = null;
if (options.TryGetValue(entity.Entity, out dialog))
{
context.Call(dialog, this.AfterResume);
}
}
}
推荐阅读
- odoo-12 - 如何解决“Uncaught TypeError: Cannot read property 'type' of undefined when add button to tree view of Odoo”?
- javascript - 为什么从轮播内部元素的事件调用Bootstrap 4轮播暂停功能时不起作用?
- powershell - PowerShell 数组问题与变量
- maven - 如何在 Maven 中自定义 JMeter 报告以显示 Pass-Fail 而不是 OK-KO/在报告中添加更多静态值?
- release - 如果您的应用程序频繁更改,您如何让呼叫中心操作员保持最新状态?
- azure - 能否通过 Azure 防火墙路由点到站点流量?
- python - 高效的条件滚动计算 Pandas
- javascript - 当状态改变时,React 不会重新渲染我的组件
- mysql - SQL。如何找出哪些时间重叠?
- angular - 在 ag-grid 中禁用“ag-column-hover”css 类