Exemple #1
0
        private void RefreshActiveChannels()
        {
            var readedChannels = new List <ActiveChannelsDto>();

            using (var cmd = new MySqlCommand("SELECT * FROM asterisk.ActiveChannels where Application = 'queue' and BridgeId is null", _dbRefreshConnection))
                using (var dataReader = cmd.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        readedChannels.Add(new ActiveChannelsDto
                        {
                            UniqueId     = dataReader.GetNullableString("UniqueID"),
                            Channel      = dataReader.GetNullableString("Channel"),
                            CallerIdNum  = dataReader.GetNullableString("CallerIDNum"),
                            ChannelState = dataReader.GetNullableString("ChannelState"),
                            AnswerTime   = dataReader.GetNullableDateTime("AnswerTime"),
                            CreateTime   = dataReader.GetNullableDateTime("CreateTime")
                        });
                    }
                    dataReader.Close();
                }
            var remotedChannels = ActiveChannels.Where(n => readedChannels.All(c => c.UniqueId != n.UniqueId)).ToList();
            var newChannels     = readedChannels.Where(n => ActiveChannels.All(c => c.UniqueId != n.UniqueId)).ToList();

            newChannels.ForEach(c => ActiveChannels.Add(c));
            remotedChannels.ForEach(c => ActiveChannels.Remove(c));
        }
        public async Task JoinChannelAsync(string group, string user)
        {
            if (!IsConnected || ActiveChannels.ContainsKey(group))
            {
                return;
            }

            await hubConnection.SendAsync("AddToGroup", group, user);

            ActiveChannels.Add(group, user);
        }
Exemple #3
0
 public void ConnectToChannel(string channelToJoin, Storage.ChannelConfig channelcfg)
 {
     MeebyIrcClient.RfcJoin("#" + channelToJoin);
     this.OnChannelJoining?.Invoke(channelToJoin);
     ActiveChannels.Add("#" + channelToJoin, new SuiBot_ChannelInstance(channelToJoin, BotConnectionConfig.Password, this, channelcfg));
 }