/// <summary> /// Add a new QnAKnowledgebase to the database, and call EFQnARepository to /// create the new knowledgebase to QnAMaker.ai /// </summary> /// <param name="b">QnAKnowledgeBase name</param> /// <returns>true if registered, false if not</returns> public async Task <bool> AddNewQnAKnowledgeBaseAsync(QnAKnowledgeBase b) { string[] result = new string[2]; var q = await GetQnABotByIdAsync(b.QnABotId); b.RegDate = DateTime.Now; b.LastEdit = DateTime.Now; b.IsActive = false; var r = await qnaRepository.RegisterNewQnAKnowledgeBaseAsync(q, b); if (r != null) { b.KnowledgeBaseID = r; await db.AddAsync(b); if (await db.SaveChangesAsync() > 0) { return(true); } else { return(false); } } else { return(false); } }
public IActionResult AddNewQnAKnowledgeBaseAsync(int id) { var q = new QnAKnowledgeBase { QnABotId = id }; return(View(q)); }
/// <summary> /// Register a new chatbot in the database /// </summary> /// <param name="qnabot">QnABaseClass chatbot to be registered</param> /// <returns>r[0] = operationresult, r[1] = chatbotname, r[2] = result from QnAKnowledgeBase creation</returns> public async Task <string[]> RegisterNewQnABotAsync(QnABaseClass qnabot) { string[] r = new string[3]; var qna = new QnABaseClass { chatbotName = qnabot.chatbotName, regDate = DateTime.Now, lastEdit = DateTime.Now, isActive = false, subscriptionKey = qnabot.subscriptionKey, knowledgeBaseID = qnabot.knowledgeBaseID }; await db.QnABaseClass.AddAsync(qna); if (await db.SaveChangesAsync() > 0) { r[0] = "success"; r[1] = qna.chatbotName; } else { r[0] = "error"; r[1] = qna.chatbotName; } var q = await GetQnABotByNameAsync(qna.chatbotName); if (qna.knowledgeBaseID != null) { var klb = new QnAKnowledgeBase { KnowledgeBaseID = q.knowledgeBaseID, QnABotId = q.QnAId, RegDate = DateTime.Now, LastEdit = DateTime.Now, IsActive = false, QnAKnowledgeName = "navn mangler" }; if (await RegisterNewQnAKnowledgeBaseAsync(klb)) { r[2] = "success"; return(r); } else { r[2] = "error"; return(r); } } else { r[2] = "error"; return(r); } }
/// <summary> /// Fetch QnAKnowledgebase from db /// </summary> /// <param name="id">knowledgebase id in database</param> /// <returns>found QnAKnowledgeBase</returns> public async Task <QnAKnowledgeBase> GetQnAKnowledgeBaseAsync(int id) { QnAKnowledgeBase q = await db.QnAKnowledgeBase.FirstOrDefaultAsync(X => X.QnAKnowledgeBaseId == id); List <QnAPairs> qPairs = await db.QnAPairs.Where(X => X.KnowledgeBaseId == q.QnAKnowledgeBaseId).ToListAsync(); q.QnAPairs = qPairs; var conversationCount = await Task.Run(() => db.Conversations.Count(x => x.KnowledgebaseId == q.QnAKnowledgeBaseId)); q.ConversationCount = conversationCount; return(q); }
/// <summary> /// Register a new knowledgebase in the database. This only happens if you /// register a new chatbot with a knowledgebase already exsisting /// </summary> /// <param name="klb">knowledgebase id from microsoft</param> /// <returns>true if ok, false if not</returns> private async Task <bool> RegisterNewQnAKnowledgeBaseAsync(QnAKnowledgeBase klb) { await db.QnAKnowledgeBase.AddAsync(klb); var r = await db.SaveChangesAsync(); if (r < 0) { return(true); } else { return(false); } }
public async Task <IActionResult> AddNewQnAKnowledgeBaseAsync([FromForm][Bind("QnABotId", "QnAKnowledgeName")] QnAKnowledgeBase b) { var r = await chatbotRepository.AddNewQnAKnowledgeBaseAsync(b); if (r) { TempData["success"] = String.Format("Kunnskapsbase med navn {0} er registrert!", b.QnAKnowledgeName); return(RedirectToAction("QnABots", new { id = b.QnABotId })); } else { TempData["error"] = String.Format("Kunnskapsbase med navn {0} ble ikke registrert!", b.QnAKnowledgeName); return(RedirectToAction("QnABots", new { id = b.QnABotId })); } }
private static async Task AddKnowledgeBase(ApplicationDbContext context) { var qna = new QnAKnowledgeBase { QnABotId = 1, QnAKnowledgeName = "SvartaBjorn_QnA", RegDate = DateTime.Now, LastEdit = DateTime.Now, IsActive = true, //SubscriptionKey = "7d26f05ae72842478df8fdca921de66d", KnowledgeBaseID = "025fd52b-e8d7-43aa-a10f-e8f9bde3e369" }; await context.AddAsync(qna); await context.SaveChangesAsync(); }
/// <summary> /// Delete the given QnAKnowledgeBase from QnAMaker.ai /// </summary> /// <param name="q">QnABaseClass q</param> /// <param name="b">QnAKnowledgeBase b</param> /// <returns>true if deleted, false if not</returns> public async Task <bool> DeleteKnowledgeBase(QnABaseClass q, QnAKnowledgeBase b) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", q.subscriptionKey); HttpResponseMessage response; var uri = b.DeleteQnAKnowledgeBase; response = await client.DeleteAsync(uri); if (response.IsSuccessStatusCode) { return(true); } else { return(false); } }
/// <summary> /// Register the given knowledgebase at the given qna chatbot at QnAMaker.ai /// </summary> /// <param name="q">QnABaseClass q</param> /// <param name="b">QnAKnowledgeBase b</param> /// <returns>KnowledgeBase Id-string from QnAMaker.ai</returns> public async Task <String> RegisterNewQnAKnowledgeBaseAsync(QnABaseClass q, QnAKnowledgeBase b) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", q.subscriptionKey); HttpResponseMessage response; var uri = b.CreateNewQnAKnowledgeBase; string c = "{'name':'" + b.QnAKnowledgeName + "'}"; // Request body byte[] byteData = Encoding.UTF8.GetBytes(c); using (var content = new ByteArrayContent(byteData)) { content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); response = await client.PostAsync(uri, content); } JObject o = JObject.Parse(response.Content.ReadAsStringAsync().Result); var kbId = (string)o.SelectToken("['kbId']"); return(kbId); }
private static async Task <string> UpdateQueryQnABot(string newQuestion, string newAnswer, Mode paramMode) { string strResponse = ""; // crea una entrada de base de conocimiento QnAKnowledgeBase objQnAKnowledgeBase = new QnAKnowledgeBase(); QnaPair objQnaPair = new QnaPair(); objQnaPair.question = newQuestion; objQnaPair.answer = newAnswer; if (paramMode == Mode.Add) { Add objAdd = new Add(); objAdd.qnaPairs = new List <QnaPair>(); objAdd.urls = new List <string>(); objAdd.qnaPairs.Add(objQnaPair); objQnAKnowledgeBase.add = objAdd; } if (paramMode == Mode.Delete) { Delete objDelete = new Delete(); objDelete.qnaPairs = new List <QnaPair>(); objDelete.urls = new List <string>(); objDelete.qnaPairs.Add(objQnaPair); objQnAKnowledgeBase.delete = objDelete; } using (System.Net.Http.HttpClient client = new System.Net.Http.HttpClient()) { string RequestURI = String.Format("{0}{1}{2}{3}? ", @"https://westus.api.cognitive.microsoft.com/", @"qnamaker/v2.0/", @"knowledgebases/", _KnowledgeBase); using (HttpRequestMessage request = new HttpRequestMessage(new HttpMethod("PATCH"), RequestURI)) { request.Content = new StringContent( JsonConvert.SerializeObject(objQnAKnowledgeBase), System.Text.Encoding.UTF8, "application/json"); request.Content.Headers.Add( "Ocp-Apim-Subscription-Key", _OcpApimSubscriptionKey); HttpResponseMessage response = await client.SendAsync(request); if (response.IsSuccessStatusCode) { strResponse = $"Operation {paramMode} completed."; } else { string responseContent = await response.Content.ReadAsStringAsync(); strResponse = responseContent; } } } return(strResponse); }