private async void AriClientOnStasisEndEvent(IAriClient sender, StasisEndEvent stasisEndEvent) { _logger.Info(stasisEndEvent.Channel.Id); if (!ConnectedLines.ContainsKey(stasisEndEvent.Channel.Id)) { return; } ConnectedLines[stasisEndEvent.Channel.Id].Hangup(); while (!ConnectedLines[stasisEndEvent.Channel.Id].CallState.CallCanBeAbandoned) { await Task.Delay(1000); } ConnectedLines.Remove(stasisEndEvent.Channel.Id); }
private async void AriClientOnStasisEndEvent(IAriClient sender, StasisEndEvent stasisEndEvent) { _logger.Information("Channel {channelId} hungup", new { channelId = stasisEndEvent.Channel.Id }); if (!ConnectedLines.ContainsKey(stasisEndEvent.Channel.Id)) { return; } try { await ConnectedLines[stasisEndEvent.Channel.Id].HangupAsync(); } catch (AriException e) { _logger.Warning($"Exception while hanging up, most likely ok: {e.Message}"); } while (!ConnectedLines[stasisEndEvent.Channel.Id].CallState.CallCanBeAbandoned) { await Task.Delay(1000, _cancellationToken); } ConnectedLines.Remove(stasisEndEvent.Channel.Id); }