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(); }
void call_DtmfStarted(object sender, Ozeki.VoIP.VoIPEventArgs <DtmfSignal> e) { string target = null; if (config.IVRSettings == null) { return; } var ivr = config.IVRSettings; switch (e.Item.Signal) { case DtmfNamedEvents.Dtmf0: target = ivr.ZeroRedirection; break; case DtmfNamedEvents.Dtmf1: target = ivr.OneRedirection; break; case DtmfNamedEvents.Dtmf2: target = ivr.TwoRedirection; break; case DtmfNamedEvents.Dtmf3: target = ivr.ThreeRedirection; break; case DtmfNamedEvents.Dtmf4: target = ivr.FourRedirection; break; case DtmfNamedEvents.Dtmf5: target = ivr.FiveRedirection; break; case DtmfNamedEvents.Dtmf6: target = ivr.SixRedirection; break; case DtmfNamedEvents.Dtmf7: target = ivr.SevenRedirection; break; case DtmfNamedEvents.Dtmf8: target = ivr.EightRedirection; break; case DtmfNamedEvents.Dtmf9: target = ivr.NineRedirection; break; } entry.PressedNumber = (int)e.Item.Signal; if (!string.IsNullOrEmpty(target)) { call.BlindTransfer(target); } }
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(); }