示例#1
0
        private void btnConnect_Click(object sender, EventArgs e)
        {
            string address  = this.tbAddress.Text;
            int    port     = int.Parse(this.tbPort.Text);
            string user     = this.tbUser.Text;
            string password = this.tbPassword.Text;

            btnConnect.Enabled      = false;
            manager                 = new ManagerConnection(address, port, user, password);
            manager.UnhandledEvent += new ManagerEventHandler(manager_Events);
            try
            {
                // Uncomment next 2 line comments to Disable timeout (debug mode)
                // manager.DefaultResponseTimeout = 0;
                // manager.DefaultEventTimeout = 0;
                manager.Login();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error connect\n" + ex.Message);
                manager.Logoff();
                this.Close();
            }
            btnDisconnect.Enabled = true;
        }
示例#2
0
        private static void checkManagerAPI()
        {
            manager = new ManagerConnection(ASTERISK_HOST, ASTERISK_PORT, ASTERISK_LOGINNAME, ASTERISK_LOGINPWD);

            manager.NewState += new NewStateEventHandler(dam_NewStateEvent);

            manager.Dial += new DialEventHandler(dam_Dial);



            manager.PingInterval = 0;
            // +++
            try
            {
                manager.Login();                        // Login only (fast)

                Console.WriteLine("Asterisk version : " + manager.Version);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadLine();
                manager.Logoff();
                return;
            }

            Console.ReadLine();

            manager.Logoff();
        }
示例#3
0
        public static void Init()
        {
            if (Properties.Settings.Default.Server == String.Empty)
            {
                return;
            }

            try
            {
                LogWriter.Instance.WriteToLog("Try connect to ATS");
                manager = new ManagerConnection(
                    Properties.Settings.Default.Server,
                    Properties.Settings.Default.Port,
                    Properties.Settings.Default.User,
                    Properties.Settings.Default.Password,
                    Encoding.UTF8
                    );
                manager.Login();
                LogWriter.Instance.WriteToLog("ATS version " + manager.AsteriskVersion);
            } catch (Exception err)
            {
                MessageBox.Show("Ошибка подключения с серверу: " + err.Message, "Ошиюка", MessageBoxButton.OK, MessageBoxImage.Error);
                LogWriter.Instance.WriteToLog("ATS init error " + err.Message);
            }
        }
示例#4
0
        public static void OriginarLigacao(string quemLiga, string quemAtende)
        {
            try
            {
                _manager.Login();

                var ramalOriginario  = quemLiga;
                var canalParaLigacao = quemAtende;

                var actionLigacao = new OriginateAction
                {
                    Context  = "default",                 //"from-internal",
                    Priority = "1",
                    Channel  = $"SIP/{canalParaLigacao}", //SIP/peer/9001
                    CallerId = "Chapeleta de Ouro",
                    Exten    = ramalOriginario,
                    Timeout  = 15000,
                    Async    = true
                };

                var originateResponse = _manager.SendAction(actionLigacao, actionLigacao.Timeout);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        public IActionResult Index()
        {
            manager.Login();
            ManagerResponse          response  = manager.SendAction(new GetConfigAction("manager.conf"));
            List <GetConfigResponse> getConfig = new List <GetConfigResponse>();

            if (response.IsSuccess())
            {
                GetConfigResponse responseConfig = (GetConfigResponse)response;
                getConfig.Add(responseConfig);
                return(View(getConfig));
            }
            else
            {
                Console.WriteLine("");
                return(View());
            }

            //{
            //    Console.WriteLine("\nUpdateConfig action");
            //    UpdateConfigAction config = new UpdateConfigAction("manager.conf", "manager.conf");
            //    config.AddCommand(UpdateConfigAction.ACTION_NEWCAT, "testadmin");
            //    config.AddCommand(UpdateConfigAction.ACTION_APPEND, "testadmin", "secret", "blabla");
            //    ManagerResponse Newresponse = manager.SendAction(config);
            //    Console.WriteLine(Newresponse);
            //}
        }
示例#6
0
        private void ButtonConnect_Click(object sender, EventArgs e)
        {
            manager = new ManagerConnection(TextBoxHost.Text, (int)NumericUpDownPort.Value, TextBoxLogin.Text, TextBoxPassword.Text);
            manager.FireAllEvents = true;
            manager.PingInterval  = 0;

            manager.UnhandledEvent += UnhandledEvent;
            manager.Hangup         += Hangup;
            manager.NewState       += NewState;

            try
            {
                manager.Login();
                GroupBoxCall.Enabled    = true;
                GroupBoxCommand.Enabled = true;
                GroupBoxState.Enabled   = true;
                TextBoxOutput.Text     += "-----Connected-----" + Environment.NewLine + "Asterisk version : " + manager.Version + Environment.NewLine + Environment.NewLine;
            }
            catch (Exception ex)
            {
                GroupBoxCall.Enabled    = false;
                GroupBoxCommand.Enabled = false;
                GroupBoxState.Enabled   = false;
                TextBoxOutput.Text     += "-----Not connected-----" + Environment.NewLine + ex.Message + Environment.NewLine + Environment.NewLine;
            }
        }
        public bool Connect()
        {
            if (String.IsNullOrEmpty(Login) || String.IsNullOrEmpty(Address))
            {
                throw new ArgumentException("Не верны данные для подключения, проверте логин, пароль, адрес и порт!");
            }

            if (_connection != null)
            {
                if (_connection.IsConnected())
                {
                    _connection.Logoff();
                }
            }
            else
            {
                _connection = new ManagerConnection();
                _connection.FireAllEvents   = true;
                _connection.UnhandledEvent += _connection_UnhandledEvent;
                //_connection.Dial += _connection_Event_Dial; ;
                //_connection.Bridge += _connection_Event_Bridge;
                //_connection.Hangup += _connection_Event_Hangup;
            }

            _connection.Username = Login;
            _connection.Password = Password;
            _connection.Hostname = Address;
            _connection.Port     = Port;

            _connection.Login();

            return(_connection.IsConnected());
        }
示例#8
0
        static void Main(string[] args)
        {
            manager = new ManagerConnection(ASTERISK_HOST, ASTERISK_PORT, ASTERISK_LOGINNAME, ASTERISK_LOGINPWD);

            manager.PingInterval = 0;
            // +++
            try
            {
                manager.Login();                        // Login only (fast)

                Console.WriteLine("Asterisk version : " + manager.Version);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadLine();
                manager.Logoff();
                return;
            }

            if (args.Count() == 4)
            {
                string originateChannel  = args[0];
                string originateCallerId = args[1];
                string originateExten    = args[2];
                string originateContext  = args[3];
                //string originateChannel = "SIP/billy";
                //string originateCallerId = "<1001>";
                //string originateExten = "1002";
                //string originateContext = "phones";

                OriginateAction oc = new OriginateAction();

                //oc.Channel = originateChannel;
                //oc.CallerId = originateCallerId;
                //oc.Context = originateContext;
                //oc.Exten = originateExten;
                //oc.Priority = 2;
                //oc.Timeout = 15000;

                oc.Channel     = originateChannel;
                oc.CallerId    = originateCallerId;
                oc.Application = "Dial";
                oc.Data        = "Local/" + originateExten + "@" + originateContext;
                oc.Timeout     = 15000;

                try
                {
                    ManagerResponse originateResponse = manager.SendAction(oc, oc.Timeout);
                }
                catch (Exception e)
                {
                    Console.WriteLine("error: {0}", e.Message);
                }
            }
            manager.Logoff();
        }
示例#9
0
        private static void DisplayQueue()
        {
            _manager = Sessao.Configuracao.ConexaoAsterisk.ToManagerConnection();

            try
            {
                #if NOTIMEOUT
                manager.Connection.DefaultTimeout      = 0;
                manager.Connection.DefaultEventTimeout = 0;
                #endif

                _manager.Login();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine("Press ENTER to next test or CTRL-C to exit.");
                Console.ReadLine();
                return;
            }

            ResponseEvents re;
            try
            {
                re = _manager.SendEventGeneratingAction(new QueueStatusAction());
            }
            catch (EventTimeoutException e)
            {
                // this happens with Asterisk 1.0.x as it doesn't send a QueueStatusCompleteEvent
                re = e.PartialResult;
            }

            foreach (ManagerEvent e in re.Events)
            {
                if (e is QueueParamsEvent)
                {
                    QueueParamsEvent qe = (QueueParamsEvent)e;
                    Console.WriteLine("QueueParamsEvent" + "\n\tQueue:\t\t" + qe.Queue + "\n\tServiceLevel:\t" + qe.ServiceLevel);
                }
                else if (e is QueueMemberEvent)
                {
                    QueueMemberEvent qme = (QueueMemberEvent)e;
                    Console.WriteLine("QueueMemberEvent" + "\n\tQueue:\t\t" + qme.Queue + "\n\tLocation:\t" + qme.Location);
                }
                else if (e is QueueEntryEvent)
                {
                    QueueEntryEvent qee = (QueueEntryEvent)e;
                    Console.WriteLine("QueueEntryEvent" + "\n\tQueue:\t\t" + qee.Queue + "\n\tChannel:\t" + qee.Channel + "\n\tPosition:\t" + qee.Position);
                }
            }
            Console.WriteLine("Press ENTER to next test or CTRL-C to exit.");
            Console.ReadLine();
        }
示例#10
0
 //public CentralIp()
 //{
 //    Host = "172.17.1.102";
 //    Port = 5038;
 //    User = "******";
 //    Password = "******";
 //    Prefijo = "53981456935675425";
 //    Conn = new ManagerConnection(Host, Port, User, Password);
 //    Conn.Login(10000);
 //}
 public CentralIp(String Host, Int32 Port, String User, String Password, String Prefijo = "", String CodigoPais = "", String CodigoArea = "")
 {
     this.Host       = Host;
     this.Port       = Port;
     this.User       = User;
     this.Password   = Password;
     this.Prefijo    = Prefijo;
     this.CodigoPais = CodigoPais;
     this.CodigoArea = CodigoArea;
     Conn            = new ManagerConnection(Host, Port, User, Password);
     Conn.Login(10000);
 }
        private bool QuaySoGoiDien(Asterisk.NET.Manager.ManagerConnection manager, string line, string phoneNumber)
        {
            bool         bRet = false;
            const string ORIGINATE_CONTEXT = "from-internal";

            if (manager == null)
            {
                return(false);
            }
            try
            {
                if (!manager.IsConnected())
                {
                    manager = new ManagerConnection(AsteriskInfo.AST_HOSTNAME, AsteriskInfo.AST_PORT_NUMBER, AsteriskInfo.AST_USERNAME, AsteriskInfo.AST_PASSWORD);
                    manager.Login();
                }
                if (manager.IsConnected())
                {
                    Text = "Gọi đi : Kết nối tổng đài IP thành công";
                }
                else
                {
                    Text = "Gọi đi : Kết nối tổng đài IP thất bại !!!";
                }

                OriginateAction oc = new OriginateAction();
                oc.Context  = ORIGINATE_CONTEXT;
                oc.Priority = 1;
                oc.Channel  = "SIP/" + line;
                oc.CallerId = line;
                oc.Exten    = phoneNumber;
                oc.Timeout  = 30000;


                ManagerResponse originateResponse = manager.SendAction(oc, oc.Timeout);
                if (originateResponse.IsSuccess())
                {
                    bRet = true;
                }
                else
                {
                    bRet = false;
                }
            }
            catch (Exception ex)
            {
                LogError.WriteLogError("QuaySoGoiDien2", ex);
            }
            return(bRet);
        }
示例#12
0
 public void Login()
 {
     if (manager.IsConnected())
     {
         return;
     }
     try
     {
         manager.Login();
         BindEvents();
     }
     catch (Exception e)
     {
         StartReconnectProcess();
     }
 }
示例#13
0
        public static void Main(string[] args)
        {
            _manager = Sessao.Configuracao.ConexaoAsterisk.ToManagerConnection(x =>
            {
                x.FireAllEvents = true;
                x.PingInterval  = 0;
            });
            _manager.Login(10000);

            //Task.Run(() => InicieTracking(_manager));

            //Task.Run(CheckFastAGI);

            //Task.Run(ExecuteLigacoes);

            CreateWebHostBuilder(args).Build().Run();
        }
示例#14
0
 private void TryRequestQueuesStatus()
 {
     try
     {
         if (managerConnection.IsConnected())
         {
             ClearCacheIfNeeded();
             RequestQueuesStatus();
         }
         else
         {
             LogToConsole($"Not connected.", ConsoleTextColor.Info);
             managerConnection.Login();
         }
     }
     catch (Exception e)
     {
         UpdateQueueStatusRequestStateIndicator("TX/RX Error");
         LogToConsole($"Communication error {e.Message}", ConsoleTextColor.Error);
     }
 }
示例#15
0
        public static Tuple <ManagerConnection, string> TryLogin(LoginCredentials creds, bool saveToFile = true)
        {
            ManagerConnection _ami         = null;
            string            resultString = pabxLogin(creds.host, creds.login.ToString(), creds.password);

            Console.WriteLine(resultString);
            bool result = !resultString.ToLower().Contains("incorrect");

            if (result) // Save credentials if valid
            {
                dynamic resultJson = JObject.Parse(resultString);
                creds.ami_login    = resultJson.username;
                creds.ami_password = resultJson.password;
                Console.WriteLine("Retrieved AMI login Successfully");
                SaveCreds(creds);
                //MessageBox.Show("Host: " + creds.host + " AMI Login : "******" AMI PW: " + creds.ami_password);
                _ami = new ManagerConnection(creds.host, 5038, creds.ami_login, creds.ami_password);
                _ami.Login();
                _ami.UseASyncEvents = true;
            }
            return(new Tuple <ManagerConnection, string>(_ami, (result != false).ToString()));
        }
示例#16
0
        private void connectToAsterisk()
        {
            try
            {
                // Conexion al Servidor Asterisk
                //asteriskManager = new ManagerConnection("192.168.10.200", 5038, "johan", "johan");  // Server Pruebas
                asteriskManager = new ManagerConnection("10.0.0.75", 5038, "ccempaques", "ccempaques"); // Server Empaques
                asteriskManager.UnhandledEvent += new ManagerEventHandler(asteriskManager_Events);

                // Login con --> Objeto astriskManager
                asteriskManager.Login();
            }
            // Conexion Falla
            catch (Exception ex)
            {
                MessageBox.Show("NO ME HE CONECTADO AL SERVIDOR ASTERISK.\n\n" + ex.ToString(),
                                "Error en la Conexion AMI",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation);
                asteriskManager.Logoff();
                this.Close();
            }
        }
示例#17
0
        protected override void OnStart(string[] args)
        {
            log.Debug("Starting AsteriskConnector...");
            try
            {
                manager.Login();
                log.Debug("Getting sip peers...");
                SIPPeersAction sipaction = new SIPPeersAction();
                manager.SendAction(sipaction);
                CommandAction   ca       = new CommandAction("sip show users");
                CommandResponse cr       = (CommandResponse)manager.SendAction(ca, 10000);
                char[]          splitter = { ' ' };

                foreach (string user in cr.Result)
                {
                    string[]      usersplit = user.Split(splitter);
                    List <string> userprop  = new List <string>();
                    foreach (string split in usersplit)
                    {
                        if (split.Length != 0)
                        {
                            userprop.Add(split);
                        }
                    }
                    if (userprop.Count == 5)
                    {
                        log.Debug("User " + userprop.ToArray()[0] + " password: "******"Exception while starting AsteriskConnector: " + e.Message);
            }
        }
示例#18
0
        //-------------------------------------------------------------------------------------------------------------

        void FmHistoryShown(object sender, EventArgs e)
        {
            datetimeFrom.Value = DateTime.Now.AddDays(-7);
            datetimeTO.Value   = DateTime.Now;
            ReloadData();

            manager = new ManagerConnection(ASTERISK_HOST, ASTERISK_PORT, ASTERISK_LOGINNAME, ASTERISK_LOGINPWD);


            try
            {
                manager.Login();
                Log("History: Manager connection aviable. Peer '" + ASTERISK_PEER_NUMBER);
                //lbConnectionBroken.Visible = false;
                RINGENABLED = true;
            }
            catch (Exception err)
            {
                Log("Error: History: Manager connection NOT aviable." + err.Message);
                RINGENABLED = false;
                //this.Close();
                return;
            }
        }
示例#19
0
        private bool QuaySoGoiDien(ManagerConnection manager, string line, string phoneNumber)
        {
            bool         bRet = false;
            const string ORIGINATE_CONTEXT = "from-internal";

            if (manager == null)
            {
                return(false);
            }
            try
            {
                G_manager = manager;
                string channel = string.Format("{0}/{1}", Config_Common.ChannelDial, line);
                if (!G_manager.IsConnected())
                {
                    G_manager = new ManagerConnection(AsteriskInfo.AST_HOSTNAME, AsteriskInfo.AST_PORT_NUMBER, AsteriskInfo.AST_USERNAME, AsteriskInfo.AST_PASSWORD);
                }
                G_manager.Login();
                if (G_manager.IsConnected())
                {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        Text = "Gọi đi : Kết nối tổng đài IP thành công - " + channel;
                    }));
                }
                else
                {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        Text = "Gọi đi : Kết nối tổng đài IP thất bại !!! - " + channel;
                    }));
                }
                OriginateAction oc = new OriginateAction()
                {
                    Context  = ORIGINATE_CONTEXT,
                    Priority = 1,
                    Channel  = channel,
                    CallerId = line,
                    Exten    = phoneNumber,
                    Timeout  = 15000
                };

                ManagerResponse originateResponse = G_manager.SendAction(oc, 30000);
                if (originateResponse.IsSuccess())
                {
                    bRet = true;
                }
                else
                {
                    bRet = false;
                }
                G_manager.Logoff();
            }
            catch (Exception ex)
            {
                bRet = false;
                G_manager.Logoff();
                LogError.WriteLogError("QuaySoGoiDien2", ex);
            }
            return(bRet);
        }
示例#20
0
        private static void checkManagerAPI()
        {
            manager = new ManagerConnection(ASTERISK_HOST, ASTERISK_PORT, ASTERISK_LOGINNAME, ASTERISK_LOGINPWD);

            // Register user event class
            manager.RegisterUserEventClass(typeof(UserAgentLoginEvent));

            // Add or Remove events
            manager.UserEvents += new UserEventHandler(dam_UserEvents);

            // Dont't display this event
            manager.NewExten += new NewExtenEventHandler(manager_IgnoreEvent);

            // Display all other
            manager.UnhandledEvent += new ManagerEventHandler(dam_Events);

            // +++ Only to debug purpose
            manager.FireAllEvents = true;
            // manager.DefaultEventTimeout = 0;
            // manager.DefaultResponseTimeout = 0;
            manager.PingInterval = 0;
            // +++
            try
            {
                manager.Login();                                        // Login only (fast)

                Console.WriteLine("Asterisk version : " + manager.Version);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadLine();
                manager.Logoff();
                return;
            }

            {
                Console.WriteLine("\nGetConfig action");
                ManagerResponse response = manager.SendAction(new GetConfigAction("manager.conf"));
                if (response.IsSuccess())
                {
                    GetConfigResponse responseConfig = (GetConfigResponse)response;
                    foreach (int key in responseConfig.Categories.Keys)
                    {
                        Console.WriteLine(string.Format("{0}:{1}", key, responseConfig.Categories[key]));
                        foreach (int keyLine in responseConfig.Lines(key).Keys)
                        {
                            Console.WriteLine(string.Format("\t{0}:{1}", keyLine, responseConfig.Lines(key)[keyLine]));
                        }
                    }
                }
                else
                {
                    Console.WriteLine(response);
                }
            }

            {
                Console.WriteLine("\nUpdateConfig action");
                UpdateConfigAction config = new UpdateConfigAction("manager.conf", "manager.conf");
                config.AddCommand(UpdateConfigAction.ACTION_NEWCAT, "testadmin");
                config.AddCommand(UpdateConfigAction.ACTION_APPEND, "testadmin", "secret", "blabla");
                ManagerResponse response = manager.SendAction(config);
                Console.WriteLine(response);
            }

            // Originate call example
            Console.WriteLine("\nPress ENTER key to originate call.\n"
                              + "Start phone (or connect) or make a call to see events.\n"
                              + "After all events press a key to originate call.");
            Console.ReadLine();

            OriginateAction oc = new OriginateAction();

            oc.Context  = ORIGINATE_CONTEXT;
            oc.Priority = "1";
            oc.Channel  = ORIGINATE_CHANNEL;
            oc.CallerId = ORIGINATE_CALLERID;
            oc.Exten    = ORIGINATE_EXTEN;
            oc.Timeout  = ORIGINATE_TIMEOUT;
            // oc.Variable = "VAR1=abc|VAR2=def";
            // oc.SetVariable("VAR3", "ghi");
            ManagerResponse originateResponse = manager.SendAction(oc, oc.Timeout);

            Console.WriteLine("Response:");
            Console.WriteLine(originateResponse);

            Console.WriteLine("Press ENTER key to next test.");
            Console.ReadLine();

            //
            // Display result of Show Queues command
            //
            {
                CommandAction   command  = new CommandAction();
                CommandResponse response = new CommandResponse();
                if (manager.AsteriskVersion == AsteriskVersion.ASTERISK_1_6)
                {
                    command.Command = "queue show";
                }
                else
                {
                    command.Command = "show queues";
                }
                try
                {
                    response = (CommandResponse)manager.SendAction(command);
                    Console.WriteLine("Result of " + command.Command);
                    foreach (string str in response.Result)
                    {
                        Console.WriteLine("\t" + str);
                    }
                }
                catch (Exception err)
                {
                    Console.WriteLine("Response error: " + err);
                }
                Console.WriteLine("Press ENTER to next test or CTRL-C to exit.");
                Console.ReadLine();
            }
            //
            // Display Queues and Members
            //
            ResponseEvents re;

            try
            {
                re = manager.SendEventGeneratingAction(new QueueStatusAction());
            }
            catch (EventTimeoutException e)
            {
                // this happens with Asterisk 1.0.x as it doesn't send a QueueStatusCompleteEvent
                re = e.PartialResult;
            }

            foreach (ManagerEvent e in re.Events)
            {
                if (e is QueueParamsEvent)
                {
                    QueueParamsEvent qe = (QueueParamsEvent)e;
                    Console.WriteLine("QueueParamsEvent" + "\n\tQueue:\t\t" + qe.Queue + "\n\tServiceLevel:\t" + qe.ServiceLevel);
                }
                else if (e is QueueMemberEvent)
                {
                    QueueMemberEvent qme = (QueueMemberEvent)e;
                    Console.WriteLine("QueueMemberEvent" + "\n\tQueue:\t\t" + qme.Queue + "\n\tLocation:\t" + qme.Location);
                }
                else if (e is QueueEntryEvent)
                {
                    QueueEntryEvent qee = (QueueEntryEvent)e;
                    Console.WriteLine("QueueEntryEvent" + "\n\tQueue:\t\t" + qee.Queue + "\n\tChannel:\t" + qee.Channel + "\n\tPosition:\t" + qee.Position);
                }
            }

            Console.WriteLine("Press ENTER to next test or CTRL-C to exit.");
            Console.ReadLine();

            //
            //	To test create 3 extensions:
            //	1 - SIP/4012 w/o voicemail (with eyeBeam softphone)
            //	2 - IAX2/4008 w/o voicemail (with iaxComm softphone)
            //	3 - SIP/4010 w/ voicemal but no phone connect

            //	RedirectCall: call from IAX2/4008 to SIP/4012
            //	Don't answer on SIP/4012 and call must redirect to SIP/4010 (to voicemail really)
            //	Dial event used to define redirect channel

            Console.WriteLine("Redirect Call from " + ORIGINATE_CHANNEL + " to " + ORIGINATE_EXTRA_CHANNEL + " or press ESC.");
            // Wait for Dial Event from ORIGINATE_CHANNEL
            DialEventHandler de = new DialEventHandler(dam_Dial);

            manager.Dial += de;
            while (transferChannel == null)
            {
                System.Threading.Thread.Sleep(100);
                if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)
                {
                    break;
                }
            }
            manager.Dial -= de;

            // Now send Redirect action
            RedirectAction ra = new RedirectAction();

            ra.Channel      = transferChannel;
            ra.ExtraChannel = ORIGINATE_EXTRA_CHANNEL;
            ra.Context      = ORIGINATE_CONTEXT;
            ra.Exten        = ORIGINATE_EXTRA_EXTEN;
            ra.Priority     = 1;
            try
            {
                ManagerResponse mr = manager.SendAction(ra, 10000);
                Console.WriteLine("Transfer Call"
                                  + "\n\tResponse:" + mr.Response
                                  + "\n\tMessage:" + mr.Message
                                  );
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //	Monitor call.
            //	Call from IA2/4008 to SIP/4012
            //	Link event used to define monitor channel
            Console.WriteLine("Monitor call. Please call " + ORIGINATE_CHANNEL + " and answer or press ESC.");
            // Wait for Link event
            LinkEventHandler le = new LinkEventHandler(dam_Link);

            manager.Link += le;
            while (monitorChannel == null)
            {
                System.Threading.Thread.Sleep(100);
                if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)
                {
                    break;
                }
            }
            manager.Link -= le;
            // Now send Monitor action
            MonitorAction ma = new MonitorAction();

            ma.Channel = monitorChannel;
            ma.File    = "voicefile";
            ma.Format  = "gsm";
            ma.Mix     = true;
            try
            {
                ManagerResponse mr = manager.SendAction(ma, 10000);
                Console.WriteLine("Monitor Call"
                                  + "\n\tResponse:" + mr.Response);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            manager.Logoff();
        }
示例#21
0
        public AstTray()
        {
            InitializeComponent();

            // Add context menu item
            var click2CallMenuItem = new ToolStripClick2Call();

            click2CallMenuItem.Call += click2CallMenuItem_Call;
            // contextMenuStrip1.Items.Insert(0, click2CallMenuItem);
            this.toolStrip3.Items.Add(click2CallMenuItem);

            if (ConfigurationManager.AppSettings["astHost"] == null)
            {
                MessageBox.Show(
                    "Unable to read configuration file. Maybe you need to rename App.config.example to App.config and add your own details to it?");
                Environment.Exit(0);
            }

            try
            {
                AstCon = new ManagerConnection(ConfigurationManager.AppSettings["astHost"],
                                               int.Parse(ConfigurationManager.AppSettings["astPort"]),
                                               ConfigurationManager.AppSettings["astUser"], ConfigurationManager.AppSettings["astPass"]);

                AstCon.NewState        += astCon_NewState;
                AstCon.Link            += astCon_Link; // added to support AMI 1.0 (Asterisk 1.4)
                AstCon.ConnectionState += astCon_ConnectionState;
                AstCon.Login();

                // Load Directories
                if (ConfigurationManager.AppSettings["sharedDirectoryType"] != null)
                {
                    switch (ConfigurationManager.AppSettings["sharedDirectoryType"].ToUpper())
                    {
                    case "CISCODIRECTORY":
                        SharedDiretory =
                            CiscoDirectoryHelper.GetCiscoDirectory(
                                ConfigurationManager.AppSettings["sharedDirectoryPath"]);
                        break;
                    }
                }

                // Load into views
                if (SharedDiretory != null)
                {
                    foreach (var item in SharedDiretory)
                    {
                        sharedDirectoryListView.Items.Add(new ListViewItem(new[] { item.Name, item.Number }));
                    }
                }

                astTrayNotify.ShowBalloonTip(3000, "Connected", "Connected to Asterisk", ToolTipIcon.Info);
            }
            catch (Exception ex)
            {
                MessageBox.Show(
                    $"Error connecting to {ConfigurationManager.AppSettings["astHost"]}. Error: {ex.Message}");

                // Terminate Application
                Application.Exit();
            }
        }
示例#22
0
        /// <summary>
        /// Quay số gọi ra  - tổng đài ip
        /// </summary>
        private bool QuaySoGoiDien()
        {
            bool         bRet = false;
            const string ORIGINATE_CONTEXT = "from-internal";

            if (G_manager == null)
            {
                return(false);
            }
            try
            {
                if (!G_manager.IsConnected())
                {
                    G_manager = new ManagerConnection(AsteriskInfo.AST_HOSTNAME, AsteriskInfo.AST_PORT_NUMBER, AsteriskInfo.AST_USERNAME, AsteriskInfo.AST_PASSWORD);

                    LogError.WriteLogInfo("ReConnected:" + G_PhoneNumber);
                }
                if (G_manager.IsConnected())
                {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        Text = "Gọi đi : Kết nối tổng đài IP thành công";
                    }));
                }
                else
                {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        Text = "Gọi đi : Kết nối tổng đài IP thất bại !!!";
                    }));
                }
                G_manager.Login();
                var oc = new OriginateAction()
                {
                    Context  = ORIGINATE_CONTEXT,
                    Priority = 1,
                    Channel  = "SIP/" + G_lineIPPBX,
                    CallerId = G_lineIPPBX,
                    Exten    = G_PhoneNumber,
                    Timeout  = 5000,
                    //Async = true
                };
                if (G_manager.SendAction(oc).IsSuccess())
                {
                    bRet = true;
                }
                else
                {
                    bRet = false;
                }

                G_manager.Logoff();
            }
            catch (Exception ex)
            {
                //bw_Call.CancelAsync();
                bRet = false;
                G_manager.Logoff();
                LogError.WriteLogError("QuaySoGoiDien2", ex);
            }
            return(bRet);
        }
示例#23
0
        //-------------------------------------------------------------------------------------------------------------

        private void NewCallerQForm_Load(object sender, EventArgs e)
        {
            // Размещаем форму в правом нижнем углу экрана
            this.Top  = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
            this.Left = 0; //Screen.PrimaryScreen.WorkingArea.Width - this.Width;
                           //pnTransferCallForm.Width = 0;
            if (!String.IsNullOrEmpty(CALLER_FIO))
            {
                CaptionPanel.BackColor = Color.Green;
                TITLElabel.BackColor   = Color.Green;
                //this.BackColor = Color.FromArgb(255, 255, 185);
            }
            else
            {
                CaptionPanel.BackColor = SystemColors.HotTrack;
                TITLElabel.BackColor   = SystemColors.HotTrack;
                //this.BackColor = Color.FromArgb(255, 225, 195);
            }

            if (important == true)
            {
                CaptionPanel.BackColor = Color.Red;
                TITLElabel.BackColor   = Color.Red;
            }



            TITLElabel.Text = string.Format("Incoming {0} ({1})", CALLER_NAME, CALLER_ID);

            FIOlabel.Text       = CALLER_FIO;
            ORGlabel.Text       = CALLER_ORG;
            DEPlabel.Text       = CALLER_DEP;
            POSlabel.Text       = CALLER_POS;
            MAINPHONElabel.Text = CALLER_MAINPHONE;
            CELLPHONElabel.Text = CALLER_CELLPHONE;
            WORKPHONElabel.Text = CALLER_WORKPHONE;
            EMAILlabel.Text     = CALLER_EMAIL;
            URL_label.Text      = CALLER_URL;

            BEGIN_CALL_TIME        = DateTime.Parse(DateTime.Now.ToLongTimeString());
            tmr_call_time          = new System.Windows.Forms.Timer();
            tmr_call_time.Tick    += new EventHandler(Tick_tmr_call_time);
            tmr_call_time.Interval = 1000;
            tmr_call_time.Start();

            if (!string.IsNullOrEmpty(CALLER_NOTE))
            {
                nf             = new NoteForm();
                nf.Owner       = this;
                nf.CALLER_NOTE = CALLER_NOTE;
                nf.Show(this);
            }

            manager = new ManagerConnection(ASTERISK_HOST, ASTERISK_PORT, ASTERISK_LOGINNAME, ASTERISK_LOGINPWD);

            try
            {
                manager.Login();
                Log("History: Manager connection aviable. Peer '" + ASTERISK_PEER_NUMBER);
                //lbConnectionBroken.Visible = false;
                RINGENABLED = true;
            }
            catch (Exception err)
            {
                Log("Error: History: Manager connection NOT aviable." + err.Message);
                RINGENABLED = false;
                //this.Close();
                return;
            }
        }
示例#24
0
 public AsteriskSipController(IOptions <AsteriskOptions> options)
 {
     this.options = options.Value;
     manager      = new ManagerConnection(this.options.Host, this.options.Port, this.options.UserName, this.options.Secret);
     manager.Login();
 }
示例#25
0
        /// <summary>
        /// Quay số gọi ra  - tổng đài ip
        /// </summary>
        private bool QuaySoGoiDien()
        {
            bool         bRet = false;
            const string ORIGINATE_CONTEXT = "from-internal";

            if (G_manager == null)
            {
                return(false);
            }
            try
            {
                string channel = string.Format("{0}/{1}", Config_Common.ChannelDial, G_lineIPPBX);
                if (!G_manager.IsConnected())
                {
                    G_manager = new ManagerConnection(AsteriskInfo.AST_HOSTNAME, AsteriskInfo.AST_PORT_NUMBER, AsteriskInfo.AST_USERNAME, AsteriskInfo.AST_PASSWORD);

                    LogError.WriteLogInfo("ReConnected:" + G_PhoneNumber);
                }
                G_manager.Login();
                if (G_manager.IsConnected())
                {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        Text = "Gọi đi : Kết nối tổng đài IP thành công - " + channel;
                    }));
                }
                else
                {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        Text = "Gọi đi : Kết nối tổng đài IP thất bại !!! - " + channel;
                    }));
                }
                var oc = new OriginateAction()
                {
                    Context  = ORIGINATE_CONTEXT,
                    Priority = 1,
                    Channel  = channel,//"SIP/" + G_lineIPPBX,
                    CallerId = G_lineIPPBX,
                    Exten    = G_PhoneNumber + Config_Common.Asterisk_SetNumberSign,
                    Timeout  = Config_Common.Asterisk_CallOut_TimeOut,
                    //Async = true
                };
                //oc.SetVariable("exten", G_PhoneNumber);
                if (G_manager.SendAction(oc, oc.Timeout).IsSuccess())
                {
                    bRet = true;
                }
                else
                {
                    bRet = false;
                }

                G_manager.Logoff();
            }
            catch (Exception ex)
            {
                //bw_Call.CancelAsync();
                bRet = false;
                G_manager.Logoff();
                LogError.WriteLogError("QuaySoGoiDien2", ex);
            }
            return(bRet);
        }
示例#26
0
 public TelephonyHandler()
 {
     _managerConnection = new ManagerConnection("192.168.26.128", 5038, "notificall", "notificall");
     _managerConnection.Login();
 }