//private SIPAccount m_destinationSIPAccount;

        public SIPB2BUserAgent(
            QueueNewCallDelegate queueCall,
            SIPTransport sipTranpsort,
            string uacOwner,
            string uacAdminMemberId
            )
        {
            QueueNewCall_External = queueCall;
            m_sipTransport        = sipTranpsort;
            m_uacOwner            = uacOwner;
            m_uacAdminMemberId    = uacAdminMemberId;
        }
예제 #2
0
        //private SIPAccount m_destinationSIPAccount;

        public SIPB2BUserAgent(
            SIPMonitorLogDelegate logDelegate,
            QueueNewCallDelegate queueCall,
            SIPTransport sipTranpsort,
            string uacOwner,
            string uacAdminMemberId
            )
        {
            Log_External          = logDelegate;
            QueueNewCall_External = queueCall;
            m_sipTransport        = sipTranpsort;
            m_uacOwner            = uacOwner;
            m_uacAdminMemberId    = uacAdminMemberId;
        }
예제 #3
0
 /// <summary>
 /// See overload.
 /// </summary>
 /// <param name="switchCallTransactions">An empty list that will be filled with transactions that the ForkCall creates and that each
 /// represent an outgoing call. The calling object can use the list to check response codes to determine the result of each leg in the
 /// ForkCall.</param>
 public ForkCall(
     SIPTransport sipTransport,
     SIPMonitorLogDelegate statefulProxyLogEvent,
     QueueNewCallDelegate queueNewCall,
     DialStringParser dialStringParser,
     string username,
     string adminMemberId,
     SIPEndPoint outboundProxy,
     ISIPCallManager callManager,
     DialPlanContext dialPlanContext,
     out List <SIPTransaction> switchCallTransactions) :
     this(sipTransport, statefulProxyLogEvent, queueNewCall, dialStringParser, username, adminMemberId, outboundProxy, callManager, dialPlanContext)
 {
     switchCallTransactions = m_switchCallTransactions;
 }
예제 #4
0
 /// <remarks>
 /// The ForkCall allows a SIP call to be forked to multiple destinations. To do this it utilises multiple
 /// simultaneous SIPCallDescriptor objects and consolidates their responses to work out what should and shouldn't
 /// be forwarded onto the client that initiated the call. The ForkCall acts as a classic SIP forking proxy.
 ///
 /// The ForkCall is capable of both multiple forwards and also of follow on forwarding in the event of a call
 /// leg of multiple forwards not succeeding. As an example:
 ///
 ///     Dial(provider1&provider2|provider3&provider4|provider5&provider6)
 ///
 /// The handling of this call would be:
 /// 1. The call would be simultaneously forwarded to provider1 and provider2,
 /// 2. If the call was not successfully answered in step 1 the  call would be simultaneously forwarded to provider3 and provider4,
 /// 3. If the call was not successfully answered in step 2 the  call would be simultaneously forwarded to provider5 and provider6,
 /// 4. If the call was not successfully answered in step 3 the client call would be sent an error response.
 /// 5. If the client cancels the call at any time during the call all forwarding operations will halt.
 /// </remarks>
 /// <param name="sipTransport">The SIP transport layer that will handle the forked calls.</param>
 /// <param name="statefulProxyLogEvent">A delegate that allows the owning object to receive notifications from the ForkCall.</param>
 /// <param name="queueNewCall">A delegate that can be used to queue a new call with the SIP application server call manager. This
 /// delegate is used when a fork call generates a B2B call that requires the incoming dialplan for a called user to be processed.</param>
 /// <param name="dialStringParser">The dial string parser is used when a redirect response is received on a forked call leg. The
 /// parser can then be applied to the redirect SIP URI to generate new call legs to be added to the ForkCall.</param>
 /// <param name="username">The username of the call owner.</param>
 /// <param name="adminMemberId">The admin ID of the call owner.</param>
 /// <param name="outboundProxy">The outbound proxy to use for all SIP traffic originated. Can be null if an outbound proxy is not
 /// being used.</param>
 public ForkCall(
     SIPTransport sipTransport,
     SIPMonitorLogDelegate statefulProxyLogEvent,
     QueueNewCallDelegate queueNewCall,
     DialStringParser dialStringParser,
     string username,
     string adminMemberId,
     SIPEndPoint outboundProxy,
     ISIPCallManager callManager,
     DialPlanContext dialPlanContext)
 {
     m_sipTransport          = sipTransport;
     m_statefulProxyLogEvent = statefulProxyLogEvent;
     QueueNewCall_External   = queueNewCall;
     m_dialStringParser      = dialStringParser;
     m_username            = username;
     m_adminMemberId       = adminMemberId;
     m_outboundProxySocket = outboundProxy;
     m_callManager         = callManager;
     m_dialPlanContext     = dialPlanContext;
 }
예제 #5
0
 /// <summary>
 /// See overload.
 /// </summary>
 /// <param name="switchCallTransactions">An empty list that will be filled with transactions that the ForkCall creates and that each
 /// represent an outgoing call. The calling object can use the list to check response codes to determine the result of each leg in the
 /// ForkCall.</param>
 public ForkCall(
     SIPTransport sipTransport,
     SIPMonitorLogDelegate statefulProxyLogEvent,
     QueueNewCallDelegate queueNewCall,
     DialStringParser dialStringParser,
     string username,
     string adminMemberId,
     SIPEndPoint outboundProxy,
     ISIPCallManager callManager,
     DialPlanContext dialPlanContext,
     out List<SIPTransaction> switchCallTransactions)
     : this(sipTransport, statefulProxyLogEvent, queueNewCall, dialStringParser, username, adminMemberId, outboundProxy, callManager, dialPlanContext)
 {
     switchCallTransactions = m_switchCallTransactions;
 }
예제 #6
0
        private QueueNewCallDelegate QueueNewCall_External; // Function delegate to allow new calls to be placed on the call manager and run through the dialplan logic.

        #endregion Fields

        #region Constructors

        /// <remarks>
        /// The ForkCall allows a SIP call to be forked to multiple destinations. To do this it utilises multiple
        /// simultaneous SIPCallDescriptor objects and consolidates their responses to work out what should and shouldn't
        /// be forwarded onto the client that initiated the call. The ForkCall acts as a classic SIP forking proxy.
        /// 
        /// The ForkCall is capable of both multiple forwards and also of follow on forwarding in the event of a call 
        /// leg of multiple forwards not succeeding. As an example:
        /// 
        ///     Dial(provider1&provider2|provider3&provider4|provider5&provider6)
        ///     
        /// The handling of this call would be:
        /// 1. The call would be simultaneously forwarded to provider1 and provider2,
        /// 2. If the call was not successfully answered in step 1 the  call would be simultaneously forwarded to provider3 and provider4,
        /// 3. If the call was not successfully answered in step 2 the  call would be simultaneously forwarded to provider5 and provider6,
        /// 4. If the call was not successfully answered in step 3 the client call would be sent an error response.
        /// 5. If the client cancels the call at any time during the call all forwarding operations will halt.
        /// </remarks>
        /// <param name="sipTransport">The SIP transport layer that will handle the forked calls.</param>
        /// <param name="statefulProxyLogEvent">A delegate that allows the owning object to receive notifications from the ForkCall.</param>
        /// <param name="queueNewCall">A delegate that can be used to queue a new call with the SIP application server call manager. This
        /// delegate is used when a fork call generates a B2B call that requires the incoming dialplan for a called user to be processed.</param>
        /// <param name="dialStringParser">The dial string parser is used when a redirect response is received on a forked call leg. The
        /// parser can then be applied to the redirect SIP URI to generate new call legs to be added to the ForkCall.</param>
        /// <param name="username">The username of the call owner.</param>
        /// <param name="adminMemberId">The admin ID of the call owner.</param>
        /// <param name="outboundProxy">The outbound proxy to use for all SIP traffic originated. Can be null if an outbound proxy is not 
        /// being used.</param>
        public ForkCall(
            SIPTransport sipTransport,
            SIPMonitorLogDelegate statefulProxyLogEvent,
            QueueNewCallDelegate queueNewCall,
            DialStringParser dialStringParser,
            string username,
            string adminMemberId,
            SIPEndPoint outboundProxy,
            ISIPCallManager callManager,
            DialPlanContext dialPlanContext)
        {
            m_sipTransport = sipTransport;
            m_statefulProxyLogEvent = statefulProxyLogEvent;
            QueueNewCall_External = queueNewCall;
            m_dialStringParser = dialStringParser;
            m_username = username;
            m_adminMemberId = adminMemberId;
            m_outboundProxySocket = outboundProxy;
            m_callManager = callManager;
            m_dialPlanContext = dialPlanContext;
        }
 //private SIPAccount m_destinationSIPAccount;
 public SIPB2BUserAgent(
     SIPMonitorLogDelegate logDelegate,
     QueueNewCallDelegate queueCall,
     SIPTransport sipTranpsort,
     string uacOwner,
     string uacAdminMemberId
     )
 {
     Log_External = logDelegate;
     QueueNewCall_External = queueCall;
     m_sipTransport = sipTranpsort;
     m_uacOwner = uacOwner;
     m_uacAdminMemberId = uacAdminMemberId;
 }