public ActionResult Index() { var languageQnAMakerSubscriptionKeyJson = ConfigurationManager.AppSettings["LanguageQnAMakerSubscriptionKeyJson"]; var languageQnAMakerKeyCombinations = JsonConvert.DeserializeObject <List <LanguageQnAMakerKeyCombination> >(languageQnAMakerSubscriptionKeyJson); List <LanguageKbConfigurationViewModel> langKbLst = new List <LanguageKbConfigurationViewModel>(); string languages = string.Empty; for (int i = 0; i < languageQnAMakerKeyCombinations.Count; i++) { LanguageKbConfigurationViewModel langKb = new LanguageKbConfigurationViewModel(); langKb.LanguageCode = languageQnAMakerKeyCombinations[i].LanguageCode; langKbLst.Add(langKb); if (languages != string.Empty) { languages = languages + "," + langKb.LanguageCode; } else { languages = langKb.LanguageCode; } } this.ViewBag.Languages = languages; return(this.View(langKbLst)); }
/// <summary> /// Gets language specific knowledgebase and team details. /// </summary> /// <param name="languageCode">Language code.</param> /// <param name="languageName">Language Name.</param> /// <returns>List of <see cref="LanguageKbConfigurationViewModel"/></returns> public async Task <LanguageKbConfigurationViewModel> GetLanguageKbDetails(string languageCode, string languageName) { var languageKbConfigObject = await this.configurationProvider.GetSavedLanguageKBConfigurationEntityAsync(languageCode).ConfigureAwait(false); LanguageKbConfigurationViewModel languageKbDetail = new LanguageKbConfigurationViewModel() { LanguageCode = languageCode, LanguageDisplayName = languageName, KnowledgeBaseId = languageKbConfigObject.KnowledgeBaseId, TeamId = languageKbConfigObject.TeamId, WelcomeMessage = languageKbConfigObject.ChangeLanguageMessageText }; return(languageKbDetail); }
public async Task <ActionResult> SaveLanguageKbConfigurationDetails(LanguageKbConfigurationViewModel item) { string teamIdAfterParse = ParseTeamIdFromDeepLink(item.TeamId ?? string.Empty); if (string.IsNullOrWhiteSpace(teamIdAfterParse)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "The provided team id is not valid.")); } else { // Get bot supported languages from web.config. var languageQnAMakerSubscriptionKeyJson = ConfigurationManager.AppSettings["LanguageQnAMakerSubscriptionKeyJson"]; var languageQnAMakerKeyCombinations = JsonConvert.DeserializeObject <List <LanguageQnAMakerKeyCombination> >(languageQnAMakerSubscriptionKeyJson); var supportedLanguages = from languageQnAMakerKeyCombination in languageQnAMakerKeyCombinations select new BotLanguageDetail { Code = languageQnAMakerKeyCombination.LanguageCode, Default = languageQnAMakerKeyCombination.Default, Name = languageQnAMakerKeyCombination.LanguageName }; // Save the bot supported language details to table storage. await this.configurationProvider.UpsertEntityAsync(JsonConvert.SerializeObject(supportedLanguages), ConfigurationEntityTypes.SupportedLanguagesKey).ConfigureAwait(false); LanguageQnAMakerKeyCombination langQnaDetails = languageQnAMakerKeyCombinations.FirstOrDefault(x => x.LanguageCode == item.LanguageCode); IQnaServiceProvider applicableQnaServiceProvider = this.qnaServiceProviders.FirstOrDefault(qsp => qsp.GetApplicableLanguageCode().Equals(item.LanguageCode)); bool isValidKnowledgeBaseId = await applicableQnaServiceProvider.IsKnowledgeBaseIdValid(item.KnowledgeBaseId).ConfigureAwait(false); if (isValidKnowledgeBaseId) { LanguageKBConfigurationEntity langKBConfigEntity = new LanguageKBConfigurationEntity(); langKBConfigEntity.TeamId = teamIdAfterParse; langKBConfigEntity.KnowledgeBaseId = item.KnowledgeBaseId; langKBConfigEntity.ChangeLanguageMessageText = item.WelcomeMessage; langKBConfigEntity.HelpTabText = item.HelpTabText; langKBConfigEntity.PartitionKey = "LanguageKBConfiguration"; langKBConfigEntity.QnaMakerEndpointKey = langQnaDetails.QnAMakerSubscriptionKey; langKBConfigEntity.RowKey = item.LanguageCode; bool isSaved = await this.configurationProvider.UpsertLanguageKBConfigurationEntityAsync(item.LanguageCode, langKBConfigEntity); if (isSaved) { return(new HttpStatusCodeResult(HttpStatusCode.OK)); } else { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Sorry, unable to save the team id due to an internal error. Try again.")); } } else { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "The provided knowledgebase id is not valid.")); } } }