public RedemptionView(RequestQueueIngest rqi) { Id = rqi.Id; RewardId = rqi.RewardId; RequesterId = rqi.RequesterId; RequesterDisplayName = rqi.RequesterDisplayName; IsSubOrHigher = rqi.IsSubOrHigher; RawMessage = rqi.RawMessage; RedemptionId = rqi.RedemptionId; RequestTimestamp = rqi.RequestTimestamp; }
public async Task <bool> SkipCurrentTtsRequest(int roomId, bool wasTimedOut = false) { RequestQueueIngest rqi = _ttsDbContext.RequestQueueIngest .Include(r => r.Reward) .FirstOrDefault(r => r.Reward.ChannelId == roomId); if (rqi is null) { return(false); } return(await SkipTtsRequest(roomId, rqi.RedemptionId)); }
public async Task <bool> SkipTtsRequest(int roomId, string redemptoinId = null, bool wasTimedOut = false) { RequestQueueIngest rqi = _ttsDbContext.RequestQueueIngest .Include(r => r.Reward) .FirstOrDefault(r => r.RedemptionId == redemptoinId); if (rqi is null || rqi.Reward.ChannelId != roomId) { return(false); } // Do we need to skip the currently playing one? if (TtsHandler.ActiveRequests.TryGetValue(rqi.Reward.ChannelId, out string activeRedemptionId) && activeRedemptionId == rqi.RedemptionId) { List <string> clients = TtsHandler.ConnectClients .Where(pair => pair.Value == roomId.ToString()) .Select(pair => pair.Key) .Distinct() .ToList(); if (clients.Any()) { await _ttsHub.Clients.Clients(clients).TtsSkipCurrent(); } else { await _ttsHandler.MoveRqiToTtsLog(rqi.RedemptionId, wasTimedOut ?MessageType.NotPlayedTimedOut : MessageType.Skipped ); } } else { await _ttsHandler.MoveRqiToTtsLog(rqi.RedemptionId, wasTimedOut ?MessageType.NotPlayedTimedOut : MessageType.SkippedBeforePlaying ); } return(true); }
public static IEnumerable <TtsMessagePart> SplitMessage(RequestQueueIngest rqi) { List <string> messageSplit = SplitMessageToClosestWordToLimit(rqi); if (!rqi.Reward.IsConversation) { Voice voice = rqi.Reward.Voice; Engine engine = GetEngine(rqi, voice); bool useFallback = !rqi.Reward.Channel.AllowNeuralVoices && engine == Engine.Neural; return(new List <TtsMessagePart> { new() { Message = string.Join(' ', messageSplit), VoiceId = useFallback ? FallbackVoiceId : voice.Id, Engine = useFallback ? FallbackEngine : engine, PlaybackSpeed = rqi.Reward.DefaultPlaybackSpeed, Volume = rqi.Reward.Channel.Volume } });