Ejemplo n.º 1
0
        void call_CallStateChanged(object sender, Ozeki.VoIP.VoIPEventArgs <CallState> e)
        {
            if (e.Item.IsInCall())
            {
                if (firstInCall)
                {
                    try
                    {
                        entry.State           = WorkState.InProgress;
                        firstInCall           = false;
                        ringingTimer.Elapsed -= ringingTimer_Elapsed;
                        waveStreamPlayback    = new WaveStreamPlayback(entry.SoundPath);
                        call.ConnectAudioSender(waveStreamPlayback);

                        waveStreamPlayback.Stopped += waveStreamPlayback_Stopped;

                        waveStreamPlayback.StartStreaming();
                        progressTimer.Start();
                    }
                    catch (Exception ex)
                    {
                        OnWorkCompleted(WorkState.FileError);
                    }
                }
            }
            else if (e.Item.IsCallEnded())
            {
                OnWorkCompleted(WorkState.HungUpByRemote);
            }
        }
Ejemplo n.º 2
0
        public MediaManager(ICall call)
        {
            mediaConnector = new MediaConnector();

            phoneCallAudioReceiver = new AudioMixerMediaHandler();
            phoneCallAudioSender = new AudioMixerMediaHandler();

            incomingAudioMixer = new AudioMixerMediaHandler();
            outgoingAudioMixer = new AudioMixerMediaHandler();

            call.ConnectAudioSender(outgoingAudioMixer);
            call.ConnectAudioReceiver(incomingAudioMixer);
            //mediaConnector.Connect(phoneCallAudioReceiver, incomingAudioMixer);
            //mediaConnector.Connect(outgoingAudioMixer, phoneCallAudioSender);

            //phoneCallAudioReceiver.AttachToCall(call);
            //phoneCallAudioSender.AttachToCall(call);
        }
Ejemplo n.º 3
0
        public MediaManager(ICall call)
        {
            mediaConnector = new MediaConnector();

            phoneCallAudioReceiver = new AudioMixerMediaHandler();
            phoneCallAudioSender   = new AudioMixerMediaHandler();

            incomingAudioMixer = new AudioMixerMediaHandler();
            outgoingAudioMixer = new AudioMixerMediaHandler();

            call.ConnectAudioSender(outgoingAudioMixer);
            call.ConnectAudioReceiver(incomingAudioMixer);
            //mediaConnector.Connect(phoneCallAudioReceiver, incomingAudioMixer);
            //mediaConnector.Connect(outgoingAudioMixer, phoneCallAudioSender);

            //phoneCallAudioReceiver.AttachToCall(call);
            //phoneCallAudioSender.AttachToCall(call);
        }
Ejemplo n.º 4
0
        private void CallPressed(string phoneNumber)
        {
            Logger.Log("Calling " + phoneNumber);

            WaveStreamPlayback waveStream = null;

            initiatedCall = apiExt.CreateCall(UsedPhoneNumber, phoneNumber, phoneNumber);
            if (initiatedCall == null)
                return;
            bool transferStarted = false;
            initiatedCall.CallStateChanged += (sender, e) =>
            {
                try
                {

                    if (e.Item == CallState.Answered)
                    {
                        if (transferStarted)
                        {
                            initiatedCall.DisconnectAudioSender(waveStream);
                            waveStream.Dispose();

                            var tts = new TextToSpeech();

                            tts.Stopped += (sender1, e1)=>{
                                                              tts.Dispose();
                                                              initiatedCall.HangUp();
                                                          };

                            initiatedCall.ConnectAudioSender(tts);
                            tts.AddAndStartText(string.Format("Calling {0} has failed. Please try again later.", phoneNumber));
                            return;
                        }

                        var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OPSCallAssistant.Resources.ringback.wav");
                        waveStream = new WaveStreamPlayback(stream, true, true);

                        initiatedCall.ConnectAudioSender(waveStream);
                        waveStream.StartStreaming();

                        transferStarted = true;
                        initiatedCall.BlindTransfer(phoneNumber);

                    }
                    if (e.Item.IsCallEnded())
                    {
                        if (waveStream != null)
                            waveStream.Dispose();
                    }
                }
                catch(Exception ex)
                {
                    Logger.Log(ex.Message);
                    Logger.Log(ex.StackTrace);
                }

                var k = 65;

            };
            initiatedCall.Start();
        }
Ejemplo n.º 5
0
        private void CallPressed(string phoneNumber)
        {
            Logger.Log("Calling " + phoneNumber);

            WaveStreamPlayback waveStream = null;

            initiatedCall = apiExt.CreateCall(UsedPhoneNumber, phoneNumber, phoneNumber);
            if (initiatedCall == null)
            {
                return;
            }
            bool transferStarted = false;

            initiatedCall.CallStateChanged += (sender, e) =>
            {
                try
                {
                    if (e.Item == CallState.Answered)
                    {
                        if (transferStarted)
                        {
                            initiatedCall.DisconnectAudioSender(waveStream);
                            waveStream.Dispose();

                            var tts = new TextToSpeech();

                            tts.Stopped += (sender1, e1) => {
                                tts.Dispose();
                                initiatedCall.HangUp();
                            };

                            initiatedCall.ConnectAudioSender(tts);
                            tts.AddAndStartText(string.Format("Calling {0} has failed. Please try again later.", phoneNumber));
                            return;
                        }

                        var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OPSCallAssistant.Resources.ringback.wav");
                        waveStream = new WaveStreamPlayback(stream, true, true);

                        initiatedCall.ConnectAudioSender(waveStream);
                        waveStream.StartStreaming();

                        transferStarted = true;
                        initiatedCall.BlindTransfer(phoneNumber);
                    }
                    if (e.Item.IsCallEnded())
                    {
                        if (waveStream != null)
                        {
                            waveStream.Dispose();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex.Message);
                    Logger.Log(ex.StackTrace);
                }

                var k = 65;
            };
            initiatedCall.Start();
        }