Exemple #1
0
        /// <summary>
        /// Menu level changed handler.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuLevelChanged(object sender, MenuLevelChangedEventArgs e)
        {
            if (e.Level == MenuLevel.HelpDeskRequested)
            {
                lock (this.syncRoot)
                {
                    if (this.callAnchor == null)
                    {
                        this.callAnchor = new CustomerCallAnchor(this, this.logger, this.conversation);
                    }

                    try
                    {
                        var helpdeskNumber = e.HelpdeskNumber;
                        if (String.IsNullOrEmpty(helpdeskNumber))
                        {
                            Console.WriteLine("Null or empty help desk number");
                            this.logger.Log("Null or empty help desk number");
                        }
                        else
                        {
                            try
                            {
                                RealTimeAddress address = new RealTimeAddress(helpdeskNumber);

                                this.callAnchor.BeginEstablish(address,
                                                               (asyncResult) =>
                                {
                                    try
                                    {
                                        this.callAnchor.EndEstablish(asyncResult);
                                    }
                                    catch (Exception ex)
                                    {
                                        this.callAnchor.BeginTerminate((terminateAsyncResult) => { this.callAnchor.EndTerminate(terminateAsyncResult); }, null);
                                        Console.WriteLine("Call anchor failed with {0}", ex);
                                        this.logger.Log("Call anchor failed with {0}", ex);
                                    }
                                },
                                                               null);
                            }
                            catch (ArgumentException ae)
                            {
                                Console.WriteLine("Invalid help desk number {0}, Exception ={1}", helpdeskNumber, ae);
                                this.logger.Log("Invalid help desk number {0}, Exception ={1}", helpdeskNumber, ae);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Call anchor failed with {0}", ex);
                        this.logger.Log("Call anchor failed with {0}", ex);
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Raise menu level changed event.
        /// </summary>
        /// <param name="previous"></param>
        /// <param name="current"></param>
        private void RaiseEvent(MenuLevel previous, MenuLevel current, string helpdeskNumber = null)
        {
            var eventHandler = this.MenuLevelChanged;

            if (eventHandler != null)
            {
                MenuLevelChangedEventArgs eventArgs = new MenuLevelChangedEventArgs(previous, current);
                eventArgs.HelpdeskNumber = helpdeskNumber;
                eventHandler(this, eventArgs);
            }
        }