예제 #1
0
        /// <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}");
            }
        }