Beispiel #1
0
 static void skype_CallStatus(Call pCall, TCallStatus Status)
 {
     if (Status == TCallStatus.clsInProgress && pCall.PartnerHandle == SkypeID)
     {
         pCall.StartVideoSend();
     }
 }
Beispiel #2
0
 void Core_CallStatus(Call pCall, TCallStatus Status)
 {
     if (Status == TCallStatus.clsRinging)
     {
         onCallReceived(pCall, Status);
     }
 }
Beispiel #3
0
        public void skype_CallStatus(Call call, TCallStatus status)
        {
            try
            {
                if (status == TCallStatus.clsRinging && call.Type != TCallType.cltOutgoingP2P)
                {
                    if (skypeCalls == 0)
                    {
                        try
                        {
                            call.Answer();
                        }
                        catch { }
                    }
                    else
                    {
                        try
                        {
                            call.Finish();

                            skype.SendMessage(call.PartnerHandle, Properties.Settings.Default.waitMessage);
                        }
                        catch { }
                    }
                }
            }
            catch (InvalidCastException e)
            {
            }
        }
        private void onSkypeCallStatus(Call call, TCallStatus status)
        {
            switch (status)
            {
                    //new call
                    //TODO: check why clsInprogress doesnt work here!
                case TCallStatus.clsRinging:
                    TCallType type = call.Type;

                    if ((type == TCallType.cltIncomingP2P) || (type == TCallType.cltOutgoingP2P))
                    {
                        foreach (DCallStartedHandler callStartedHandler in callStartedHandlers)
                        {
                            callStartedHandler(call.PartnerHandle, call.Id, type == TCallType.cltOutgoingP2P);
                        }
                    }
                    break;

                    //call closed
                case TCallStatus.clsMissed:
                case TCallStatus.clsFinished:
                case TCallStatus.clsRefused:
                case TCallStatus.clsCancelled:
                    foreach (DCallEndedHandler callEndedHandler in callEndedHandlers)
                    {
                        callEndedHandler(call.PartnerHandle, call.Id);
                    }
                    break;

                default:
                    Logger.log(TLogLevel.logEverything, "Info: Call status changed to: " + status);
                    break;

            }
        }
 private void Skype_CallStatus(Call pCall, TCallStatus Status)
 {
     if (Status == TCallStatus.clsInProgress)
     {
         axWindowsMediaPlayer1.URL = @"C:\Users\CurrentUser\Desktop\alert.wav";
         axWindowsMediaPlayer1.Ctlcontrols.play();
     }
 }
 private void callStatusChangedEvent(ICall iCall, TCallStatus newStatus)
 {
     if (iCall.Id != this.call.Id)
     {
         return;
     }
     logger.Info("Status changed (ID = " + iCall.Id + "): " + newStatus);
 }
Beispiel #7
0
 private void OnCallStatusChanged(Call call, TCallStatus status, Action <string> onCallStarted, Action <string> onCallEnded)
 {
     if (status == TCallStatus.clsRinging || status == TCallStatus.clsRouting)
     {
         onCallStarted(status.ToString());
     }
     else if (status == TCallStatus.clsFinished || status == TCallStatus.clsRefused)
     {
         onCallEnded(status.ToString());
     }
 }
        private void Skype_CallStatus(Call pCall, TCallStatus Status)
        {
            if (skypeManager.Logger.IsDebugEnabled)
            {
                skypeManager.Logger.Debug("Skype_CallStatus " + Status);
            }

            var callStatus = Status.ToCallStatus();

            skypeManager.PublishCallStatus(callStatus);
        }
Beispiel #9
0
 void Core_onCallReceived(Call pCall, TCallStatus Status)
 {
     foreach (var script in allScripts)
     {
         var test = script.getOnMessageFunc();
         if (test != null)
         {
             test(pCall, Status);
         }
     }
 }
Beispiel #10
0
 private void Skype_CallStatus(Call pCall, TCallStatus Status)
 {
     if (Status == TCallStatus.clsRinging)
     {
         //Currently ringing (either calling ,or being called)
     }
     if (Status == TCallStatus.clsFinished)
     {
         //hung up
     }
     //osv
 }
Beispiel #11
0
        private void CallStatus(Call call, TCallStatus status)
        {
            createCaller(call.Id, status);

            if ((status == TCallStatus.clsBusy || status == TCallStatus.clsCancelled || status == TCallStatus.clsFailed || status == TCallStatus.clsFinished))
            {
                //end the call
                Command command = new Command();
                command.Command = "hook on";
                m_skype.SendCommand(command);
                incall    = false;
                emailsent = false;
            }
        }
Beispiel #12
0
        private void CallStatus(Call call, TCallStatus status)
        {
            System.Console.WriteLine("Call Status:" + converter.CallStatusToText(status));
            System.Console.WriteLine("Call: " + converter.CallTypeToText(call.Type));
            if (status == TCallStatus.clsRinging && (call.Type == TCallType.cltIncomingPSTN || call.Type == TCallType.cltIncomingP2P))
            {
                System.Console.WriteLine("Incomming Call");
            }
            if ((status == TCallStatus.clsBusy || status == TCallStatus.clsCancelled || status == TCallStatus.clsFailed || status == TCallStatus.clsFinished))
            {
                System.Console.WriteLine("Ending Call");
                try
                {
                    Command hook = new Command();
                    hook.Command = "hook on";
                    oSkype.SendCommand(hook);
                    hook.Command = "hook off";
                    oSkype.SendCommand(hook);
                    radioButton2.Checked = false;
                }
                catch
                { }

                Console.WriteLine("Active Calls: " + oSkype.ActiveCalls.Count.ToString());

                if (oSkype.ActiveCalls.Count == 0)
                {
                    Console.WriteLine("Sending Email...");
                    sendmail();
                    Progress = false;
                    Console.WriteLine("Email Sent");
                    CheckMail.Enabled = true;
                }
            }
            if ((status == TCallStatus.clsInProgress))
            {
                if (Progress == false)
                {
                    Progress = true;
                    inProgress();
                }
                System.Console.WriteLine("In Progress - muting");
                ((ISkype)oSkype).Mute = true;
                Console.WriteLine("Recording");
                radioButton2.Checked = true;
                call.set_OutputDevice(TCallIoDeviceType.callIoDeviceTypeFile, "C:/Users/Robert/skype/" + call.Id.ToString() + ".wav");
                recordings.Add("C:/Users/Robert/skype/" + call.Id.ToString() + ".wav");
            }
        }
Beispiel #13
0
 protected override void Skype_CallStatus(Call pCall, TCallStatus Status)
 {
     try
     {
         if (Status.Equals(TCallStatus.clsFinished))
         {
             Trigger();
         }
     }
     catch (Exception ex)
     {
         ErrorLog.AddError(ErrorType.Failure, string.Format(Strings.Error_EventCantBeTriggered, Strings.ReceiveCall_Title));
         Logger.Write(ex);
     }
 }
 void OnSkypeCallStatus(Call call, TCallStatus status)
 {
     log.Info("SkypeCallStatus: {0}", status);
     if (status == TCallStatus.clsInProgress)
     {
         OnCallStarted(call);
     }
     else if (status == TCallStatus.clsFinished)
     {
         OnCallFinished(false);
     }
     else
     {
         log.Info("SkypeCallStatus: {0}", status);
     }
 }
Beispiel #15
0
        static void SkypeObj__ISkypeEvents_Event_CallStatus(Call pCall, TCallStatus Status)
        {
#if DEBUG
            Console.WriteLine("通话时长为:" + pCall.Duration);
            Console.WriteLine("SkypeObj__ISkypeEvents_Event_CallStatus" + System.DateTime.Now.ToShortTimeString() + "当前状态为:" + Status.ToString());
#endif
            foreach (TCallStatus status in failedStatus)
            {
                if (Status == status)
                {
                    HandOff();
                }
            }

            //  pCall.
        }
        public void Skype_CallStatus(Call call, TCallStatus status)
        {
            // Write Call Status to Window
            this.textBox1.AppendText("Call Status: " + skype.Convert.CallStatusToText(status));
            this.textBox1.AppendText(" - " + status.ToString() + Environment.NewLine);
            this.textBox1.ScrollToCaret();

            if ((status > TCallStatus.clsUnplaced) && (status < TCallStatus.clsOnHold) && (status != TCallStatus.clsFailed))
            {
                // Could Start or Stop something when a call starts here
            }
            else
            {
                // Could Stop or Resume something when a call stops here
            }
        }
Beispiel #17
0
        private void OnCallStatus(Call call, TCallStatus status)
        {
            switch (status)
            {
            case TCallStatus.clsRinging:
                if (call.Type == TCallType.cltIncomingP2P || call.Type == TCallType.cltIncomingPSTN)
                {
                    if (calls.FirstOrDefault(c => call.PartnerHandle == c.PartnerHandle) == null)
                    {
                        calls.Add(call);
                        CallEvent(IncomingCall, new CallEventArgs(call));
                    }
                }
                break;

            case TCallStatus.clsInProgress:
                break;

            case TCallStatus.clsLocalHold:
                break;

            case TCallStatus.clsOnHold:
                break;

            case TCallStatus.clsTransferring:
                break;

            case TCallStatus.clsTransferred:
                break;

            case TCallStatus.clsRemoteHold:
                break;

            case TCallStatus.clsEarlyMedia:
                break;

            default:
            {
                if (calls != null)
                {
                    calls.RemoveAll(n => n.PartnerHandle == call.PartnerHandle);
                }
            }
            break;
            }
        }
Beispiel #18
0
        private void skype_CallStatus(Call call, TCallStatus status)
        {
            if (status == TCallStatus.clsRinging)
            {
                if (call.PartnerHandle == txbConsultant.Text)
                {
                    call.Answer();
                    Point screenBounds = ScreenBounds;
                    SkypeAutomation.SkypeObj.SendMessage(txbConsultant.Text, string.Format("screenbounds({0},{1})", screenBounds.X, screenBounds.Y));

                    SkypeAutomation.ShareFullScreen();
                }
                else
                {
                    call.Finish();
                }
            }
        }
Beispiel #19
0
        public void skype_CallStatus(Call call, TCallStatus status)
        {
            try
            {
                if (status == TCallStatus.clsInProgress)
                {
                    _dispatcher.BeginInvoke((Action)(() =>
                    {
                        selectedSkypeChatUser = call.PartnerHandle.ToString();

                        labelSelectedUser.Content = call.PartnerDisplayName.ToString();
                    }));
                }
            }
            catch
            {
            }
        }
Beispiel #20
0
        /// <summary>
        /// Change status call (voice)
        /// </summary>
        /// <remarks>
        /// Voice message
        /// </remarks>
        /// <param name="call">talk to person</param>
        /// <param name="status">status of talk</param>
        private void ChangeCallStatus(Call call, TCallStatus status)
        {
            try
            {
                //call is now calling
                if (status == TCallStatus.clsRinging)
                {
                    //this person calling -> call.PartnerDisplayName;
                }

                //press disallow
                else if (status == TCallStatus.clsRefused)
                {
                }

                //press stop
                else if (status == TCallStatus.clsCancelled)
                {
                }

                //talk is now progress
                else if (status == TCallStatus.clsInProgress)
                {
                    //record voice
                    string uniqueLabel = string.Empty;
                    uniqueLabel = DateTime.Now.ToString();
                    uniqueLabel = uniqueLabel.Replace(":", "");
                    uniqueLabel = uniqueLabel.Replace(" ", "");
                    uniqueLabel = uniqueLabel.Replace("-", "");

                    call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypeFile, tempVoiceDirectory + "\\" + uniqueLabel + "speaker.wav");
                    call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypeFile, tempVoiceDirectory + "\\" + uniqueLabel + "microfon.wav");
                }

                //call is finish (now can wav convert to mp3)
                else if (status == TCallStatus.clsFinished)
                {
                }
            }
            catch (Exception ex)
            {
                ErrorCode = ex.Message;
            }
        }
Beispiel #21
0
        private caller createCaller(int id, TCallStatus status)
        {
            caller call = new caller();

            call.id     = id;
            call.status = status;

            Console.WriteLine("Creating caller: " + call);

            if (!checkCallExists(call))
            {
                calls.Add(call);
            }
            else
            {
                ((caller)calls[findID(id)]).status = status;
            }

            return(call);
        }
        private void OnCallStatusChanged(Call call, TCallStatus status)
        {
            switch (status)
            {
            case TCallStatus.clsInProgress: break;

            case TCallStatus.clsCancelled: break;

            case TCallStatus.clsFinished: break;

            case TCallStatus.clsRinging: break;
                //.
                //.
                //.
            }


            // call.PstnNumber;
            // call.PstnStatus;
        }
Beispiel #23
0
        private void skype_CallStatus(Call call, TCallStatus Status)
        {
            switch (Status)
            {
                case TCallStatus.clsRinging:
                    if (_skype.ActiveCalls.Count > 1)
                    {
                        foreach (Call activeCall in _skype.ActiveCalls)
                        {
                            call.Join(activeCall.Id);
                            break;
                        }
                    }
                    else
                        call.Answer();
                    break;

                default:
                    break;
            }
        }
Beispiel #24
0
        void OnSkypeCallStatus(Call call, TCallStatus status)
        {
            log.Info("SkypeCallStatus: {0}", status);
            if (status == TCallStatus.clsInProgress)
            {
                this.call = call;
                call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypePort, MicPort.ToString());
                call.set_InputDevice(TCallIoDeviceType.callIoDeviceTypeSoundcard, "");

                call.set_OutputDevice(TCallIoDeviceType.callIoDeviceTypeFile, SkypeFx.Properties.Settings.Default["LogPath"] + "\\" + Util.MakeValidFileName(call.PartnerDisplayName + "_" + System.DateTime.Now.ToString("yyMMdd-HHmmss.wav")));
                call.set_InputDevice(TCallIoDeviceType.callIoDeviceTypePort, OutPort.ToString());
            }
            else if (status == TCallStatus.clsFinished)
            {
                call = null;
                lock (outStreamLock)
                {
                    outStream.Dispose();
                }
                micStream.Dispose();
            }
        }
Beispiel #25
0
        private void skype_CallStatus(Call call, TCallStatus status)
        {
            if (status == TCallStatus.clsRinging)
            {
                if (call.PartnerHandle == txbConsultant.Text)
                {
                    call.Answer();
                    Point screenBounds = ScreenBounds;
                    SkypeAutomation.SkypeObj.SendMessage(txbConsultant.Text, string.Format("screenbounds({0},{1})", screenBounds.X, screenBounds.Y));

                    SkypeAutomation.ShareFullScreen();
                }
                else
                    call.Finish();
            }
        }
Beispiel #26
0
        private void Skype_CallStatus(Call aCall, TCallStatus aStatus)
        {
            switch (aStatus)
            {
            case TCallStatus.clsRinging:
                // A call is ringing, see if it is us calling or
                // someone calling us
                if (aCall.Type == TCallType.cltIncomingP2P || aCall.Type == TCallType.cltIncomingPSTN)
                {
                    // Make sure this isn't a SkypeOut call request
                    if (aCall.PartnerHandle.Equals(_strMobileUser))
                    {
                        WriteToLog("SkypeOut call from " + _strMobileUser);
                        WriteToLog("Allowing call to be forwarded by Skype");
                        return;
                    }
                    // Incoming call, we need to initiate forwarding
                    WriteToLog("Answering call from " + aCall.PartnerHandle);
                    aCall.Answer();
                    this._intIncomingCallId = aCall.Id;
                    aCall.set_InputDevice(TCallIoDeviceType.callIoDeviceTypeSoundcard, "default");
                    aCall.set_InputDevice(TCallIoDeviceType.callIoDeviceTypePort, "1");
                    string strWavPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\PleaseWait.wav";
                    aCall.set_InputDevice(TCallIoDeviceType.callIoDeviceTypeFile, strWavPath);
                    System.Threading.Thread.Sleep(8000);
                    aCall.set_InputDevice(TCallIoDeviceType.callIoDeviceTypeFile, "");
                    WriteToLog("Placing call on hold");
                    aCall.Hold();

                    // Check to see if we need to foward this to
                    // a configured SkypeIn mapping
                    string strTargetNumber;
                    if (this._colSkypeInMappings.ContainsKey(aCall.TargetIdentity))
                    {
                        // Yes set the target to the configured value
                        strTargetNumber = this._colSkypeInMappings[aCall.TargetIdentity];
                        WriteToLog("Calling SkypeIn forwarding number " + strTargetNumber);
                    }
                    else
                    {
                        // No, use the mobile user
                        strTargetNumber = this._strMobileUser;
                        WriteToLog("Calling mobile user");
                    }

                    System.Threading.Thread.Sleep(500);
                    try
                    {
                        Call oCall = _objSkype.PlaceCall(strTargetNumber, null, null, null);
                        this._intOutgoingCallId = oCall.Id;
                    }
                    catch (Exception ex)
                    {
                        WriteToLog("Error trying to call target: " + ex.Message);
                    }
                }
                break;

            case TCallStatus.clsInProgress:
                // We have a new call opened. Make sure it's our outgoing call
                if (aCall.Id == this._intOutgoingCallId)
                {
                    // Yes, the target user has answered.
                    WriteToLog("Target user has answered, attempting to join calls");
                    foreach (Call objCall in _objSkype.ActiveCalls)
                    {
                        if (objCall.Id == this._intIncomingCallId)
                        {
                            WriteToLog("Joining the calls...");
                            objCall.Join(aCall.Id);
                            WriteToLog("Taking incoming call off hold");
                            objCall.Resume();
                        }
                    }
                }
                break;

            case TCallStatus.clsFinished:
                // Someone has hung up, end the call
                WriteToLog("Someone has hung up. Attempting to end the conference");
                foreach (Conference objConf in _objSkype.Conferences)
                {
                    foreach (Call objCall in objConf.Calls)
                    {
                        if (objCall.Id == this._intIncomingCallId || objCall.Id == this._intOutgoingCallId)
                        {
                            System.Threading.Thread.Sleep(500);
                            try
                            {
                                objCall.Finish();
                            }
                            catch (Exception) { }
                            try
                            {
                                objConf.Finish();
                            }
                            catch (Exception) { }
                        }
                    }
                }
                break;

            default:
                // Something else?
                if ((aCall.Type == TCallType.cltOutgoingP2P || aCall.Type == TCallType.cltOutgoingPSTN) && (
                        aCall.Status == TCallStatus.clsCancelled ||
                        aCall.Status == TCallStatus.clsFailed ||
                        aCall.Status == TCallStatus.clsMissed ||
                        aCall.Status == TCallStatus.clsRefused ||
                        aCall.Status == TCallStatus.clsVoicemailPlayingGreeting ||
                        aCall.Status == TCallStatus.clsVoicemailRecording
                        )
                    )
                {
                    WriteToLog("Error calling target user: "******"Redirecting to voicemail");
                    // End the other call
                    foreach (Call objCall in _objSkype.ActiveCalls)
                    {
                        if (objCall.Id == this._intOutgoingCallId)
                        {
                            try
                            {
                                objCall.Finish();
                            }
                            catch (Exception ex)
                            {
                                WriteToLog("Error trying to end voicemail call: " + ex.Message);
                            }
                        }
                    }
                    // Now redirect the incoming call
                    foreach (Call objCall in _objSkype.ActiveCalls)
                    {
                        if (objCall.Id == this._intIncomingCallId)
                        {
                            System.Threading.Thread.Sleep(500);
                            try
                            {
                                //objCall.Resume();
                                objCall.RedirectToVoicemail();
                                objCall.Finish();
                                //objCall.Status = TCallStatus.clsFinished;
                            }
                            catch (Exception ex)
                            {
                                WriteToLog("Error trying to divert to voicemail: " + ex.Message);
                                objCall.Finish();
                            }
                        }
                    }
                }
                break;
            }
        }
Beispiel #27
0
        // **** TransferredBy seems to always be empty here. ****
        public void OurCallTransferStatusChanged(Call call, TCallStatus status)
        {
            // Always use try/catch with ANY Skype calls.
            try
            {
                // Write Call Transfer Status Changed to Window.
                AddTextToTextBox1(DateTime.Now.ToLocalTime() + ": " +
                 "Call Transfer Status Changed - Call Id: " + call.Id +
                 " - Type Converted: " + skype.Convert.CallTypeToText(call.Type) +
                 " - Type: " + call.Type +
                 " - PartnerHandle: " + call.PartnerHandle +
                 " - TargetIdentity: " + call.TargetIdentity +
                 " - Transferred To: " + call.TransferredTo +
                 " - Transferred By: " + call.TransferredBy +
                 " - Transfer Active: " + call.TransferActive +
                 " - Call Transfer Status Changed - TCallStatus Converted Status: " + skype.Convert.CallStatusToText(status) +
                 " - TCallStatus: " + status +
                 " - Duration: " + call.Duration +
                 " - Rate: " + call.Rate +
                 " - Rate Currency: " + call.RateCurrency +
                 " - Rate Precision: " + call.RatePrecision);

                // If this call is from a SkypeIn/Online number, show which one.
                if (call.Type == TCallType.cltIncomingPSTN) AddTextToTextBox1(" - From Online Number: " + call.TargetIdentity);

                // Write end of line, new line to Window.
                AddTextToTextBox1("\r\n");
            }
            catch (Exception e)
            {
                // Possibly old Skype4COM version, log an error, drop into debug if wanted.
                AddTextToTextBox1(DateTime.Now.ToLocalTime() + ": " +
                 "Call Transfer Status Changed Event Fired - Bad Text" +
                 " - Exception Source: " + e.Source + " - Exception Message: " + e.Message +
                 "\r\n");

                // If the "Use Auto Debug" check box is checked and we are in debug, drop into debug here when retry, otherwise, prompt for action.
                Debug.Assert(!this.UseAutoDebug.Checked);
            }
        }
Beispiel #28
0
 protected abstract void Skype_CallStatus(Call pCall, TCallStatus Status);
Beispiel #29
0
        private void CallStatus(Call call, TCallStatus status)
        {
            System.Console.WriteLine("Call Status:" + converter.CallStatusToText(status));
            System.Console.WriteLine("Call: " + converter.CallTypeToText(call.Type));
            if (status == TCallStatus.clsRinging && (call.Type == TCallType.cltIncomingPSTN || call.Type == TCallType.cltIncomingP2P))
            {
                System.Console.WriteLine("Incomming Call");
            }
            if ((status == TCallStatus.clsBusy || status == TCallStatus.clsCancelled || status == TCallStatus.clsFailed || status == TCallStatus.clsFinished))
            {
                System.Console.WriteLine("Ending Call");
                try
                {
                    Command hook = new Command();
                    hook.Command = "hook on";
                    oSkype.SendCommand(hook);
                    hook.Command = "hook off";
                    oSkype.SendCommand(hook);
                    radioButton2.Checked = false;
                }
                catch
                { }

                Console.WriteLine("Active Calls: " + oSkype.ActiveCalls.Count.ToString());

                if (oSkype.ActiveCalls.Count == 0)
                {
                    Console.WriteLine("Sending Email...");
                    sendmail();
                    Progress = false;
                    Console.WriteLine("Email Sent");
                    CheckMail.Enabled = true;
                }
            }
            if ((status == TCallStatus.clsInProgress))
            {
                if (Progress == false)
                {
                    Progress = true;
                    inProgress();
                }
                System.Console.WriteLine("In Progress - muting");
                ((ISkype)oSkype).Mute = true;
                Console.WriteLine("Recording");
                radioButton2.Checked = true;
                call.set_OutputDevice(TCallIoDeviceType.callIoDeviceTypeFile, "C:/Users/Robert/skype/" + call.Id.ToString() + ".wav");
                recordings.Add("C:/Users/Robert/skype/" + call.Id.ToString() + ".wav");
            }
        }
Beispiel #30
0
        private caller createCaller(int id, TCallStatus status)
        {
            caller call = new caller();
            call.id = id;
            call.status = status;

            Console.WriteLine("Creating caller: " + call);

            if (!checkCallExists(call))
            {
                calls.Add(call);
            }
            else
            {
                ((caller)calls[findID(id)]).status = status;
            }

            return call;
        }
        private void Skype_CallStatus(Call pCall, TCallStatus status)
        {
            if (Logger.IsDebugEnabled)
            {
                Logger.Debug("TextToSpeechBehaviour Skype_CallStatus " + status);
            }

            if (status == TCallStatus.clsRinging)
            {
                synthesizer.SpeakAsync(string.Format("{0}", pCall.PartnerDisplayName)); 
            }
        }
Beispiel #32
0
        private void CallStatus(Call call, TCallStatus status)
        {
            createCaller(call.Id, status);

            if ((status == TCallStatus.clsBusy || status == TCallStatus.clsCancelled || status == TCallStatus.clsFailed || status == TCallStatus.clsFinished))
            {
                //end the call
                Command command = new Command();
                command.Command = "hook on";
                m_skype.SendCommand(command);
                incall = false;
                emailsent = false;
            }
        }
Beispiel #33
0
        private void MainForm_CallStatus(Call pCall, TCallStatus status)
        {
            Log(String.Format("Call Stats Changed: {0}", status.ToString()));

            switch (status)
            {
            case TCallStatus.clsUnknown:
                break;

            case TCallStatus.clsUnplaced:
                break;

            case TCallStatus.clsRouting:
                break;

            case TCallStatus.clsEarlyMedia:
                break;

            case TCallStatus.clsFailed:
                break;

            case TCallStatus.clsRinging:
                Log(String.Format("Calling {0}({1})", pCall.PartnerDisplayName, pCall.PartnerHandle));
                break;

            case TCallStatus.clsInProgress:
                Log(String.Format("Calling {0}({1})", pCall.PartnerDisplayName, pCall.PartnerHandle));
                break;

            case TCallStatus.clsOnHold:
                break;

            case TCallStatus.clsFinished:
                break;

            case TCallStatus.clsMissed:
                break;

            case TCallStatus.clsRefused:
                break;

            case TCallStatus.clsBusy:
                break;

            case TCallStatus.clsCancelled:
                break;

            case TCallStatus.clsLocalHold:
                break;

            case TCallStatus.clsRemoteHold:
                break;

            case TCallStatus.clsVoicemailBufferingGreeting:
                break;

            case TCallStatus.clsVoicemailPlayingGreeting:
                break;

            case TCallStatus.clsVoicemailRecording:
                break;

            case TCallStatus.clsVoicemailUploading:
                break;

            case TCallStatus.clsVoicemailSent:
                break;

            case TCallStatus.clsVoicemailCancelled:
                break;

            case TCallStatus.clsVoicemailFailed:
                break;

            case TCallStatus.clsTransferring:
                break;

            case TCallStatus.clsTransferred:
                break;
            }
        }
 private void callStatusChangedEvent(ICall iCall, TCallStatus newStatus)
 {
     if (iCall.Id != this.call.Id)
         return;
     logger.Info("Status changed (ID = " + iCall.Id + "): " + newStatus);
 }
        public void Skype_CallStatus(Call call, TCallStatus status)
        {
            // Write Call Status to Window
            this.textBox1.AppendText("Call Status: " + skype.Convert.CallStatusToText(status));
            this.textBox1.AppendText( " - " + status.ToString() + Environment.NewLine);
            this.textBox1.ScrollToCaret();

            if ((status > TCallStatus.clsUnplaced) && (status < TCallStatus.clsOnHold) && (status != TCallStatus.clsFailed))
            {
                // Could Start or Stop something when a call starts here
            }
            else
            {
                // Could Stop or Resume something when a call stops here
            }
        }
        private void ChangeCallStatus(Call call, TCallStatus status)
        {
            try
            {
                //call is now calling
                string storefilelocation = "";
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                if (config.AppSettings.Settings["localVoiceRecordsPath"].Value != null && config.AppSettings.Settings["localVoiceRecordsPath"].Value!="")
                {
                    if (!Directory.Exists(config.AppSettings.Settings["localVoiceRecordsPath"].Value.Replace(",", "")))
                    {
                        Directory.CreateDirectory(config.AppSettings.Settings["localVoiceRecordsPath"].Value.Replace(",", ""));
                    }
                    storefilelocation = config.AppSettings.Settings["localVoiceRecordsPath"].Value.Replace(",", "") + "\\";
                }
                else
                {
                    MessageBox.Show("Local sound file location does not exist");
                    return;
                }

                lblCallStatus.Visible = true;
                if (status == TCallStatus.clsRinging)
                {
                    //this person calling -> call.PartnerDisplayName;
                    lblCallStatus.Text = "now calling";
                }

                //press disallow
                else if (status == TCallStatus.clsRefused)
                {
                    lblCallStatus.Text = "Refuse";
                }

                //press stop
                else if (status == TCallStatus.clsCancelled)
                {
                    lblCallStatus.Text = "Cancell";
                }

                //talk is now progress
                else if (status == TCallStatus.clsInProgress)
                {
                    picSound.Visible = true;
                    lblCallStatus.Text = "Call progress";
                    //record voice
                    //call.set_OutputDevice(TCallIoDeviceType.callIoDeviceTypeFile, storefilelocation + "in.wav");
                    //call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypeFile, storefilelocation + "capture.wav");

                    call.set_OutputDevice(TCallIoDeviceType.callIoDeviceTypeFile, storefilelocation + "in.wav");
                    call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypeFile, storefilelocation + "capture.wav");

                }

                //call is finish (now can wav convert to mp3)
                else if (status == TCallStatus.clsFinished)
                {
                    lblCallStatus.Visible = picSound.Visible = false;
                    lblCallStatus.Text = "Call end";
                    MergeFiles();
                    if (skype != null)
                    {
                        Marshal.ReleaseComObject(skype);
                    }
                    skype = null;
                    btnCall.Enabled = true;

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
            finally
            {
            }
        }
Beispiel #37
0
        static void SkypeObj__ISkypeEvents_Event_CallStatus(Call pCall, TCallStatus Status)
        {
            #if DEBUG
            Console.WriteLine("通话时长为:"+pCall.Duration);
            Console.WriteLine("SkypeObj__ISkypeEvents_Event_CallStatus" + System.DateTime.Now.ToShortTimeString() + "当前状态为:" + Status.ToString());
            #endif
            foreach (TCallStatus status in failedStatus)
            {
                if (Status == status)
                {
                    HandOff();
                }
            }

              //  pCall.
        }
        public void OurCallStatus(Call call, TCallStatus status)
        {
            try
            {
                if (call.VideoSendStatus == TCallVideoSendStatus.vssAvailable)
                {
                    call.StartVideoSend();
                }
            }
            catch
            {
            }


            // Always use try/catch with ANY Skype calls.
            try
            {
                if (status == TCallStatus.clsRinging)
                {
                    if (numCalls == 0)
                    {
                        call.Answer();


                        callID = call.Id;
                        numCalls++;
                    }

                    else if (numCalls == 1 && callID != call.Id)
                    {
                        try
                        {
                            this.BeginInvoke((Action)(() =>
                            {
                                call.Finish();
                            }));
                        }
                        catch (InvalidCastException e)
                        {
                        }
                    }
                }
                // If this call is from a SkypeIn/Online number, show which one.
                else if (call.Type == TCallType.cltIncomingP2P && status == TCallStatus.clsInProgress && call.Id == callID)
                {
                    selectedSkypeChatUser = call.PartnerHandle.ToString();

                    this.BeginInvoke((Action)(() =>
                    {
                        skype.SendMessage(selectedSkypeChatUser, Properties.Settings.Default.controllerMessage);
                    }));

                    chatUserSelected = true;

                    user_combobox.ResetText();
                    user_combobox.SelectedText = call.PartnerHandle.ToString();

                    if (!skypeUserTabs.Contains(new SkypeUserTab(call.PartnerHandle)))
                    {
                        user_combobox.Items.Add(call.PartnerHandle);
                        var newTabUser = new SkypeUserTab(call.PartnerHandle);
                        skypeUserTabs.Add(newTabUser);
                        tabUsers.Controls.Add(newTabUser.tabPage);
                    }
                }

                else if (status == TCallStatus.clsFinished && call.Id == callID)
                {
                    numCalls--;
                    callID = 0;
                }
            }
            catch (Exception e)
            {
            }
        }
Beispiel #39
0
        void OnSkypeCallStatus(Call call, TCallStatus status)
        {
            log.Info("SkypeCallStatus: {0}", status);
            if (status == TCallStatus.clsInProgress)
            {
                this.call = call;
                call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypePort, MicPort.ToString());
                call.set_InputDevice(TCallIoDeviceType.callIoDeviceTypeSoundcard, "");

                call.set_OutputDevice(TCallIoDeviceType.callIoDeviceTypeFile, SkypeFx.Properties.Settings.Default["LogPath"]+"\\" + Util.MakeValidFileName(call.PartnerDisplayName + "_" + System.DateTime.Now.ToString("yyMMdd-HHmmss.wav")));
                call.set_InputDevice(TCallIoDeviceType.callIoDeviceTypePort, OutPort.ToString());
            }
            else if (status == TCallStatus.clsFinished)
            {
                call = null;
                lock (outStreamLock)
                {
                    outStream.Dispose();
                }
                micStream.Dispose();
            }
        }
Beispiel #40
0
        /// <summary>
        /// Change status call (voice)
        /// </summary>
        /// <remarks>
        /// Voice message
        /// </remarks>
        /// <param name="call">talk to person</param>
        /// <param name="status">status of talk</param>
        private void ChangeCallStatus(Call call, TCallStatus status)
        {
            try
            {
                //call is now calling
                if (status == TCallStatus.clsRinging)
                {
                    //this person calling -> call.PartnerDisplayName;
                }

                //press disallow
                else if (status == TCallStatus.clsRefused)
                {

                }

                //press stop
                else if (status == TCallStatus.clsCancelled)
                {

                }

                //talk is now progress
                else if (status == TCallStatus.clsInProgress)
                {
                    //record voice
                    string uniqueLabel = string.Empty;
                    uniqueLabel = DateTime.Now.ToString();
                    uniqueLabel = uniqueLabel.Replace(":", "");
                    uniqueLabel = uniqueLabel.Replace(" ", "");
                    uniqueLabel = uniqueLabel.Replace("-", "");

                    call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypeFile, tempVoiceDirectory + "\\" + uniqueLabel + "speaker.wav");
                    call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypeFile, tempVoiceDirectory + "\\" + uniqueLabel + "microfon.wav");
                }

                //call is finish (now can wav convert to mp3)
                else if (status == TCallStatus.clsFinished)
                {

                }
            }
            catch (Exception ex)
            {
                ErrorCode = ex.Message;
            }
        }
Beispiel #41
0
 private void OnCallStatus(Call call, TCallStatus status)
 {
     switch (status)
     {
         case TCallStatus.clsRinging:
             if (call.Type == TCallType.cltIncomingP2P || call.Type == TCallType.cltIncomingPSTN)
             {
                 if ( calls.FirstOrDefault(c => call.PartnerHandle == c.PartnerHandle ) == null )
                 {
                     calls.Add(call);
                     CallEvent(IncomingCall, new CallEventArgs(call));
                 }
             }
             break;
         case TCallStatus.clsInProgress:
             break;
         case TCallStatus.clsLocalHold:
             break;
         case TCallStatus.clsOnHold:
             break;
         case TCallStatus.clsTransferring:
             break;
         case TCallStatus.clsTransferred:
             break;
         case TCallStatus.clsRemoteHold:
             break;
         case TCallStatus.clsEarlyMedia:
             break;
         default:
         {
             if( calls != null )
                 calls.RemoveAll( n=> n.PartnerHandle == call.PartnerHandle);
         }
         break;
     }
 }
Beispiel #42
0
 private void Skype_CallTransferStatusChanged(Call call, TCallStatus status)
 {
     this.Logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name);
 }
 private void Skype_CallStatus(Call pCall, TCallStatus Status)
 {
     SetOnCall(Status == TCallStatus.clsInProgress);
 }
        public void OurCallStatus(Call call, TCallStatus status)
        {
            try
            {
                if (status == TCallStatus.clsInProgress /*call.VideoSendStatus == TCallVideoSendStatus.vssAvailable*/)
                {
                    call.StartVideoSend();
                }
            }
            catch
            {

            }

            // Always use try/catch with ANY Skype calls.
            try
            {
                if (status == TCallStatus.clsRinging)
                {
                    if (numCalls == 0)
                    {
                        call.Answer();

                        callID = call.Id;
                        numCalls++;
                    }

                    else if (numCalls == 1 && callID != call.Id)
                    {
                       try
                       {
                           this.BeginInvoke((Action)(() =>
                           {
                               call.Finish();
                           }));
                       }
                       catch (InvalidCastException e)
                       {
                       }
                    }
                }
                // If this call is from a SkypeIn/Online number, show which one.
                else if (call.Type == TCallType.cltIncomingP2P && status == TCallStatus.clsInProgress && call.Id == callID)
                {
                    selectedSkypeChatUser = call.PartnerHandle.ToString();

                    this.BeginInvoke((Action)(() =>
                    {
                        skype.SendMessage(selectedSkypeChatUser, Properties.Settings.Default.controllerMessage);
                    }));

                    chatUserSelected = true;

                    user_combobox.ResetText();
                    user_combobox.SelectedText = call.PartnerHandle.ToString();

                    if (!skypeUserTabs.Contains(new SkypeUserTab(call.PartnerHandle)))
                    {
                        user_combobox.Items.Add(call.PartnerHandle);
                        var newTabUser = new SkypeUserTab(call.PartnerHandle);
                        skypeUserTabs.Add(newTabUser);
                        tabUsers.Controls.Add(newTabUser.tabPage);
                    }

                }

                else if (status == TCallStatus.clsFinished && call.Id == callID)
                {
                    numCalls--;
                    callID = 0;
                }
            }
            catch (Exception e)
            {
            }
        }
 void skype_CallStatus(Call pCall, TCallStatus Status)
 {
     switch (Status)
     {
         case TCallStatus.clsBusy:
         case TCallStatus.clsCancelled:
         case TCallStatus.clsFailed:
         case TCallStatus.clsRefused:
             string msg = "Call between ";
             foreach(Participant participant in pCall.Participants)
             {
                 msg += participant.Handle + ", ";
             }
             throw new CallWasUnsuccessfulException(msg + ".  Call " + Status.ToString() + ".");
         default:
             break;
     }
 }
        private void SkypeOnCallStatus(Call pCall, TCallStatus status)
        {
            Debug.WriteLine("SkypeOnCallStatus event fired. Call: {0}, Status: {1}", 
                _skype.Convert.CallTypeToText(pCall.Type), _skype.Convert.CallStatusToText(status));

            _callStatus = status;

            if (status == TCallStatus.clsFinished)
            {
                SetTrayIcon(false);
            }
            
            IList<Conference> activeConferences = _skype.Conferences.Cast<Conference>().ToList();
            IList<Conference> finishedConferences = new List<Conference>();
            foreach (Conference conference in ActiveConferences)
            {
                Conference c2 = conference;
                if (activeConferences.Any(c1 => c1 == c2) == false)
                {
                    finishedConferences.Add(conference);
                }
            }

            foreach (Conference conference in ActiveConferences.Where(c => !activeConferences.Contains(c)).ToList())
            {
                ActiveConferences.Remove(conference);
            }

            foreach (Conference conference in activeConferences.Where(c => !ActiveConferences.Contains(c)).ToList())
            {
                ActiveConferences.Add(conference);
            }
        }