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); } }
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); }
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(); }
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(); }