private void submitBtn_Click(object sender, EventArgs e) { try { manager = new ManagerConnection(this.AsteriskHost.Text, int.Parse(this.AsteriskPort.Text), this.AsteriskUsername.Text, this.AsteriskPassword.Text); manager.Login(); if (manager.IsConnected()) { controlGroup.Enabled = true; credentialGroup.Enabled = false; MessageBox.Show(this, String.Format("{0} was Successfuly Initiated", AsteriskHost.Text), "Asterisk Message", MessageBoxButtons.OK, MessageBoxIcon.Information); AsteriskLogs.Text = "***WELCOME***"; // Set up AMI Eventhandlers manager.OriginateResponse += new OriginateResponseEventHandler(manager_OriginateResponse); manager.NewChannel += new NewChannelEventHandler(manager_NewChannel); manager.Hangup += new HangupEventHandler(manager_Hangup); manager.ExtensionStatus += new ExtensionStatusEventHandler(manager_ExtensionStatus); // Set up AMI properties manager.DefaultEventTimeout = 300000; manager.DefaultResponseTimeout = 300000; manager.KeepAlive = true; manager.KeepAliveAfterAuthenticationFailure = true; manager.FireAllEvents = true; data = new AsteriskData(); // set up user eventhandlers onStartCall += new onOriginate(AsteriskForm_onOriginateAction); onEndCall += new onHangup(AsteriskForm_onEndCall); } else throw new Exception("Error on Asterisk login"); } catch (Exception ex) { MessageBox.Show(this, String.Format("{0} was unSuccessfuly Initiated{1}Error Message: {2}", AsteriskHost.Text, Environment.NewLine, ex.Message), "Asterisk Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
void AsteriskForm_onOriginateAction(string channel, string exten, string callerid) { data = new AsteriskData(); data.originate_channel = channel; data.originate_exten = exten; data.originate_callerid = callerid; OriginateAction oaction = originate(data); ManagerResponse oresponse = sendaction(oaction); }
void manager_Hangup(object sender, Asterisk.NET.Manager.Event.HangupEvent e) { switch (e.Cause) { case 16: case 17: // normal clearing data = null; PopulateLogs("call is ended."); break; case 19: // no answer PopulateLogs("No answer.. hanging up."); break; default: break; } }
public OriginateAction originate(AsteriskData data) { OriginateAction oaction = new OriginateAction() { ActionId = data.originate_actionid, // Exten: is the number you're calling Exten = data.originate_exten, // Channel Channel = data.originate_channel, // Context Context = ConfigurationManager.AppSettings.Get("default_context"), CallerId = data.originate_callerid, Async = true, Priority = 1, // phone ring Timeout (default timeout is 30000 = 30 secs); Timeout = int.Parse(ConfigurationManager.AppSettings.Get("default_timeout")) }; return oaction; }