public virtual async Task <Activity> BindToData(ITurnContext context, object data) { if (!string.IsNullOrEmpty(this.Template)) { // if there is a message generator use that IActivityGenerator activityGenerator = context.TurnState.Get <IActivityGenerator>(); if (activityGenerator != null) { var result = await activityGenerator.Generate( turnContext : context, template : this.Template, data : data).ConfigureAwait(false); return(result); } // fallback to just text based LG if there is a language generator var message = Activity.CreateMessageActivity(); message.Text = this.Template; message.Speak = this.Template; ILanguageGenerator languageGenerator = context.TurnState.Get <ILanguageGenerator>(); if (languageGenerator != null) { var result = await languageGenerator.Generate( turnContext : context, template : Template, data : data).ConfigureAwait(false); if (result != null) { message.Text = result; message.Speak = result; } } return(message as Activity); } return(null); }
/// <summary> /// Register MessageActivityGeneration. /// </summary> /// <param name="botAdapter">botAdapter to add services to.</param> /// <param name="messageGenerator">(OPTIONAL) Default is TextMessageActivityGenerator(). </param> /// <returns>botAdapter.</returns> public static BotAdapter UseMessageActivityGeneration(this BotAdapter botAdapter, IActivityGenerator messageGenerator = null) { DeclarativeTypeLoader.AddComponent(new LanguageGenerationComponentRegistration()); botAdapter.Use(new RegisterClassMiddleware <IActivityGenerator>(messageGenerator ?? new ActivityGenerator())); return(botAdapter); }
/// <summary> /// Register ILanguageGenerator as default langugage generator. /// </summary> /// <param name="botAdapter">botAdapter to add services to.</param> /// <param name="resourceExplorer">resourceExporer to provide to LanguageGenerator.</param> /// <param name="languageGenerator">LanguageGenerator to use.</param> /// <param name="messageGenerator">(OPTIONAL) Default is TextMessageActivityGenerator(). </param> /// <returns>botAdapter.</returns> public static BotAdapter UseLanguageGeneration(this BotAdapter botAdapter, ResourceExplorer resourceExplorer, ILanguageGenerator languageGenerator, IActivityGenerator messageGenerator = null) { DeclarativeTypeLoader.AddComponent(new LanguageGenerationComponentRegistration()); botAdapter.Use(new RegisterClassMiddleware <LanguageGeneratorManager>(new LanguageGeneratorManager(resourceExplorer ?? throw new ArgumentNullException(nameof(resourceExplorer))))); botAdapter.Use(new RegisterClassMiddleware <ILanguageGenerator>(languageGenerator ?? throw new ArgumentNullException(nameof(languageGenerator)))); botAdapter.UseMessageActivityGeneration(messageGenerator); return(botAdapter); }