Вы правы, реализация IScorable.cs
- это путь, если вы хотите иметь глобальные команды в BotFramework.
Имея IScorable это в основном процедура два этапа:
- Написать свой IScorable
- Зарегистрируйте свой IScorable в Autofac контейнере BotFramework в
BotFramework будет проходить через все IScorables
первый, чтобы увидеть если кто-либо из них «победит» (иначе, если они что-то сделают или нет), и если никто не обрабатывает сообщение; то он продолжит отправку сообщения в диалоговые окна.
касается того, как написать свой IScorable
, то лучше всего заглянуть в некоторые примеры:
- Settings scorable (от ContosoFlowers sample). Он запускает новое диалоговое окно, когда отправляется сообщение «Настройки».
- DeleteProfile scorable (входит в программу BotFramework). Он удаляет пакеты PrivateConversationData и UserData, а также сбрасывает стек при отправке сообщения «/ deleteeprofile».
- Alarm scorable (из образца AlarmsBot). Он вызывает службу для выполнения операции, если сообщение соответствует любому из предопределенных глаголов.
Что касается как зарегистрировать IScorable
, я бы порекомендовал вам делать что-то вроде следующего в методе Global.asax.cs
, Application_Start
:
var builder = new ContainerBuilder();
builder.RegisterType<SettingsScorable>()
.As<IScorable<IActivity, double>>()
.InstancePerLifetimeScope();
builder.Update(Conversation.Container);
Это показывает, как SettingsScorable
из ContosoFlowers регистрируется в Autofac
контейнер.
Что делать, если я не использую контейнер Autofac или не использую IoC? В Node.js есть более простой способ добиться этого, но не в C# SDK. – Mayank
Если вы используете пакет C# BotBuilder NuGet, вы всегда используете Autofac :), потому что за кулисами используется BotFramework. Регистрация, которую вам нужно сделать, - это контейнер Autofac BotFramework; вам не нужно будет использовать его для решения ваших компонентов, но IScorable должен быть зарегистрирован там –
Если бы это было полезно, отметьте его как ответ –