コード例 #1
0
ファイル: ChatService.cs プロジェクト: uwitec/ideacode
    /// <summary>
    /// 客服主动邀请对话
    /// </summary>
    /// <param name="operatorId">客服ID</param>
    /// <param name="visitorId"></param>
    public static Chat OperatorRequestChat(string operatorId, string visitorId)
    {
        Trace.WriteLine(string.Format("ChatService.OperatorRequestChat(OperatorId = {0},VisitorId = {1})", operatorId, visitorId));
        Visitor  visitor = VisitorService.GetVisitorById(visitorId);
        Operator op      = OperatorService.GetOperatorById(operatorId);

        if (visitor == null || op == null)
        {
            Trace.WriteLine(string.Format("Error: ChatService.OperatorRequestChat({0},{1}) error Opertor or Visitor is null", operatorId, visitorId));
            return(null);
        }

        Chat chat = new Chat();

        chat.IsInviteByOperator = true;
        chat.CreateBy           = op.NickName;
        chat.CreateTime         = DateTime.Now;
        chat.LastCheckTime      = DateTime.Now.Ticks;
        chat.AccountId          = op.AccountId;
        chat.VisitorId          = visitorId;
        chat.OperatorId         = operatorId;
        chats.Add(chat);
        Provider.AddChat(chat);

        op.Status   = OperatorStatus.InviteChat;//将客服改为请求中
        chat.Status = ChatStatus.Requested;
        //VisitSessionService.SetSessionStatus(visitor.CurrentSessionId, VisitSessionStatus.ChatRequesting);

        if (OperatorChatRequest != null)
        {
            var req = new OperatorChatRequestEventArgs(operatorId, visitorId, chat);
            OperatorChatRequest(null, req);
        }

        Message m = new Message();

        m.ChatId = chat.ChatId;
        m.Text   = "正在邀请访客,请稍等...";
        m.Type   = MessageType.SystemMessage_ToOperator;
        SendMessage(m, DateTime.Now.AddMilliseconds(50));

        return(chat);
    }