示例#1
0
        public void Bcm_PresenceChanged(ObiUser usr, Bcm_to_Lync_Rule rule)
        {
            lock (this)
            {
                try
                {
                    m_log.Log("BCM presence changed: " + usr.logId + " - rule:" + rule.rId);

                    if (usr.LS.Sticky)
                    {
                        m_log.Log("User " + usr.logId + " lync state sticky, ignoring bcm state");
                        return;
                    }
                    if (usr.LS.LoginState)
                    {
                        if (rule.LyncOnline != null)
                        {
                            if (usr.LS.IsDifferent(rule.LyncOnline))
                            {
                                //m_Lync.SetPresence(usr, rule.LyncOnline, rule);
                                m_Lync.SetPresence(usr, rule.LyncOnline, rule);
                            }
                            else
                            {
                                m_log.Log("BCM change - no state change in Lync for " + usr.logId);
                            }
                        }
                        else
                        {
                            m_log.Log("BCM change - no rule for online lync " + usr.logId);
                        }
                    }
                    else
                    {
                        if (rule.LyncOffline != null)
                        {
                            if (usr.LS.IsDifferent(rule.LyncOffline))
                            {
                                m_Lync.SetPresence(usr, rule.LyncOffline, rule);
                            }
                            else
                            {
                                m_log.Log("BCM change - no state change in Lync");
                            }
                        }
                        else
                        {
                            m_log.Log("BCM change - no rule for offline lync");
                        }
                    }
                }
                catch (Exception e)
                {
                    m_log.Log("Exception in Bcm_PresenceChanged: " + e);
                }
            }
        }
示例#2
0
        public ObiUser getUser(string sId)
        {
            ObiUser u = getUserBCM(sId);

            if (u == null)
            {
                u = getUserLync(sId);
            }
            return(u);
        }
示例#3
0
        public ObiUser getUserLync(string sUri)
        {
            ObiUser u = null;

            lock (this)
            {
                if (m_UsersLync.TryGetValue(sUri, out u) == false)
                {
                    u = null;
                }
            }
            return(u);
        }
示例#4
0
        ///////////////////////////////////////////////
        // PresenceListener methods

        public ObiUser getUserBCM(string sBcmId)
        {
            ObiUser u = null;

            lock (this)
            {
                if (m_UsersBcm.TryGetValue(sBcmId, out u) == false)
                {
                    u = null;
                }
            }
            return(u);
        }
示例#5
0
 public void removeUser(ObiUser u)
 {
     lock (this)
     {
         if (m_UsersBcm.ContainsKey(u.UserId))
         {
             m_UsersBcm.Remove(u.UserId);
         }
         if (m_UsersLync.ContainsKey(u.Uri))
         {
             m_UsersLync.Remove(u.Uri);
         }
     }
 }
示例#6
0
 public void addUser(ObiUser u)
 {
     lock (this)
     {
         if (m_UsersBcm.ContainsKey(u.UserId))
         {
             m_UsersBcm.Remove(u.UserId);
         }
         m_UsersBcm[u.UserId] = u;
         if (m_UsersLync.ContainsKey(u.Uri))
         {
             m_UsersLync.Remove(u.Uri);
         }
         m_UsersLync[u.Uri] = u;
     }
 }
示例#7
0
 public void Bcm_UserPresenceTerminated(ObiUser usr)
 {
 }
示例#8
0
 public void Bcm_UserPresenceStarted(ObiUser usr)
 {
 }
示例#9
0
 public void Lync_UserPresenceTerminated(ObiUser usr)
 {
     m_log.Log("Presence terminated:" + usr.logId);
 }
示例#10
0
 public void Lync_UserPresenceStarted(ObiUser usr)
 {
     m_log.Log("Presence started:" + usr.logId);
 }
示例#11
0
 public void Bcm_PresenceUpdated(ObiUser usr)
 {
     m_log.Log("Bcm presence updated:" + usr.logId);
 }
示例#12
0
 public void Bcm_PresenceChanged(ObiUser usr)
 {
     m_log.Log("BCM_PresenceChanged - no rule, unimplemented");
 }
示例#13
0
 public void Lync_PresenceUpdated(ObiUser usr)
 {
     m_log.Log("Lync presence updated:" + usr.logId);
 }
示例#14
0
        public void Lync_PresenceChanged(ObiUser usr)
        {
            lock (this)
            {
                m_log.Log("Lync presence changed: " + usr.logId + " - " + usr.LS.BaseString);

                if (m_sync_direction == SyncDirection.BCM_2_Lync)                 // only BCM->Lync used
                {
                    return;
                }

                if (usr.LS != null)
                {
                    try
                    {
                        Lync_to_Bcm_Rule rule = null;
                        if (usr.BS.Sticky)
                        {
                            m_log.Log("User " + usr.logId + " lync state change, sticky bcm state on, ignoring");
                            return;
                        }

                        // TOCHECK: PROFILE GROUP BASED SETTING ???
                        if (m_use_bcm_directory > 0)
                        {
                            rule = usr.ProfileGroup.findLync2BcmRule(usr.LS);
                            if (rule != null)
                            {
                                m_BCM.SetPresenceDirectory(usr, rule.BcmOnline.Name);
                            }
                            return;
                        }


                        if (usr.ProfileGroup != null)
                        {
                            rule = usr.ProfileGroup.findLync2BcmRule(usr.LS);
                            if (rule != null)
                            {
                                string sBcmPro = null;
                                if (usr.BS.LoginState)
                                {
                                    if (rule.BcmOnline != null)
                                    {
                                        m_log.Log("user " + usr.logId + " changing online profile to " + rule.BcmOnline.BcmID + "," + rule.BcmOnline.Name);
                                        sBcmPro = rule.BcmOnline.BcmID;
                                    }
                                }
                                else
                                {
                                    if (rule.BcmOffline != null)
                                    {
                                        m_log.Log("user " + usr.logId + " changing offline profile to " + rule.BcmOffline.BcmID + "," + rule.BcmOffline.Name);
                                        sBcmPro = rule.BcmOffline.BcmID;
                                    }
                                }
                                if (Util.IsNullOrEmpty(sBcmPro))
                                {
                                    m_log.Log("User " + usr.logId + " bcm rule empty - ignoring");
                                }
                                else
                                {
                                    // check internal rules
                                    switch (sBcmPro)
                                    {
                                    case "_Talking":                                             // future: PSI call state
                                        m_log.Log("User " + usr.logId + " bcm rule _Talking");
                                        break;

                                    case "_EndCall":                                             // future: PSI call state
                                        m_log.Log("User " + usr.logId + " bcm rule _CallEnd");
                                        break;

                                    case "_PaperWork":
                                        m_log.Log("User " + usr.logId + " bcm rule _PaperWork");
                                        if (usr.BS.ServiceState != BcmServiceState.Paperwork)
                                        {
                                            m_BCM.SetPresence(usr, BcmServiceState.Paperwork);
                                        }
                                        else
                                        {
                                            m_log.Log("User " + usr.logId + " bcm already paperwork");
                                        }
                                        break;

                                    case "_Working":
                                        m_log.Log("User " + usr.logId + " bcm rule _Working");
                                        if (usr.BS.ServiceState != BcmServiceState.Working)
                                        {
                                            m_BCM.SetPresence(usr, BcmServiceState.Working);
                                        }
                                        else
                                        {
                                            m_log.Log("User " + usr.logId + " bcm already working");
                                        }
                                        break;

                                    case "_LateAdmin":
                                    case "_WrapUp":
                                        m_log.Log("User " + usr.logId + " bcm rule _WrapUp");
                                        if (usr.BS.ServiceState != BcmServiceState.WrapUp)
                                        {
                                            m_BCM.SetPresence(usr, BcmServiceState.WrapUp);
                                        }
                                        else
                                        {
                                            m_log.Log("User " + usr.logId + " bcm already wrapup");
                                        }
                                        break;

                                    case "_Previous":
                                        if (usr.prevBS != null)
                                        {
                                            if (usr.prevBS.Profile != null)
                                            {
                                                if (usr.prevBS.Profile.Type == BcmStateOption.Profile)
                                                {
                                                    m_BCM.SetPresence(usr, usr.prevBS.Profile.BcmID);
                                                }
                                            }
                                        }
                                        break;

                                    default:
                                        if (usr.BS.Profile != null && usr.BS.Profile.BcmID == sBcmPro)
                                        {
                                            m_log.Log("User " + usr.logId + " bcm profile already on, ignoring");
                                        }
                                        else
                                        {
                                            m_BCM.SetPresence(usr, sBcmPro);
                                        }
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                m_log.Log("User " + usr.logId + " no bcm rule - ignoring");
                            }
                        }
                        else
                        {
                            m_log.Log("User " + usr.logId + " has no profilegroup, ignoring");
                        }
                    }
                    catch (Exception ex)
                    {
                        m_log.Log("Exception in Lync_PresenceChanged", ex);
                    }
                }
            }
        }
示例#15
0
 public void Lync_PresenceChanged(ObiUser usr, Lync_to_Bcm_Rule rule)
 {
     m_log.Log("Unimplemented - Lync_PresenceChanged:" + usr.logId + " - rule " + rule.rId);
 }