Stworzyłem funkcję do udostępniania informacji zwrotnych z agentami, którzy obsługiwał czaty z klienta. Opinia wymaga udostępniania pocztą elektroniczną od programu Outlook. Przetestowałem kod i działa świetnie na moim lokalnym komputerze. Problem przychodzi, gdy ktoś inny otwiera webApp na swoim lokalnym komputerze i audytu. Niektórzy jeden inspekcyjny czat na swoim lokalnym PC otwiera program Outlook, aby udostępnić informacje zwrotne na moim komputerze zamiast otwierania na własnym komputerze.

Czy ktoś można pomocić z poniższym kodem i pomóż mi zrozumieć, co to ma się wydarzyć? I jak mogę to rozwiązać?

Metoda działania zwrotnego

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult ShareFeedback(Chat model)
        {
            int id = model.ChatId;

            var q1yes = "30";
            var q1no = "0";

            var q2yes = "10";
            var q2no = "0";

            var q3yes = "25";
            var q3no = "0";

            var q4yes = "35";
            var q4no = "0";

            if (!ModelState.IsValid)
            {
                return View(model);
            }
            int dtoId;

            using (Db db = new Db())
            {
                
                Chat dto = db.Chats.Where(x => x.ChatId == id).FirstOrDefault();
                dto.Feedback = model.Feedback;
                dto.FeedbackDateTime = DateTime.Now;
                

                if(model.Question1 == "Yes")
                {
                    dto.Question1 = q1yes;
                }
                else
                {
                    dto.Question1 = q1no;
                }

                if (model.Question2 == "Yes")
                {
                    dto.Question2 = q2yes;
                }
                else
                {
                    dto.Question2 = q2no;
                }

                if (model.Question3 == "Yes")
                {
                    dto.Question3 = q3yes;
                }
                else
                {
                    dto.Question3 = q3no;
                }

                if (model.Question4 == "Yes")
                {
                    dto.Question4 = q4yes;
                }
                else
                {
                    dto.Question4 = q4no;
                }


                dto.ErrorGrade = model.ErrorGrade;

                if (model.ErrorGrade == "Low")
                {
                    float total = float.Parse(dto.Question1) + float.Parse(dto.Question2) + float.Parse(dto.Question3) + float.Parse(dto.Question4);
                    dto.QualityScore = total;
                }
                if (model.ErrorGrade == "Medium")
                {
                    float total = float.Parse(dto.Question1) + float.Parse(dto.Question2) + float.Parse(dto.Question3) + float.Parse(dto.Question4);
                    float medtotal = total / 2;

                    dto.QualityScore = medtotal;
                }

                if (model.ErrorGrade == "High")
                {
                    float total = 00;
                    dto.QualityScore = total;
                }

                if(model.ErrorGrade == null)
                {
                    float total = float.Parse(dto.Question1) + float.Parse(dto.Question2) + float.Parse(dto.Question3) + float.Parse(dto.Question4);
                    dto.QualityScore = total;
                }

                var uName = User.Identity.Name;

                User userDTO = db.Users.Where(x => x.Username == uName).FirstOrDefault();
                dto.FeedbackSharedBy = userDTO.Username;
                dto.AuditorEmail = userDTO.Email;
                

                db.SaveChanges();

                dtoId = dto.ChatId;
                
            }
            using (Db db = new Db())
            {
                Chat dto = db.Chats.Find(dtoId);

                Application app = new Application();
                MailItem mailItem = app.CreateItem(OlItemType.olMailItem);

                if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
                { 
                
                mailItem.Subject = "Feedback: Chat handled on " + dto.ChatCreateDateTime + " For Customer " + dto.CustName;
                mailItem.To = dto.Email;
                mailItem.CC = "saurabhwa@cybage.com;sagargo@cybage.com;anacletem@cybage.com;riyazsh@cybage.com";
                mailItem.HTMLBody = "Hello " + dto.FirstName + "<br /><br />" + " <b>Res Time:</b> " + string.Format("<b>{0:hh\\:mm\\:ss}</b>", dto.ChatEndDateTime - dto.ChatStartDateTime)
                 + " <b>AHT:</b> " + string.Format("<b>{0:hh\\:mm\\:ss}</b>", dto.ChatEndDateTime - dto.ChatCreateDateTime) + " <b>Promptness:</b> " + string.Format("<b>{0:hh\\:mm\\:ss}</b>", dto.ChatCreateDateTime - dto.ChatStartDateTime) + "<br/><br/>" + "Your score for this Chat audit is : " + "<b>" + dto.QualityScore + "%</b>" + "<br /><br />" + "<b>Feedback:</b>" + "<br /><br />" + dto.Feedback;
                mailItem.Importance = OlImportance.olImportanceHigh;
                mailItem.Display(false);
                }
            }

                return RedirectToAction("StartQMS");
        }
    

Pomoc jest bardzo doceniana.

0
Riyaz Shaikh 21 listopad 2020, 21:59

1 odpowiedź

Najlepsza odpowiedź

Cóż, oczywiście, twój kod jest wykonywany na swoim serwerze , a nie na maszynie klienta .

Oprócz faktu, że używasz programu Outlook z usługi Windows (IIS), co jest wielkim no-nie, musisz uruchomić kod po stronie klienta, np. Z skryptu Java na stronie serwowanej przez serwer do przeglądarki klienta.

I nie możesz używać Outlook z JS, chyba że pracujesz w IE, a Twoja witryna jest zaufana. Najlepsze, co możesz zrobić, to dostarczyć użytkownikowi link "Mailto:", który może wysłać nowe okno e-mail z wstępnie zaludnionym przedmiotem, organem i odbiorcami.

3
Dmitry Streblechenko 27 listopad 2020, 18:05