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 static async void c_OnStasisEndEvent(object sender, StasisEndEvent e) { if (e.Application != AppConfig.AppName) { return; } var conf = Conference.Conferences.SingleOrDefault(x => x.ConferenceUsers.Any(c => c.Channel.Id == e.Channel.Id)); if (conf == null) { return; } await conf.RemoveUser(e.Channel.Id); }
private void Pbx_OnStasisEndEvent(IAriClient sender, StasisEndEvent e) { Log.Logger.Debug("El canal: " + e.Channel.Id + " salió de la app: " + e.Application); //uno de los dos cortó o por algun motivo se fue de stasis, transfer?? la cosa es que no estan mas en la app asi que los remuevo //aca debería ver el abandono, si sale de la app sin que lo atiendan abandonó? //TODO:Verificar el uso de este código, tal vez se pueda quitar lock (_locker) { CallHandler callHandler = callHandlerCache.GetByChannelId(e.Channel.Id); if (callHandler != null) //esto es en caso de que existan llamadas en stasis antes de arrancar la app, debería cargar la info de lo preexistente en la pbx { callHandlerCache.RemoveCallHandler(callHandler.Id); Log.Logger.Debug("El canal: " + e.Channel.Id + ", remuevo el callhandler: " + callHandler.Id); } } }
private void Client_OnStasisEndEvent(IAriClient sender, StasisEndEvent e) { if (callerRegistry.ContainsKey(e.Channel.Id)) { Caller c = callerRegistry[e.Channel.Id]; Logger.Log(c, "Caller hungup."); CallerEnd?.Invoke(this, c); callerRegistry.Remove(e.Channel.Id); return; } if (DestinationRegistry.ContainsKey(e.Channel.Id)) { DestinationEnd?.Invoke(this, DestinationRegistry[e.Channel.Id]); DestinationRegistry.Remove(e.Channel.Id); return; } }
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); }
private async void AriClientOnEndEvent(object sender, StasisEndEvent e) { await _commandFactory.GetCommand(StasisStartEventType.DeleteChannelCommand).Execute(e.Channel, null); }
private void AriClientOnStasisEndEvent(IAriClient sender, StasisEndEvent e) { EndEvent?.Invoke(this, e); }
private static void E_OnStasisEndEvent(IAriClient sender, StasisEndEvent e) { }