/// <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 } }
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); } }