c# - 如何在 Azure 中为多个机器人创建单个机器人框架 V4 C# 项目
问题描述
我们已经使用 Azure Bot Service(Bot Channels Registration)在 Teams 中实现了一个 bot。我们正在使用 MS Bot 框架 V4。目前,我们需要在 Azure 中为我们组织中的不同团队创建多个机器人。我们可以在 azure 门户中创建多个机器人,但是我们是否应该为 azure 中的多个机器人使用相同的现有机器人框架 V4 C# 项目(端点)。我参考了一个博客,他们提到我们可以实现 ICredentialProvider 来管理不同的应用程序 ID 和密码验证。但我找不到 C# bot 框架 V4 的任何文档或示例。能否请您帮忙,如果我采用错误的技术,是否还有其他方法可以实现这一目标。
以下是我到目前为止尝试过的步骤。首先创建了一个名为 MultiCredentialProvider 的 ICredentialProvider 实现,如下所示。
public class MultiCredentialProvider : ICredentialProvider
{
public Dictionary<string, string> Credentials = new Dictionary<string, string>
{
{"AppId1","Password1" },
{"AppId2","Password2" }
};
public Task<bool> IsValidAppIdAsync(string appId)
{
return Task.FromResult(this.Credentials.ContainsKey(appId));
}
public Task<string> GetAppPasswordAsync(string appId)
{
return Task.FromResult(this.Credentials.ContainsKey(appId) ? this.Credentials[appId] : null);
}
public Task<bool> IsAuthenticationDisabledAsync()
{
return Task.FromResult(!this.Credentials.Any());
}
}
然后将以下行添加到 Startup.cs 类的 ConfigureServices 方法中。
services.AddSingleton<ICredentialProvider, MultiCredentialProvider>();
但它在执行时不起作用。请让我知道我们是否需要像下面那样在 BotController 中提供端点,并在 Azure 中更新相应所需的 Bot Channels Registration 中的端点?
[Route("api/messages/{appId}")]
[ApiController]
另外请告诉我,我们需要如何在身份验证后处理各个机器人的对话框?我在 Azure Bot 服务中注册了三个机器人,需要为不同的机器人调用不同的 LUIS 应用程序。有没有办法在执行期间获取 MainDialog.cs 类中的 appId 并基于 appId 编写路由逻辑,或者请告诉我处理这些不同机器人的对话框的最佳方法。另外请让我知道如何使用自适应对话框来处理它。在此先感谢您的帮助。
解决方案
推荐阅读
- python - if条件python pandas的索引计数器
- javascript - 使用数组内的值查找对象键?
- oracle - 使用连接更新 Oracle 中的语句
- drupal - Drupal:向类别添加了新的分类术语,但与不同类别一起使用时会引发错误
- android - 单击时汉堡菜单没有响应
- mysql - MySQL 不等于某个长度
- reactjs - 如何在样式化组件中使用类
- java - 如何从 ScheduledFuture 任务中获取委托
- php - 如何在jquery中将字符串添加到选项菜单X次
- powershell - Powershell 错误:Get-Date 上的指定转换无效错误