Example #1
0
        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);
 }