Ejemplo n.º 1
0
        /// <summary>
        /// Set the call on hold or re-activate.
        /// </summary>
        public void Hold()
        {
            if (_call != null)
            {
                if (_callOnHold)
                {
                    // Create the call settings.
                    CallSetting setting = new CallSetting(true);
                    CallOpParam parm    = new CallOpParam(true);
                    setting.AudioCount = (uint)1;
                    setting.VideoCount = (_hasVideo ? (uint)1 : (uint)0);
                    setting.Flag       = CallFlag.PJSUA_CALL_UNHOLD;
                    parm.Setting       = setting;
                    parm.Code          = StatusCode.SC_OK;

                    // Reinvite the call.
                    _call.Reinvite(parm);
                    _callOnHold = false;
                }
                else
                {
                    // Create the call settings.
                    CallSetting setting = new CallSetting(true);
                    CallOpParam parm    = new CallOpParam(true);
                    setting.AudioCount = (uint)1;
                    setting.VideoCount = (_hasVideo ? (uint)1 : (uint)0);
                    parm.Setting       = setting;
                    parm.Code          = StatusCode.SC_OK;

                    // Hold the call.
                    _call.SetHold(parm);
                    _callOnHold = true;
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Make outgoing call to the specified URI.
        /// </summary>
        /// <param name="callId">An index call id (0 - 3).</param>
        /// <param name="uri">URI to be put in the To header (normally is the same as the target URI).</param>
        /// <param name="recordFilename">The path and filename where the conversation is to be recorded to. Currently ".wav" is supported on all platforms.</param>
        /// <returns>The call information.</returns>
        public Param.CallParam MakeCall(int callId, string uri, string recordFilename = null)
        {
            // If created.
            if (_created)
            {
                // Create a new call.
                Call call = new Call(_account, callId);

                // Create the call settings.
                CallSetting setting = new CallSetting(true);
                CallOpParam parm    = new CallOpParam(true);
                setting.AudioCount = 1;
                parm.Setting       = setting;

                // Make the call.
                call.MakeCall(uri, parm);

                // return the call information.
                Param.CallParam callInfo = new Param.CallParam(call, _mediaManager, recordFilename);
                return(callInfo);
            }
            else
            {
                throw new Exception("Create the account first.");
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Notify application on incoming call.
        /// </summary>
        ///<param name="sender">The current sender.</param>
        /// <param name="e">The event parameter.</param>
        private void _voipManager_OnIncomingCall(object sender, OnIncomingCallParam e)
        {
            // Is valid call.
            if (e.CallId >= 0)
            {
                // Create a new call.
                Call            call     = _voipManager.CreateCall(e.CallId);
                Param.CallParam callInfo = new Param.CallParam(call, _voipManager.MediaManager, _recordFilename);

                // Create the call settings.
                CallSetting setting = new CallSetting(true);
                CallOpParam parm    = new CallOpParam(true);
                setting.AudioCount = 1;
                parm.Setting       = setting;

                // Continue ringing.
                parm.Code = StatusCode.SC_RINGING;
                call.Answer(parm);

                // Send a notification to the call.
                Param.OnIncomingCallParam param = new Param.OnIncomingCallParam();
                param.CallID     = e.CallId;
                param.Info       = e.RxData.Info;
                param.SrcAddress = e.RxData.SrcAddress;
                param.WholeMsg   = e.RxData.WholeMsg;
                param.Call       = callInfo;
                param.Contact    = FindContact(param);

                // Call the event handler.
                OnIncomingCall?.Invoke(this, param);
            }
        }
        public ActionResult SetCallSetting([FromBody] CallSetting callSetting)
        {
            if (LoginStatus.LoggedIn != LoginManager.Instance.CurrentLoginStatus)
            {
                return(GetErrInfo(Constants.ErrorCode.NOT_LOGGED_IN));
            }

            Helpers.Utils.SetAutoAnswer(callSetting.autoAnswer);
            SettingManager.Instance.SetCallRate(callSetting.callRate);
            return(Content(""));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Answer the current call.
        /// </summary>
        public void Answer()
        {
            // Create the call settings.
            CallSetting setting = new CallSetting(true);
            CallOpParam parm    = new CallOpParam(true);

            setting.AudioCount = 1;
            parm.Setting       = setting;
            parm.Code          = StatusCode.SC_OK;

            if (_call != null)
            {
                // Answer the call.
                _call.Answer(parm);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Hangup the current call.
        /// </summary>
        public void Hangup()
        {
            // Create the call settings.
            CallSetting setting = new CallSetting(true);
            CallOpParam parm    = new CallOpParam(true);

            setting.AudioCount = 1;
            parm.Setting       = setting;
            parm.Code          = StatusCode.SC_BUSY_HERE;

            if (_call != null)
            {
                // Hangup the call.
                _call.Hangup(parm);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Update the call.
        /// </summary>
        public void Update()
        {
            // Create the call settings.
            CallSetting setting = new CallSetting(true);
            CallOpParam parm    = new CallOpParam(true);

            setting.AudioCount = 1;
            setting.VideoCount = (_hasVideo ? (uint)1 : (uint)0);
            parm.Setting       = setting;
            parm.Code          = StatusCode.SC_OK;

            if (_call != null)
            {
                // Update the call.
                _call.Update(parm);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Transfer replace the current call.
        /// </summary>
        /// <param name="call">The existing call.</param>
        public void TransferReplaces(CallParam call)
        {
            // Create the call settings.
            CallSetting setting = new CallSetting(true);
            CallOpParam parm    = new CallOpParam(true);

            setting.AudioCount = (uint)1;
            setting.VideoCount = (_hasVideo ? (uint)1 : (uint)0);
            parm.Setting       = setting;
            parm.Code          = StatusCode.SC_OK;

            if (_call != null)
            {
                // Transfer.
                _call.TransferReplaces(call.Call, parm);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Transfer the current call.
        /// </summary>
        /// <param name="destination">The URI of new target to be contacted. The URI may be in name address or addr format.</param>
        public void Transfer(string destination)
        {
            // Create the call settings.
            CallSetting setting = new CallSetting(true);
            CallOpParam parm    = new CallOpParam(true);

            setting.AudioCount = 1;
            parm.Setting       = setting;
            parm.Code          = StatusCode.SC_OK;

            if (_call != null)
            {
                // Answer the call.
                _call.Answer(parm);
                _call.Transfer(destination, parm);
            }
        }
Ejemplo n.º 10
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CallSetting obj)
 {
     return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
 }
Ejemplo n.º 11
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CallSetting obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }