[Freeswitch-users] Javascript: record ringing of session

Birgit Arkesteijn birgit at westhawk.co.uk
Tue Nov 25 06:29:45 PST 2008

Hi Anthony,

Thanks for your feedback.
I still cannot get it to work, maybe the snippet and the output will 
give you an idea?

*** I've got the following javascript:

var endpoint_url = 'sofia/gateway/westhawk/0663';
var recordfile = "/usr/local/freeswitch/recordings/dispatcher.wav";

setGlobalVariable("RECORD_ANSWER_REQ", false);
var mSession = new Session("{ignore_early_media=false}" + endpoint_url);
console_log("info", "mSession created, start recording\n");

mSession.execute("record_session", recordfile);

*** When I run it:
freeswitch at apso> jsrun record_rings.js
API CALL [jsrun(record_rings.js)] output:

freeswitch at apso> 2008-11-25 14:22:10 [NOTICE] switch_channel.c:551 
switch_channel_set_name() New Channel sofia/external/0663 
2008-11-25 14:22:10 [NOTICE] sofia.c:2327 sofia_handle_sip_i_state() 
Ring-Ready sofia/external/0663!
2008-11-25 14:22:22 [NOTICE] sofia.c:2723 sofia_handle_sip_i_state() 
Channel [sofia/external/0663] has been answered
2008-11-25 14:22:22 [INFO] record_rings.js:1 console_log() mSession 
created, start recording
2008-11-25 14:22:22 [NOTICE] mod_spidermonkey.c:2959 session_destroy() 
Hangup sofia/external/0663 [CS_SOFT_EXECUTE] [NORMAL_CLEARING]
2008-11-25 14:22:22 [NOTICE] switch_core_session.c:927 
switch_core_session_thread() Session 3 (sofia/external/0663) Ended
2008-11-25 14:22:22 [NOTICE] switch_core_session.c:929 
switch_core_session_thread() Close Channel sofia/external/0663 [CS_HANGUP]

As you can see, 'new Session' does not return on the 'ring ready' and 
therefore doesn't record the rings to/on this new channel (that is 
Having said that, I don't know if 'ring ready' qualifies as 'early media'.

Cheers, Birgit

On 25/11/08 14:13, Anthony Minessale wrote:
> The originate method does not return until either early media or answer 
> has been received.
> in other words the very instant it returns is the soonest there is even 
> any media to record.
> you can execute record_session app on the A leg before you call and 
> that's the best you can do.
> session.execute("record_session");
> session.execute("bridge", LIST_OF_DESTINATIONS);
> if you are not doing much else in your script it may be better to set 
> the dest as a variable then
> exit your script and execute bridge from the regular dialplan to avoid 
> extra JS overhead during the call.
> On Tue, Nov 25, 2008 at 8:03 AM, Birgit Arkesteijn 
> <birgit at westhawk.co.uk <mailto:birgit at westhawk.co.uk>> wrote:
>     Hi Michael,
>     Sorry to nag you again.
>     I'm getting close to my deadline and I would like to give our customer
>     some feedback on this issue.
>     Would you be so kind to explain what the issue is with recording rings
>     when doing 'new Session(originate_url)'?
>     As far as I've been able to work out, this statement will only
>     return after
>     a) the (or some) timeout has expired or
>     b) the user has picked up
>     Only in case b) we've got a originated session, that can be used to
>     record. However, since the user has already answered, the rings are not
>     recorded.
>     Is that right?
>     Cheers, Birgit

-- Birgit Arkesteijn, birgit at westhawk.co.uk,
-- Westhawk Ltd, Albion Wharf, 19 Albion Street, Manchester M1 5LN, UK
-- Company no: 1769350
-- Registered Office:
-- 15 London Road, Stockton Heath, Warrington WA4 6SJ. UK.
-- tel.: +44 (0)161 237 0660
-- <URL: http://www.westhawk.co.uk>

More information about the FreeSWITCH-users mailing list