public async Task <ActionResult <AudioStatusResponse> > GetAudioStatus(string sipAddress) { return(await Execute(sipAddress, async (codecApi, codecInformation) => { var audioStatus = await codecApi.GetAudioStatusAsync(codecInformation.Ip, codecInformation.NrOfInputs, codecInformation.NrOfGpos); var model = new AudioStatusResponse() { Gpos = audioStatus.Gpos, InputStatus = audioStatus.InputStatus, VuValues = audioStatus.VuValues }; return model; })); }
private async Task CheckAudioStatusOnCodecAsync(string sipAddress) { try { // Get codec template data from CCM var codecInformation = await _ccmService.GetCodecInformationBySipAddress(sipAddress); // TODO: Not every time???? if (codecInformation == null) { log.Info($"Codec {sipAddress} is not currently registered in CCM, could't get codec information"); return; } var codecApiType = codecInformation?.CodecApiType; var codecApi = codecApiType != null?_serviceProvider.GetService(codecApiType) as ICodecApi : null; if (codecApi == null || string.IsNullOrEmpty(codecInformation.Ip)) { log.Info($"Missing information for connecting to codec {sipAddress}"); return; } var audioStatus = await codecApi.GetAudioStatusAsync(codecInformation.Ip, codecInformation.NrOfInputs, codecInformation.NrOfGpos); var model = new AudioStatusResponse() { Gpos = audioStatus.Gpos, InputStatus = audioStatus.InputStatus, VuValues = audioStatus.VuValues }; await SendAudioStatusToClients(sipAddress, model); } catch (UnableToConnectException ex) { log.Warn($"AudioStatusService Exception unable to connect to {sipAddress}."); log.Trace(ex, "AudioStatusService Exception"); } catch (CodecInvocationException ex) { log.Warn($"AudioStatusService Failed to check audio status on {sipAddress}. {ex.Message}"); } catch (Exception ex) { log.Warn(ex, $"AudioStatusService Exception when checking audio status on {sipAddress}"); } }
private async Task SendAudioStatusToClients(string sipAddress, AudioStatusResponse audioStatus) { await _hub.Clients.Group(sipAddress).SendAsync("AudioStatus", sipAddress, audioStatus); }