/// <summary> /// 链接服务器 /// </summary> /// <returns></returns> public JsonResult ConnectionServer(string tid, string interactionID, string queueName , string agentID, string placeID, string nickName, string host, string port, int isMeeting) { AjaxReturn result = new AjaxReturn(); if (!string.IsNullOrEmpty(interactionID)) { LenovoAgent agent = new LenovoAgent() { TicketID = tid, InteractionID = interactionID, AgentId = agentID, PlaceId = placeID, DisplayName = nickName }; try { ChatLog.GetInstance().FormatMessage("连接ChatServer:sessionid-{0},queue-{1},agentID-{2},chatServer-{3}:{4}" , interactionID, queueName, agentID, host, port); AgentChatContext context = new AgentChatContext(tid, interactionID, agent); context.ChatServerHost = host; context.ChatServerPort = port; context.InitConnecton(); if (context.IsAvailableConnection) { string title = GetEmployeeTitle(queueName); context.ChatJoin(interactionID, title); if (isMeeting == 1) { context.SendMessage(interactionID, "<font color='red'>您已进入了多方支持。</font>"); } result.Code = 1; DateTime beginTime = context.Room.CreateDate; result.d = new { ChatBeginTime = beginTime.Ticks, ChatID = string.Format("{0}{1:yyyyMMddHHmmsshh}C", agentID, beginTime), StrChatBeginTime = beginTime.ToString("yyyy-MM-dd HH:mm:ss") }; //JsonResult jr = new JsonpResult() { Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; //string s=jr.ToString(); //ChatLog.GetInstance().FormatMessage("返回数据:【{0}】", s); } } catch (Exception ex) { ChatLog.GetInstance().LogException(ex); } } return(new JsonpResult() { Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }
/// <summary> /// 离开聊天 /// </summary> /// <returns></returns> public JsonResult LeftChat(string tid, string interactionID, string agentID, string queueName, int keepAlive) { string chatContent = string.Empty; if (!string.IsNullOrEmpty(interactionID)) { try { AgentChatContext context = new AgentChatContext(tid, interactionID, agentID); bool isKeepRoomAlive = (keepAlive == 1); context.LeftChat(isKeepRoomAlive); try { System.Threading.Thread.Sleep(100); chatContent = JsonConvert.SerializeObject(context.Room.Messages); } catch (Exception ex) { ChatLog.GetInstance().FormatMessage("异常信息:序列化聊天消息时异常。{0}", ex.Message); } chatContent = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(chatContent)); if (!isKeepRoomAlive) { // 移除缓存项 AgentCache.GetInstance().RemoveAgent(tid, agentID, interactionID); // Room从缓存移除 if (context.Room != null) { ChatRoomCache.GetInstance().RemoveItem(context.Room); ChatLog.GetInstance().FormatMessage("Room移除缓存。TicketID:{0},SessionID:{1},AgentID:{2}", tid, interactionID, agentID); } } // 记录日志 if (!string.IsNullOrEmpty(queueName)) { ChatLog.GetInstance().LogEvent(ChatEvent.TransferQueue, queueName); } else if (isKeepRoomAlive) { ChatLog.GetInstance().LogEvent(ChatEvent.TransferPerson, agentID); } } catch (Exception ex) { ChatLog.GetInstance().LogException(ex); } } return(new JsonpResult() { Data = chatContent, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }
/// <summary> /// 发送信息 /// </summary> /// <param name="message"></param> /// <returns></returns> public JsonResult SendMessage(string tid, string message, string interactionID, string agentID) { if (!string.IsNullOrEmpty(interactionID)) { try { var context = new AgentChatContext(tid, interactionID, agentID); context.SendMessage(interactionID, message); } catch (Exception ex) { ChatLog.GetInstance().LogException(ex); } } return(new JsonpResult() { Data = "", JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }