public static async Task SubmitCaseDeflection(IDialogContext context, CaseDetail caseDetail, Contact contact) { try { var stringContent = new StringContent("{" + "\"adx_name\":\"" + caseDetail.categoryName + " Case for " + contact.Fullname + " regarding " + caseDetail.productName + "\"," + "\"adx_casetitle\":\"" + caseDetail.categoryName + " Case for " + contact.Fullname + " regarding " + caseDetail.productName + "\"," + "\"a1a_description\":\"" + caseDetail.problemString + "\"," + "\"[email protected]\":\"/contacts(" + contact.ContactId + ")\"," + "\"[email protected]\":\"/products(" + caseDetail.productId.ToString() + ")\"," + "\"[email protected]\":\"/knowledgearticles(" + caseDetail.kbItemResults[caseDetail.kbItemResultsIndex]["knowledgearticleid"].ToString() + ")\"" + "}", System.Text.Encoding.UTF8, "application/json"); var str = stringContent.ReadAsStringAsync(); HttpResponseMessage caseResponse = await CRMWebAPIRequest("/api/data/v9.0/adx_casedeflections", stringContent, "create"); if (caseResponse.IsSuccessStatusCode) { await context.PostAsync(Utilities.RandomPhrase(Common.Dialogs.articleUsefulDialog)); } else { await SubmitCaseDeflection(context, caseDetail, contact); } } catch (Exception) { await SubmitCaseDeflection(context, caseDetail, contact); } }
public static async Task SubmitCaseAsync(IDialogContext context, CaseDetail caseDetail, Contact contact) { try { var stringContent = new StringContent("{" + "\"title\":\"" + caseDetail.categoryName + " Case for " + contact.Fullname + " regarding " + caseDetail.productName + "\"," + "\"description\":\"" + caseDetail.problemString + "\"," + "\"[email protected]\":\"/contacts(" + contact.ContactId + ")\"," + "\"[email protected]\":\"/products(" + caseDetail.productId.ToString() + ")\"," + "\"[email protected]\":\"/categories(" + caseDetail.categoryId.ToString() + ")\"," + "\"caseorigincode\":" + Convert.ToInt32(WebConfigurationManager.AppSettings["LiveAssistCaseOriginCode"].ToString()) + string.Empty + "}", System.Text.Encoding.UTF8, "application/json"); HttpResponseMessage caseResponse = await CRMWebAPIRequest("/api/data/v9.0/incidents", stringContent, "create"); if (caseResponse.IsSuccessStatusCode) { Guid caseId = new Guid(); string caseDetailsRequest = string.Empty; string caseUri = caseResponse.Headers.GetValues("OData-EntityId").FirstOrDefault(); if (caseUri != null) { caseId = Guid.Parse(caseUri.Split('(', ')')[1]); caseDetailsRequest = "api/data/v9.0/incidents(" + caseId + ")?" + "$select=ticketnumber"; HttpResponseMessage caseDetailsResponse = await CRMWebAPIRequest(caseDetailsRequest, null, "retrieve"); if (caseDetailsResponse.IsSuccessStatusCode) { string myString = caseDetailsResponse.Content.ReadAsStringAsync().Result; JObject caseResults = JObject.Parse(caseDetailsResponse.Content.ReadAsStringAsync().Result); string ticketNumber = (string)caseResults["ticketnumber"]; await context.PostAsync("Sorry to hear that. Here's your ticket number: " + ticketNumber + ". " + Utilities.RandomPhrase(Common.Dialogs.articleNotUsefulDialog)); context.Wait(Escalate); } else { await SubmitCaseAsync(context, caseDetail, contact); } } else { await SubmitCaseAsync(context, caseDetail, contact); } } } catch (Exception) { await SubmitCaseAsync(context, caseDetail, contact); } //context.Done<bool>(true); }