Answering my own question for the record and the search engines: Prequesites were: - Block call progress during ringing until Javascript finishes - Be able to register and act upon hangups from the a-leg - Script should only execute once, not a second time for the b-leg These things seem to vary between the different execute_* options. The one that does exactly what we needed was execute_on_pre_answer. That will run only once on the a-leg, will not proceed until JS terminates, and enables both hangupHook and session.ready. On 05.08.2015 14:56, Thomas wrote:
It looks like the problem is the JS running before the call gets bridged. Is there any way to register a hangup in JS before bridging?
Since that JS is part of the call setup, it has to run before the bridge. :/
On 04.08.2015 11:49, Thomas wrote:
It's regular JS sleeps blocking, but I tried the sleep dialplan app (from JS), too - same thing. I tried session.ready but it does not change if the SIP leg hangs up. The whole process establishes the call, so it terminates once that is done, it's the actual dialing process through a socket on another device. But the socket isn't blocking. That was my first guess and I worked around it.
On 02.08.2015 18:11, Michael Jerris wrote:
what is it blocking on in the js? are you using session.ready?
On Sunday, August 2, 2015, Thomas <lists@virtues.net <mailto:lists@virtues.net>> wrote:
They both don't change/fire. :/ It's as if the JS blocks everything about that call until it terminates. The hangup does not even register in the Freeswitch log until after the script finishes. Tried it outside execute_on_originate with the normal javascript application in the XML dialplan - same effect. The whole process seems to be a single thread - which would make sense for most use cases, unfortunately just not this one. :P
Is there a way to fork the JS execution into the background? Something similar to setTimout() maybe? Or even better execute a dialplan app from JS that allows outside events to catch up? I tried the sleep application instead of JS msleep, but that didn't help either.
On 01.08.2015 22:05, Ken Rice wrote: > You are looking for session ready or a hanguk up hook callback see confluence for details > > Sent from my iPhone > >> On Aug 1, 2015, at 3:53 PM, Thomas <lists@virtues.net> wrote: >> >> Does anyone know if there is a way to track changes to the call state, most notably a hangup, while executing >> Javascript? We're using JS to set up a call on a device connected to Freeswitch through portaudio. That call is >> initiated with sip/sofia executing the JS in the dialplan. If the SIP leg hangs up while the JS is running, nothing >> happens until the JS terminates. >> >> I wanted to check from the script, but haven't found a way to do that. "session.state" doesn't change, hangup hook >> doesn't fire, and without setTimeout or something similar I didn't find a way to "background" the JS. >> >> Is there any way to detect a hangup during JS execution? >> >> Cheers! >> >> Thomas >> >> >> _________________________________________________________________________ >> Professional FreeSWITCH Consulting Services: >> consulting@freeswitch.org <javascript:;> >> http://www.freeswitchsolutions.com >> >> Official FreeSWITCH Sites >> http://www.freeswitch.org >> http://confluence.freeswitch.org >> http://www.cluecon.com >> >> FreeSWITCH-users mailing list >> FreeSWITCH-users@lists.freeswitch.org <javascript:;> >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users >> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users >> http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org <javascript:;> http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <javascript:;> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org