private void c_OnChannelEnteredBridgeEvent(object sender, ChannelEnteredBridgeEvent e) { ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == e.Channel.Id); if (confUser == null) { return; } confUser.State = ConferenceUserState.InConf; if (ConferenceUsers.Count(x => x.State == ConferenceUserState.InConf) > 1) // are we the only ones here { // stop moh _client.Bridges.StopMoh(Confbridge.Id); // change state State = ConferenceState.Ready; // announce new user _client.Bridges.Play(Confbridge.Id, "recording:" + confUser.CurrentRecodingId, "en", 0, 0, Guid.NewGuid().ToString()); _client.Bridges.Play(Confbridge.Id, "sound:conf-hasjoin", "en", 0, 0, Guid.NewGuid().ToString()); } else { // only caller in conf _client.Channels.Play(e.Channel.Id, "sound:conf-onlyperson", "en", 0, 0, Guid.NewGuid().ToString()); } }
private void c_OnChannelDtmfReceivedEvent(object sender, ChannelDtmfReceivedEvent e) { ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == e.Channel.Id); if (confUser == null) { return; } // Pass digit to conference user confUser.KeyPress(e.Digit); }
public void RemoveUser(string channelId) { // Remove the channel from the bridge ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == channelId); if (confUser == null) { return; } _client.Bridges.RemoveChannel(Confbridge.Id, channelId); ConferenceUsers.Remove(confUser); }
void c_OnChannelTalkingStartedEvent(object sender, ChannelTalkingStartedEvent e) { ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == e.Channel.Id); Console.WriteLine("{0} Started to talk in conference {1}", e.Channel.Id, this.ConferenceName); }
void c_OnChannelTalkingFinishedEvent(object sender, ChannelTalkingFinishedEvent e) { ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == e.Channel.Id); Console.WriteLine("{0} Finished talking in conference {1}, lasted {2} milliseconds", e.Channel.Id, this.ConferenceName, e.Duration); }