2017-01-19 6 views
1

Я где-то читал, что мы можем использовать IScorable.cs для реализации доступных на глобальном уровне команд, например. введите «настройки» в любом месте потока чата, чтобы открыть диалоговое окно настроек. Но, похоже, нет документации о том, как ее использовать.Как использовать глобальные команды в Microsoft Bot Framework?

Пожалуйста, помогите.

ответ

4

Вы правы, реализация IScorable.cs - это путь, если вы хотите иметь глобальные команды в BotFramework.

Имея IScorable это в основном процедура два этапа:

  1. Написать свой IScorable
  2. Зарегистрируйте свой 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 контейнер.

+0

Что делать, если я не использую контейнер Autofac или не использую IoC? В Node.js есть более простой способ добиться этого, но не в C# SDK. – Mayank

+1

Если вы используете пакет C# BotBuilder NuGet, вы всегда используете Autofac :), потому что за кулисами используется BotFramework. Регистрация, которую вам нужно сделать, - это контейнер Autofac BotFramework; вам не нужно будет использовать его для решения ваших компонентов, но IScorable должен быть зарегистрирован там –

+0

Если бы это было полезно, отметьте его как ответ –