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