using System.Collections.Generic; namespace AsterNET.Manager { /// /// Originates an outbound call and connects it to a specified extension or application.
/// It will block until the outgoing call fails or gets answered.
/// At that point, it will exit with the status variable set and dialplan processing will continue. ///
public class Originate { private string account; private string application; private string callerId; private string channel; private string context; private string data; private string exten; private int priority; private long timeout; private Dictionary variables; #region Account /// /// Get/Set the account code to use for the originated call.
/// The account code is included in the call detail record generated for this call and will be used for billing. ///
public string Account { get { return account; } set { this.account = value; } } #endregion #region CallerId /// /// Get/Set the caller id to set on the outgoing channel. /// public string CallerId { get { return callerId; } set { this.callerId = value; } } #endregion #region Channel /// /// Get/Set the name of the channel to connect to the outgoing call. /// This property is required. /// public string Channel { get { return channel; } set { this.channel = value; } } #endregion #region Context /// /// Get/Set the name of the context of the extension to connect to.
/// If you set the context you also have to set the exten and priority properties. ///
public string Context { get { return context; } set { this.context = value; } } #endregion #region Exten /// /// Get/Set the extension to connect to.
/// If you set the extension you also have to set the context and priority properties. ///
public string Exten { get { return exten; } set { this.exten = value; } } #endregion #region Priority /// /// Get/Set the priority of the extension to connect to.
/// If you set the priority you also have to set the context and exten properties. ///
public int Priority { get { return priority; } set { this.priority = value; } } #endregion #region Application /// /// Get/Set the name of the application to connect to. /// public string Application { get { return application; } set { this.application = value; } } #endregion #region Data /// /// Get/Set the parameters to pass to the application. /// public string Data { get { return data; } set { this.data = value; } } #endregion #region Timeout /// /// Get/Set the timeout for the origination (in seconds) for the origination.
/// The channel must be answered within this time, otherwise the origination is considered to have failed and an OriginateFailureEvent is generated.
/// If not set, a default value of 30 seconds. ///
public long Timeout { get { return timeout/1000; } set { this.timeout = value*1000; } } #endregion #region GetVariables() /// /// Get the variables dictionary to set on the originated call. /// public Dictionary GetVariables() { return variables; } #endregion #region SetVariables(IDictionary vars) /// /// Set the variables dictionary to set on the originated call. /// public void SetVariables(Dictionary vars) { this.variables = vars; } #endregion #region GetVariable(string name, string val) /// /// Gets a variable on the originated call. Replaces any existing variable with the same name. /// public string GetVariable(string key) { if (variables == null) return string.Empty; return variables[key]; } #endregion #region SetVariable(string name, string val) /// /// Sets a variable dictionary on the originated call. Replaces any existing variable with the same name. /// public void SetVariable(string key, string value) { if (variables == null) variables = new Dictionary(); if (variables.ContainsKey(key)) variables[key] = value; else variables.Add(key, value); } #endregion } }