/// <summary> /// Выполнить команду /// </summary> protected override async Task InternalExecute(Channel channel, StasisStartEventArgs args) { if (!(args is MuteStasisEventArgs model)) { throw new ArgumentException($"Не правильный тип аргумента {nameof(args)}"); } var muteStatusData = model.MuteStatusData; try { var muteChannel = await ChannelRepository.GetChannelByCallId(muteStatusData.CallId); if (muteStatusData.Muted) { await AriClient.MuteChannel(muteChannel.ChannelId, "in"); } else { await AriClient.UnmuteChannel(muteChannel.ChannelId, "in"); } } catch (Exception ex) { Logger.Warning(ex.Message); throw new Exception($"Не удалось установить параметр мюте со значением {model.MuteStatusData.Muted}"); } }
/// <summary> /// Выполнить команду /// </summary> protected override async Task InternalExecute(Channel channel, StasisStartEventArgs args) { if (!(args is IsolationStasisStartEventArgs model)) { return; } var isolationData = model.IsolationStatusData; try { var isolationChannel = await ChannelRepository.GetChannelByCallId(isolationData.CallId); if (isolationData.Isolated) { await AriClient.MuteChannel(isolationChannel.ChannelId); } else { await AriClient.UnmuteChannel(isolationChannel.ChannelId); } } catch (Exception ex) { Logger.Warning(ex.Message); throw new Exception($"Не удалось установить параметр изоляции со значением {isolationData.Isolated}"); } }