public Runner Init(IFeedbackProvider feedbackProvider, string[] args) { var catalog = new AggregateCatalog(new AssemblyCatalog(typeof(Bootstrapper).Assembly)); var currentDir = Environment.CurrentDirectory; var assemblyDir = new FileInfo(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath).Directory.FullName; var paths = new string[] { assemblyDir, Path.Combine(assemblyDir, "Tasks"), currentDir, Path.Combine(currentDir, "Tasks") }.Unique(); var dirCatalogs = paths.Where(x => Directory.Exists(x)) .Select(x => new DirectoryCatalog(x, "*.Tasks.dll")); dirCatalogs.Apply(x => catalog.Catalogs.Add(x)); var container = new CompositionContainer(catalog); var parsed = new ArgumentParser().Parse(args); var runner = new Runner(parsed.ActualArgs.ToArray()); var batch = new CompositionBatch(); batch.AddExportedValue<IFeedbackProvider>(feedbackProvider); parsed.Options.Apply(x => batch.AddExportedValue<string>(x.Item1, x.Item2)); parsed.Switches.Apply(x => batch.AddExportedValue<bool>(x, true)); batch.AddPart(runner); container.Compose(batch); return runner; }
public FeedbackManager(IFeedbackProvider feedbackProvider) { if (feedbackProvider == null) { throw new ArgumentNullException(nameof(feedbackProvider)); } _feedbackProvider = feedbackProvider; }
private static void InitFeedback() { lock (feedbackProviderSync) { foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes("/Warehouse/Business/Feedback")) { feedbackProvider = node.CreateInstance() as IFeedbackProvider; if (feedbackProvider != null) { return; } } feedbackProvider = new DummyFeedbackProvider(); } }
/// <summary> /// Initializes a new instance of the <see cref="ActivityHelper{T}"/> class. /// </summary> /// <param name="logger">Instance to send logs to the Application Insights service.</param> /// <param name="userState">State management object for maintaining user conversation state.</param> /// <param name="teamStorageProvider">Provider for fetching information about team details from storage.</param> /// <param name="localizer">The current culture's string localizer.</param> /// <param name="dialog">Base class for all bot dialogs.</param> /// <param name="conversationState">State management object for maintaining conversation state.</param> /// <param name="teamMembershipHelper">Helper for team operations with Microsoft Graph API.</param> /// <param name="userProfileGraphApiHelper">Helper for user profile operations with Microsoft Graph API.</param> /// <param name="introductionStorageProvider">Provider for fetching information about new joiner introduction details from storage.</param> /// <param name="sharePointHelper">Helper for working with SharePoint.</param> /// <param name="introductionCardHelper">Helper for working with introduction cards.</param> /// <param name="graphUtility">Instance of Microsoft Graph utility helper.</param> /// <param name="welcomeCardFactory">Factory for working with welcome card attachments.</param> /// <param name="botOptions">A set of key/value application configuration properties for bot.</param> /// <param name="userStorageProvider">Provider for fetching information about user details from storage.</param> /// <param name="securityGroupSettings"> A set of key/value application configuration properties for AAD security group settings.</param> /// <param name="feedbackProvider">Provider for fetching information about new joiner feedbacks from storage.</param> /// <param name="imageUploadProvider">Provider for uploading user image to blob storage.</param> public ActivityHelper( ILogger <ActivityHelper <T> > logger, UserState userState, ITeamStorageProvider teamStorageProvider, IStringLocalizer <Strings> localizer, T dialog, ConversationState conversationState, ITeamMembership teamMembershipHelper, IUserProfile userProfileGraphApiHelper, IIntroductionStorageProvider introductionStorageProvider, ISharePointHelper sharePointHelper, IIntroductionCardHelper introductionCardHelper, IGraphUtilityHelper graphUtility, IWelcomeCardFactory welcomeCardFactory, IOptions <BotOptions> botOptions, IUserStorageProvider userStorageProvider, IOptions <AadSecurityGroupSettings> securityGroupSettings, IFeedbackProvider feedbackProvider, IImageUploadProvider imageUploadProvider) { this.logger = logger; this.userState = userState; this.teamStorageProvider = teamStorageProvider; this.localizer = localizer; this.dialog = dialog; this.conversationState = conversationState; this.teamOperationGraphApiHelper = teamMembershipHelper; this.userProfileGraphApiHelper = userProfileGraphApiHelper; this.introductionStorageProvider = introductionStorageProvider; this.sharePointHelper = sharePointHelper; this.introductionCardHelper = introductionCardHelper; this.graphUtility = graphUtility; this.welcomeCardFactory = welcomeCardFactory; this.botOptions = botOptions ?? throw new ArgumentNullException(nameof(botOptions)); this.userStorageProvider = userStorageProvider; this.securityGroupSettings = securityGroupSettings ?? throw new ArgumentNullException(nameof(securityGroupSettings)); this.feedbackProvider = feedbackProvider; this.imageUploadProvider = imageUploadProvider; }
/// <summary> /// Create a new Feedback entity from the input. /// </summary> /// <param name="message">A message in a conversation.</param> /// <param name="data">Represents the submit data associated with the Share feedback card.</param> /// <param name="member">Teams channel account detailing user Azure Active Directory details.</param> /// <param name="feedbackProvider">Tickets Provider.</param> /// <returns>TicketEntity object.</returns> private static async Task <FeedbackEntity> CreateFeedbackAsync( IMessageActivity message, ShareFeedbackCardPayload data, TeamsChannelAccount member, IFeedbackProvider feedbackProvider) { string description = null; if (data.Rating == nameof(FeedbackRating.Helpful)) { description = data.DescriptionHelpful; } else if (data.Rating == nameof(FeedbackRating.NeedsImprovement)) { description = data.DescriptionNeedsImprovement; } else if (data.Rating == nameof(FeedbackRating.NotHelpful)) { description = data.DescriptionNotHelpful; } FeedbackEntity feedbackEntity = new FeedbackEntity { FeedbackId = Guid.NewGuid().ToString(), UserPrincipalName = member.UserPrincipalName, UserName = member.Name, UserGivenName = member.GivenName, Rating = data.Rating, Description = description, UserQuestion = data.UserQuestion, KnowledgeBaseAnswer = data.KnowledgeBaseAnswer, Subject = data.Project, }; await feedbackProvider.UpsertFeecbackAsync(feedbackEntity).ConfigureAwait(false); return(feedbackEntity); }
/// <summary> /// Helps to get the expert submit card. /// </summary> /// <param name="message">A message in a conversation.</param> /// <param name="appBaseUri">The base URI where the app is hosted.</param> /// <param name="turnContext">Context object containing information cached for a single turn of conversation with a user.</param> /// <param name="cancellationToken">Propagates notification that operations should be canceled.</param> /// <param name="feedbackProvider">Feedback Provider.</param> /// <returns>A task that represents the work queued to execute.</returns> public static async Task <FeedbackEntity> ShareFeedbackSubmitText( IMessageActivity message, string appBaseUri, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken, IFeedbackProvider feedbackProvider) { var shareFeedbackSubmitTextPayload = ((JObject)message.Value).ToObject <ShareFeedbackCardPayload>(); // Validate required fields. if (!Enum.TryParse(shareFeedbackSubmitTextPayload?.Rating, out FeedbackRating rating) || shareFeedbackSubmitTextPayload.DescriptionHelpful?.Length > 500 || shareFeedbackSubmitTextPayload.DescriptionNeedsImprovement?.Length > 500 || shareFeedbackSubmitTextPayload.DescriptionNotHelpful?.Length > 500) { var updateCardActivity = new Activity(ActivityTypes.Message) { Id = turnContext.Activity.ReplyToId, Conversation = turnContext.Activity.Conversation, Attachments = new List <Attachment> { ShareFeedbackCard.GetCard(shareFeedbackSubmitTextPayload, appBaseUri) }, }; try { await turnContext.UpdateActivityAsync(updateCardActivity, cancellationToken).ConfigureAwait(false); } catch (ErrorResponseException) { await turnContext.SendActivityAsync(Strings.InputTooLongWarning).ConfigureAwait(false); } return(null); } var teamsUserDetails = await GetUserDetailsInPersonalChatAsync(turnContext, cancellationToken).ConfigureAwait(false); return(await CreateFeedbackAsync(message, shareFeedbackSubmitTextPayload, teamsUserDetails, feedbackProvider).ConfigureAwait(false)); }
public GenerationContext(IFeedbackProvider provider, string[] generationArgs) { this.generationArgs = generationArgs; FeedbackProvider = provider; }
public FeedbackManager(IFeedbackProvider provider, ICespResourceProvider resourceProvider) { _feedbackProvider = provider; _cespResourceProvider = resourceProvider; }
private void outputOutputHandler(IFeedbackProvider sender, string msg) { Console.WriteLine($"{sender.Owner} - OUTPUT ADDED: {msg}"); }
private void errorOutputHandler(IFeedbackProvider sender, string msg) { Console.WriteLine($"{sender.Owner} - ERROR ADDED: {sender.LastError}"); }
public FeedbackController(IFeedbackProvider provider) { _provider = provider; }