public async Task SetVoiceSettingsAsync(Action <VoiceProperties> func, RequestOptions options = null) { if (func == null) { throw new NullReferenceException(nameof(func)); } var settings = new VoiceProperties(); settings.Input = new VoiceDeviceProperties(); settings.Output = new VoiceDeviceProperties(); settings.Mode = new VoiceModeProperties(); func(settings); var model = new API.Rpc.VoiceSettings { AutomaticGainControl = settings.AutomaticGainControl, EchoCancellation = settings.EchoCancellation, NoiseSuppression = settings.NoiseSuppression, QualityOfService = settings.QualityOfService, SilenceWarning = settings.SilenceWarning }; model.Input = new API.Rpc.VoiceDeviceSettings { DeviceId = settings.Input.DeviceId, Volume = settings.Input.Volume }; model.Output = new API.Rpc.VoiceDeviceSettings { DeviceId = settings.Output.DeviceId, Volume = settings.Output.Volume }; model.Mode = new API.Rpc.VoiceMode { AutoThreshold = settings.Mode.AutoThreshold, Delay = settings.Mode.Delay, Threshold = settings.Mode.Threshold, Type = settings.Mode.Type }; if (settings.Input.AvailableDevices.IsSpecified) { model.Input.AvailableDevices = settings.Input.AvailableDevices.Value.Select(x => x.ToModel()).ToArray(); } if (settings.Output.AvailableDevices.IsSpecified) { model.Output.AvailableDevices = settings.Output.AvailableDevices.Value.Select(x => x.ToModel()).ToArray(); } if (settings.Mode.Shortcut.IsSpecified) { model.Mode.Shortcut = settings.Mode.Shortcut.Value.Select(x => x.ToModel()).ToArray(); } await ApiClient.SetVoiceSettingsAsync(model, options).ConfigureAwait(false); }
public async Task SetVoiceSettingsAsync(API.Rpc.VoiceSettings settings, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); await SendRpcAsync <API.Rpc.VoiceSettings>("SET_VOICE_SETTINGS", settings, options : options).ConfigureAwait(false); }