public AsteriskConnector() { InitializeComponent(); try { //Trace.Listeners.Add(new TextWriterTraceListener("asteriskconnector.log")); log.Debug("Initializing asterisk connector..."); string address = Properties.Settings.Default.AsteriskServer; int port = Convert.ToInt32(Properties.Settings.Default.AsteriskPort); string user = Properties.Settings.Default.AsteriskUser; string password = Properties.Settings.Default.AsteriskUserPassword; log.Debug("Creating new manager connection: " + address + ":" + port + " as " + user); manager = new ManagerConnection(address, port, user, password); manager.PingInterval = Properties.Settings.Default.AsteriskPingInterval; manager.KeepAlive = true; manager.FireAllEvents = true; manager.UnhandledEvent += new ManagerEventHandler(manager_UnhandledEvent); log.Debug("Creating StateServer Proxy: "); ss = new StateServer(Properties.Settings.Default.StateServerUrl); log.Debug("Creating AsteriskCTIService..."); acs = new AsteriskCTIService(manager); host = new ServiceHost(acs); log.Debug("Hosting AsteriskCTIService..."); host.Open(); } catch (Exception e) { log.Debug("Error while initializing AsteriskConnector: " + e.Message); } }
protected override void OnStart(string[] args) { try { //Trace.Listeners.Add(new TextWriterTraceListener("asteriskconnector.log")); log.Debug("Initializing tapi connector..."); Calls = new Hashtable(); manager = new TapiManager("TALK TAPI CTI Service"); if (manager.Initialize()) { log.Debug("Creating LineControlServer Proxy: "); ss = new StateServer(Properties.Settings.Default.LineControlServerUrl); log.Debug("Creating TAPICTIService..."); host = new ServiceHost(new TAPICTIService(manager)); log.Debug("Hosting TAPICTIService..."); host.Open(); log.Debug("Creating TAPISnapshotService..."); snapshotHost = new ServiceHost(new TAPISnapshotServer(manager)); log.Debug("Hosting TAPISnapshotService..."); snapshotHost.Open(); isInitialized = true; } else { log.Debug("Unable to initialize TAPI Manager"); } } catch (Exception e) { log.Debug("Error while initializing TAPIConnector: " + e.Message); } log.Debug("TAPI Connector starting"); if (isInitialized) { manager.AddressChanged += new EventHandler<AddressInfoChangeEventArgs>(manager_AddressChanged); manager.CallInfoChanged += new EventHandler<CallInfoChangeEventArgs>(manager_CallInfoChanged); manager.CallStateChanged += new EventHandler<CallStateEventArgs>(manager_CallStateChanged); manager.LineAdded += new EventHandler<LineAddedEventArgs>(manager_LineAdded); manager.LineChanged += new EventHandler<LineInfoChangeEventArgs>(manager_LineChanged); manager.LineRemoved += new EventHandler<LineRemovedEventArgs>(manager_LineRemoved); manager.LineRinging += new EventHandler<RingEventArgs>(manager_LineRinging); manager.NewCall += new EventHandler<NewCallEventArgs>(manager_NewCall); manager.PhoneAdded += new EventHandler<PhoneAddedEventArgs>(manager_PhoneAdded); manager.PhoneRemoved += new EventHandler<PhoneRemovedEventArgs>(manager_PhoneRemoved); manager.ReinitRequired += new EventHandler(manager_ReinitRequired); foreach (TapiLine line in manager.Lines) { line.Changed += new EventHandler<LineInfoChangeEventArgs>(line_Changed); line.AddressChanged += new EventHandler<AddressInfoChangeEventArgs>(line_AddressChanged); line.CallInfoChanged += new EventHandler<CallInfoChangeEventArgs>(line_CallInfoChanged); line.CallStateChanged += new EventHandler<CallStateEventArgs>(line_CallStateChanged); line.NewCall += new EventHandler<NewCallEventArgs>(line_NewCall); line.Ringing += new EventHandler<RingEventArgs>(line_Ringing); if (!line.IsOpen) { try { log.Debug("Opening line: " + line.ToString() + " name: " + line.Name); line.Open(line.Capabilities.MediaModes); try { log.Debug("Parsing " + line.ToString() +" adresses"); foreach (TapiAddress address in line.Addresses) { address.CallInfoChanged += new EventHandler<CallInfoChangeEventArgs>(address_CallInfoChanged); address.CallStateChanged += new EventHandler<CallStateEventArgs>(address_CallStateChanged); address.Changed += new EventHandler<AddressInfoChangeEventArgs>(address_Changed); address.NewCall += new EventHandler<NewCallEventArgs>(address_NewCall); ss.SetLineControl(GetLineControl(address)); } } catch (Exception e) { log.Error("Error while parsing " + line.ToString() + " addresses: " + e.Message); } //linedevspecific etrali try { log.Debug(line.ToString() + " device specific data : " + System.Text.Encoding.ASCII.GetString(line.Status.DeviceSpecificData)); line.NegotiateExtensions(Properties.Settings.Default.DevSpecificMinVersion, Properties.Settings.Default.DevSpecificMaxVersion, new EventHandler<DeviceSpecificEventArgs>(line_DevSpecific)); } catch (Exception lne) { log.Error("Unable to negotiate dev specific extensions for " + line.ToString() + " " + lne.ToString()); } } catch { log.Error("Error while opening line: " + line.ToString()); } } } } }