示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 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);
         }
     }
 }
示例#4
0
 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;
     }
 }
示例#5
0
        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);
 }
示例#8
0
 private static void E_OnStasisEndEvent(IAriClient sender, StasisEndEvent e)
 {
 }