/// <summary> /// Generate the necessary parameters /// </summary> public List <KeyValuePair <string, string> > GetParams() { var p = new List <KeyValuePair <string, string> >(); if (ReservationStatus != null) { p.Add(new KeyValuePair <string, string>("ReservationStatus", ReservationStatus.ToString())); } if (WorkerActivitySid != null) { p.Add(new KeyValuePair <string, string>("WorkerActivitySid", WorkerActivitySid.ToString())); } if (Instruction != null) { p.Add(new KeyValuePair <string, string>("Instruction", Instruction)); } if (DequeuePostWorkActivitySid != null) { p.Add(new KeyValuePair <string, string>("DequeuePostWorkActivitySid", DequeuePostWorkActivitySid.ToString())); } if (DequeueFrom != null) { p.Add(new KeyValuePair <string, string>("DequeueFrom", DequeueFrom)); } if (DequeueRecord != null) { p.Add(new KeyValuePair <string, string>("DequeueRecord", DequeueRecord)); } if (DequeueTimeout != null) { p.Add(new KeyValuePair <string, string>("DequeueTimeout", DequeueTimeout.ToString())); } if (DequeueTo != null) { p.Add(new KeyValuePair <string, string>("DequeueTo", DequeueTo)); } if (DequeueStatusCallbackUrl != null) { p.Add(new KeyValuePair <string, string>("DequeueStatusCallbackUrl", Serializers.Url(DequeueStatusCallbackUrl))); } if (CallFrom != null) { p.Add(new KeyValuePair <string, string>("CallFrom", CallFrom)); } if (CallRecord != null) { p.Add(new KeyValuePair <string, string>("CallRecord", CallRecord)); } if (CallTimeout != null) { p.Add(new KeyValuePair <string, string>("CallTimeout", CallTimeout.ToString())); } if (CallTo != null) { p.Add(new KeyValuePair <string, string>("CallTo", CallTo)); } if (CallUrl != null) { p.Add(new KeyValuePair <string, string>("CallUrl", Serializers.Url(CallUrl))); } if (CallStatusCallbackUrl != null) { p.Add(new KeyValuePair <string, string>("CallStatusCallbackUrl", Serializers.Url(CallStatusCallbackUrl))); } if (CallAccept != null) { p.Add(new KeyValuePair <string, string>("CallAccept", CallAccept.Value.ToString().ToLower())); } if (RedirectCallSid != null) { p.Add(new KeyValuePair <string, string>("RedirectCallSid", RedirectCallSid.ToString())); } if (RedirectAccept != null) { p.Add(new KeyValuePair <string, string>("RedirectAccept", RedirectAccept.Value.ToString().ToLower())); } if (RedirectUrl != null) { p.Add(new KeyValuePair <string, string>("RedirectUrl", Serializers.Url(RedirectUrl))); } if (To != null) { p.Add(new KeyValuePair <string, string>("To", To)); } if (From != null) { p.Add(new KeyValuePair <string, string>("From", From)); } if (StatusCallback != null) { p.Add(new KeyValuePair <string, string>("StatusCallback", Serializers.Url(StatusCallback))); } if (StatusCallbackMethod != null) { p.Add(new KeyValuePair <string, string>("StatusCallbackMethod", StatusCallbackMethod.ToString())); } if (StatusCallbackEvent != null) { p.AddRange(StatusCallbackEvent.Select(prop => new KeyValuePair <string, string>("StatusCallbackEvent", prop.ToString()))); } if (Timeout != null) { p.Add(new KeyValuePair <string, string>("Timeout", Timeout.ToString())); } if (Record != null) { p.Add(new KeyValuePair <string, string>("Record", Record.Value.ToString().ToLower())); } if (Muted != null) { p.Add(new KeyValuePair <string, string>("Muted", Muted.Value.ToString().ToLower())); } if (Beep != null) { p.Add(new KeyValuePair <string, string>("Beep", Beep)); } if (StartConferenceOnEnter != null) { p.Add(new KeyValuePair <string, string>("StartConferenceOnEnter", StartConferenceOnEnter.Value.ToString().ToLower())); } if (EndConferenceOnExit != null) { p.Add(new KeyValuePair <string, string>("EndConferenceOnExit", EndConferenceOnExit.Value.ToString().ToLower())); } if (WaitUrl != null) { p.Add(new KeyValuePair <string, string>("WaitUrl", Serializers.Url(WaitUrl))); } if (WaitMethod != null) { p.Add(new KeyValuePair <string, string>("WaitMethod", WaitMethod.ToString())); } if (EarlyMedia != null) { p.Add(new KeyValuePair <string, string>("EarlyMedia", EarlyMedia.Value.ToString().ToLower())); } if (MaxParticipants != null) { p.Add(new KeyValuePair <string, string>("MaxParticipants", MaxParticipants.ToString())); } if (ConferenceStatusCallback != null) { p.Add(new KeyValuePair <string, string>("ConferenceStatusCallback", Serializers.Url(ConferenceStatusCallback))); } if (ConferenceStatusCallbackMethod != null) { p.Add(new KeyValuePair <string, string>("ConferenceStatusCallbackMethod", ConferenceStatusCallbackMethod.ToString())); } if (ConferenceStatusCallbackEvent != null) { p.AddRange(ConferenceStatusCallbackEvent.Select(prop => new KeyValuePair <string, string>("ConferenceStatusCallbackEvent", prop.ToString()))); } if (ConferenceRecord != null) { p.Add(new KeyValuePair <string, string>("ConferenceRecord", ConferenceRecord)); } if (ConferenceTrim != null) { p.Add(new KeyValuePair <string, string>("ConferenceTrim", ConferenceTrim)); } if (RecordingChannels != null) { p.Add(new KeyValuePair <string, string>("RecordingChannels", RecordingChannels)); } if (RecordingStatusCallback != null) { p.Add(new KeyValuePair <string, string>("RecordingStatusCallback", Serializers.Url(RecordingStatusCallback))); } if (RecordingStatusCallbackMethod != null) { p.Add(new KeyValuePair <string, string>("RecordingStatusCallbackMethod", RecordingStatusCallbackMethod.ToString())); } if (ConferenceRecordingStatusCallback != null) { p.Add(new KeyValuePair <string, string>("ConferenceRecordingStatusCallback", Serializers.Url(ConferenceRecordingStatusCallback))); } if (ConferenceRecordingStatusCallbackMethod != null) { p.Add(new KeyValuePair <string, string>("ConferenceRecordingStatusCallbackMethod", ConferenceRecordingStatusCallbackMethod.ToString())); } if (Region != null) { p.Add(new KeyValuePair <string, string>("Region", Region)); } if (SipAuthUsername != null) { p.Add(new KeyValuePair <string, string>("SipAuthUsername", SipAuthUsername)); } if (SipAuthPassword != null) { p.Add(new KeyValuePair <string, string>("SipAuthPassword", SipAuthPassword)); } if (DequeueStatusCallbackEvent != null) { p.AddRange(DequeueStatusCallbackEvent.Select(prop => new KeyValuePair <string, string>("DequeueStatusCallbackEvent", prop))); } if (PostWorkActivitySid != null) { p.Add(new KeyValuePair <string, string>("PostWorkActivitySid", PostWorkActivitySid.ToString())); } if (EndConferenceOnCustomerExit != null) { p.Add(new KeyValuePair <string, string>("EndConferenceOnCustomerExit", EndConferenceOnCustomerExit.Value.ToString().ToLower())); } if (BeepOnCustomerEntrance != null) { p.Add(new KeyValuePair <string, string>("BeepOnCustomerEntrance", BeepOnCustomerEntrance.Value.ToString().ToLower())); } return(p); }
/// <summary> /// 超时信息 /// </summary> /// <param name="callTimeout"></param> public void Notify(CallTimeout callTimeout) { _innerListener.Push(callTimeout); }
/// <summary> /// 调用事件信息 /// </summary> /// <param name="callArgs"></param> public void Notify(CallEventArgs callArgs) { if (_listeners.Count == 0) { return; } MessageListener[] listeners = _listeners.ToArray(); foreach (MessageListener lstn in listeners) { try { if ((lstn.Apps.Count == 0 || lstn.Apps.Any(p => string.Compare(p, callArgs.Caller.AppName, true) == 0)) && (lstn.Types.Count == 0 || lstn.Types.Any(p => string.Compare(p, callArgs.Caller.ServiceName, true) == 0))) { var options = lstn.Options; if (options.PushCallError && callArgs.IsError) { var callError = new CallError { Caller = callArgs.Caller, Message = callArgs.Error.Message, Error = ErrorHelper.GetErrorWithoutHtml(callArgs.Error), HtmlError = ErrorHelper.GetHtmlError(callArgs.Error) }; lstn.Notify(callError); } if (options.PushCallTimeout && !callArgs.IsError) { //如果设定的时间不正确,不进行推送 if (options.CallTimeout <= 0 && options.CallRowCount <= 0) { continue; } if (callArgs.ElapsedTime > options.CallTimeout * 1000 || callArgs.Count > options.CallRowCount) { var callTimeout = new CallTimeout { Caller = callArgs.Caller, Count = callArgs.Count, ElapsedTime = callArgs.ElapsedTime }; lstn.Notify(callTimeout); } } } } catch (SocketException ex) { RemoveListener(lstn); } catch (Exception ex) { if (OnError != null) { OnError(ex); } } } }