This patch adds a scheduler thread to the core and moves the heartbeat
event to use the new scheduler as an example.
Also The following features are implemented that use this scheduler:
sched_hangup dialplan application:
<action application="sched_hangup" data="+10 normal_clearing bleg"/>
** The cause code is optional and the optional bleg keyword will only hangup the
channel the current channel is bridged to if the call is in a bridge.
sched_transfer dialplan application:
<action application="sched_transfer" data="+10 1000 XML default"/>
** The last 2 args (dialplan and context) are optional
sched_broadcast dialplan application:
<action application="sched_broadcast" data="+10 playback:/tmp/foo.wav"/>
<action application="sched_broadcast" data="+10 playback!normal_clearing:/tmp/foo.wav"/>
** The optional !<cause_code> can be added to make the channel hangup after broadcasting the file.
sched_hangup api function:
sched_hangup +10 <uuid_string> normal_clearing
** The cause code is optional
sched_transfer api function:
sched_transfer +10 <uuid_string> 1000 XML default
** The last 2 args (dialplan and context) are optional
sched_broadcast api function:
sched_broadcast +10 <uuid_str> playback:/tmp/foo.wav
sched_broadcast +10 <uuid_str> playback!normal_clearing:/tmp/foo.wav
** The optional !<cause_code> can be added to make the channel hangup after broadcasting the file.
The new C functions in the core are documented in the doxeygen.
*NOTE* This commit should satisfy at least 2 bounties on the wiki
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4785 d0543943-73ff-0310-b7d9-9358b9ac24b2
The most important thing to check is you now must create a new session with a blank constructor:
s = new Session();
then call s.originate() with all the former args that were documented to be for the constructor
this will will return true or false to indicate if the call worked.
See below this sample code demonstrates all of the changes:
////////////////////////////////////////////////////////////////////////////////
function on_hangup(hup_session)
{
console_log("debug", "HANGUP!!!! name: " + hup_session.name + " cause: " + hup_session.cause + "\n");
//exit here would end the script so you could cleanup and just be done
//exit();
}
//set the on_hangup function to be called when this session is hungup
session.setHangupHook(on_hangup);
//allocate a new b_session
var b_session = new Session();
//make a call with b_session. If this fails, all we will be able to access is the b_session.cause attr
if (b_session.originate(session, "sofia/mydomain.com/888@conference.freeswitch.org")) {
//Inform the scripting engine to automaticly hang this session up when the script ends
b_session.setAutoHangup(true);
//set the on_hangup function to be called when this session is hungup
b_session.setHangupHook(on_hangup);
//bridge session with b_session
bridge(session, b_session);
} else {
console_log("debug", "Originate Failed.. cause: " + b_session.cause + "\n");
}
////////////////////////////////////////////////////////////////////////////////
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4773 d0543943-73ff-0310-b7d9-9358b9ac24b2
mod_sofia will now examine a variable in the channel to
see what the channel's originator was using for a codec and
try to put that to the top of the list in the sdp.
if this new sofia profile param is set:
<param name="disable-transcoding" value="true"/>
All outbound calls will use *only* the codec that thier originator
is using to ensure no transcoding.
(of course that could lead to a failed call where there is no way to do this, so use sparingly)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4073 d0543943-73ff-0310-b7d9-9358b9ac24b2
1) The xml_curl now has a more enterprise config where it can have more than 1
url configured so you could have failover. (*note the syntax change*)
2) dialplan modules now take an extra arguement making it possible to pass runtime params to
them. This is now used in mod_dialplan_xml to allow an alternate file path to be specified.
dialplans were already stackable meaning you can configure a sofia profile, for example,
to use enum followed by the default XML dialplan.
e.g. <param name="dialplan" value="enum,XML"/>
From now on, you can also specify :param after each dialplan name to allow param
to be passed to the module. mod_dialplan_xml uses this param as a way to override
where it looks for the dialplan making it possible to stack mutiple calls to the XML dialplan.
e.g. <param name="dialplan" value="XML:/some/xml/file.xml,XML"/>
With this you can search the local file file.xml first and if there is still no match
the hunt will move on to the standard XML using the onboard XML registry and or the external
gateways.
*NOTE* this alternate path does not use the external bindings but it does parse the #includes etc.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4066 d0543943-73ff-0310-b7d9-9358b9ac24b2