/// <summary>
        ///     Used to dispatch .NET events
        /// </summary>
        protected async Task DispatchEvents(EslEventType eventType, EslEventArgs ea)
        {
            AsyncEventHandler <EslEventArgs> handler = null;

            switch (eventType)
            {
            case EslEventType.BACKGROUND_JOB:
                handler = OnBackgroundJob;
                break;

            case EslEventType.CALL_UPDATE:
                handler = OnCallUpdate;
                break;

            case EslEventType.CHANNEL_BRIDGE:
                handler = OnChannelBridge;
                break;

            case EslEventType.CHANNEL_HANGUP:
                handler = OnChannelHangup;
                break;

            case EslEventType.CHANNEL_HANGUP_COMPLETE:
                handler = OnChannelHangupComplete;
                break;

            case EslEventType.CHANNEL_PROGRESS:
                handler = OnChannelProgress;
                break;

            case EslEventType.CHANNEL_PROGRESS_MEDIA:
                handler = OnChannelProgressMedia;
                break;

            case EslEventType.CHANNEL_EXECUTE:
                handler = OnChannelExecute;
                break;

            case EslEventType.CHANNEL_EXECUTE_COMPLETE:
                handler = OnChannelExecuteComplete;
                break;

            case EslEventType.CHANNEL_UNBRIDGE:
                handler = OnChannelUnbridge;
                break;

            case EslEventType.SESSION_HEARTBEAT:
                handler = OnSessionHeartbeat;
                break;

            case EslEventType.DTMF:
                handler = OnDtmf;
                break;

            case EslEventType.RECORD_STOP:
                handler = OnRecordStop;
                break;

            case EslEventType.CUSTOM:
                handler = OnCustom;
                break;

            case EslEventType.CHANNEL_STATE:
                handler = OnChannelState;
                break;

            case EslEventType.CHANNEL_ANSWER:
                handler = OnChannelAnswer;
                break;

            case EslEventType.CHANNEL_ORIGINATE:
                handler = OnChannelOriginate;
                break;

            case EslEventType.CHANNEL_PARK:
                handler = OnChannelPark;
                break;

            case EslEventType.CHANNEL_UNPARK:
                handler = OnChannelUnPark;
                break;

            case EslEventType.UN_HANDLED_EVENT:
                handler = OnReceivedUnHandledEvent;
                break;
            }
            if (handler == null)
            {
                return;
            }
            try {
                await handler(this, ea);
            }
            catch (Exception) {
                // ignored
            }
        }
 private static async Task OnChannelState(object sender, EslEventArgs e)
 {
     Log.Info("Client Received Channel State event {0}", e.EventReceived.ToString());
     await Task.Delay(0);
 }
 /// <summary>
 ///     Used to dispatch .NET events
 /// </summary>
 protected void DispatchEvents(EslEventType eventType, EslEventArgs ea) {
     AsyncEventHandler<EslEventArgs> handler = null;
     switch (eventType) {
         case EslEventType.BACKGROUND_JOB:
             handler = OnBackgroundJob;
             break;
         case EslEventType.CALL_UPDATE:
             handler = OnCallUpdate;
             break;
         case EslEventType.CHANNEL_BRIDGE:
             handler = OnChannelBridge;
             break;
         case EslEventType.CHANNEL_HANGUP:
             handler = OnChannelHangup;
             break;
         case EslEventType.CHANNEL_HANGUP_COMPLETE:
             handler = OnChannelHangupComplete;
             break;
         case EslEventType.CHANNEL_PROGRESS:
             handler = OnChannelProgress;
             break;
         case EslEventType.CHANNEL_PROGRESS_MEDIA:
             handler = OnChannelProgressMedia;
             break;
         case EslEventType.CHANNEL_EXECUTE:
             handler = OnChannelExecute;
             break;
         case EslEventType.CHANNEL_EXECUTE_COMPLETE:
             handler = OnChannelExecuteComplete;
             break;
         case EslEventType.CHANNEL_UNBRIDGE:
             handler = OnChannelUnbridge;
             break;
         case EslEventType.SESSION_HEARTBEAT:
             handler = OnSessionHeartbeat;
             break;
         case EslEventType.DTMF:
             handler = OnDtmf;
             break;
         case EslEventType.RECORD_STOP:
             handler = OnRecordStop;
             break;
         case EslEventType.CUSTOM:
             handler = OnCustom;
             break;
         case EslEventType.CHANNEL_STATE:
             handler = OnChannelState;
             break;
         case EslEventType.CHANNEL_ANSWER:
             handler = OnChannelAnswer;
             break;
         case EslEventType.CHANNEL_ORIGINATE:
             handler = OnChannelOriginate;
             break;
         case EslEventType.CHANNEL_PARK:
             handler = OnChannelPark;
             break;
         case EslEventType.CHANNEL_UNPARK:
             handler = OnChannelUnPark;
             break;
         case EslEventType.UN_HANDLED_EVENT:
             handler = OnReceivedUnHandledEvent;
             break;
     }
     if (handler == null) return;
     try {
         handler(this, ea);
     }
     catch (Exception) {
         // ignored
     }
 }
Esempio n. 4
0
        public async Task OnEventReceived(EslMessage eslMessage)
        {
            var eslEvent     = new EslEvent(eslMessage);
            var eventType    = Enumm.Parse <EslEventType>(eslEvent.EventName);
            var eslEventArgs = new EslEventArgs(new EslEvent(eslMessage));
            AsyncEventHandler <EslEventArgs> handler;

            switch (eventType)
            {
            case EslEventType.BACKGROUND_JOB:
                handler = OnBackgroundJob;
                break;

            case EslEventType.CALL_UPDATE:
                handler = OnCallUpdate;
                break;

            case EslEventType.CHANNEL_BRIDGE:
                handler = OnChannelBridge;
                break;

            case EslEventType.CHANNEL_HANGUP:
                handler = OnChannelHangup;
                break;

            case EslEventType.CHANNEL_HANGUP_COMPLETE:
                handler = OnChannelHangupComplete;
                break;

            case EslEventType.CHANNEL_PROGRESS:
                handler = OnChannelProgress;
                break;

            case EslEventType.CHANNEL_PROGRESS_MEDIA:
                handler = OnChannelProgressMedia;
                break;

            case EslEventType.CHANNEL_EXECUTE:
                handler = OnChannelExecute;
                break;

            case EslEventType.CHANNEL_EXECUTE_COMPLETE:
                handler = OnChannelExecuteComplete;
                break;

            case EslEventType.CHANNEL_UNBRIDGE:
                handler = OnChannelUnbridge;
                break;

            case EslEventType.SESSION_HEARTBEAT:
                handler = OnSessionHeartbeat;
                break;

            case EslEventType.DTMF:
                handler = OnDtmf;
                break;

            case EslEventType.RECORD_STOP:
                handler = OnRecordStop;
                break;

            case EslEventType.CUSTOM:
                handler = OnCustom;
                break;

            case EslEventType.CHANNEL_STATE:
                handler = OnChannelState;
                break;

            case EslEventType.CHANNEL_ANSWER:
                handler = OnChannelAnswer;
                break;

            case EslEventType.CHANNEL_ORIGINATE:
                handler = OnChannelOriginate;
                break;

            case EslEventType.CHANNEL_PARK:
                handler = OnChannelPark;
                break;

            case EslEventType.CHANNEL_UNPARK:
                handler = OnChannelUnPark;
                break;

            default:
                _logger.Debug("received unhandled freeSwitch event:");
                _logger.Debug(eslEvent);
                handler = OnReceivedUnHandledEvent;
                break;
            }
            if (handler != null)
            {
                await handler(this, eslEventArgs);
            }
        }