Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }