Пример #1
0
        public void Dispose()
        {
            closeResetEvents();

            // Calling part here
            if (voiceXmlBrowser != null)
            {
                voiceXmlBrowser.Dispose();
                voiceXmlBrowser = null;
            }
        }
Пример #2
0
        private void InitializeVoiceXmlBrowser()
        {
            voiceXmlBrowser = new Microsoft.Rtc.Collaboration.AudioVideo.VoiceXml.Browser();
            voiceXmlBrowser.Disconnecting
                += new EventHandler <DisconnectingEventArgs>(HandleDisconnecting);
            voiceXmlBrowser.Disconnected
                += new EventHandler <DisconnectedEventArgs>(HandleDisconnected);
            voiceXmlBrowser.SessionCompleted
                += new EventHandler <SessionCompletedEventArgs>(HandleSessionCompleted);

            voiceXmlBrowser.SetAudioVideoCall(audioVideoCall);
        }
        // Initializes the Browser object and registers event handlers.
        private void InitializeVoiceXmlBrowser()
        {
            // Create a Browser instance if one doesn’t already exist.
            if (_voiceXmlBrowser == null)
            {
                // Create the browser object, and bind all associated event handlers.
                Console.WriteLine("Call state: " + _audioVideoCall.State.ToString() + "\nMedia flow state: " + _audioVideoCall.Flow.State.ToString());

                _voiceXmlBrowser = new Microsoft.Rtc.Collaboration.AudioVideo.VoiceXml.Browser();

                _voiceXmlBrowser.Disconnecting
                    += new EventHandler <DisconnectingEventArgs>(HandleDisconnecting);
                _voiceXmlBrowser.Disconnected
                    += new EventHandler <DisconnectedEventArgs>(HandleDisconnected);
                _voiceXmlBrowser.SessionCompleted
                    += new EventHandler <SessionCompletedEventArgs>(HandleSessionCompleted);
            }
        }
Пример #4
0
        private void ProcessCall(object state)
        {
            WaitHandle.WaitAll(waitToProcessCall);

            InitializeVoiceXmlBrowser();

            PlayMenu("mainmenu");

            waitForMenuInput.WaitOne();

            // Calling part here
            voiceXmlBrowser.Dispose();
            voiceXmlBrowser = null;

            audioVideoCall.StateChanged -= this.AudioVideoCall_StateChanged;

            if (selectedOptions.Count >= 2)
            {
                if (!string.IsNullOrEmpty(selectedOptions[0]) && !string.IsNullOrEmpty(selectedOptions[1]))
                {
                    string helpdeskExtension = parser.HelpdeskNumber(selectedOptions[0], selectedOptions[1]);
                    if (!string.IsNullOrEmpty(helpdeskExtension))
                    {
                        this.logger.Log("Transferring user {0} to helpdesk# {1}", audioVideoCall.OriginalDestinationUri, helpdeskExtension);

                        if (audioVideoCall.State == CallState.Established)
                        {
                            audioVideoCall.BeginTransfer(
                                helpdeskExtension,
                                new CallTransferOptions(CallTransferType.Attended),
                                result =>
                            {
                                try
                                {
                                    audioVideoCall.EndTransfer(result);
                                }
                                catch (OperationFailureException ofe)
                                {
                                    this.logger.Log("The recipient declined or did not answer the call:{0}",
                                                    ofe);
                                }
                                catch (RealTimeException rte)
                                {
                                    this.logger.Log("Error transferring call:{0}", rte);
                                }
                            }, null);
                        }
                    }
                    else
                    {
                        this.logger.Log("Unable to find helpdesk number for {0} -> {1}", selectedOptions[0], selectedOptions[1]);
                        TerminateCall();
                    }
                }
                else
                {
                    this.logger.Log("Option Selected are less than 2");
                    TerminateCall();
                }
            }
            else
            {
                this.logger.Log("No user input");
                TerminateCall();
            }
        }