private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> result) { var message = await result; if (message != null) { if (message.Value != null) { string responseMsg = Resources.ChatBot.WhatElseHelp; dynamic value = message.Value; string submitType = value.Type.ToString(); if (submitType.Equals("ContactUs", StringComparison.CurrentCultureIgnoreCase)) { try { var model = ContactUsModel.Parse(value); if (model != null) { // Trigger validation using Data Annotations attributes from the ContactUs model List <ValidationResult> results = new List <ValidationResult>(); bool valid = Validator.TryValidateObject(model, new ValidationContext(model, null, null), results, true); if (!valid) { // Some field in the ContactUs details are not valid var errors = string.Join("\n", results.Select(o => " - " + o.ErrorMessage)); await context.PostAsync($"{Resources.ChatBot.ContactUsValidationTitle}:\n" + errors); return; } responseMsg = string.Format(Resources.ChatBot.ContactUsWithDetailsMsg, model.Name, model.EmailAddress); } } catch (Exception) { await context.PostAsync(Resources.ChatBot.ContactUsValidationTitle); return; } } await context.PostAsync(responseMsg); context.Done(true); } else { context.Done(false); } } }