Hangup hook gets destroyed when calling a script in conference caller controls
Hi, I have the following scenario: When using a script in the conference caller controls, the hangup hook gets destroyed. Affected script languages: Lua, Spidermonkey, Python, Perl You can easily reproduce this effect using the below Lua scripts and adding the script application to the caller controls. This is what happens: - hangup without pressing a digit: hangup hook is called - press a digit without script call, then hangup: hangup hook is called - press a digit with script call, then hangup: hangup hook is not called Looking into the source code of session_destroy, you can see that the hangup hook is in fact removed - which shold not happen when calling a script. And there is no way to set it again after pressing the "*" digit. Any ideas on this? Thanks, Melanie test-conferece.lua: -------------- function session_hangup_hook(status) freeswitch.consoleLog("NOTICE", "Session hangup: " .. status .. "\n") error() end session:answer(); session:setHangupHook("session_hangup_hook") conf_num = "3000" session:execute("conference", string.format("%s@default", conf_num)) session:hangup() caller_controls.lua: -------------------- freeswitch.consoleLog("NOTICE","---- DTMF detect ----\n"); conference.conf.xml: -------------------- <caller-controls> <group name="default"> <control action="mute" digits="0"/> <control action="execute_application" digits="*" data="lua caller_controls.lua"/> <control action="energy up" digits="9"/> <control action="energy equ" digits="8"/> <control action="energy dn" digits="7"/> <control action="vol talk up" digits="3"/> <control action="vol talk zero" digits="2"/> <control action="vol talk dn" digits="1"/> <control action="vol listen up" digits="6"/> <control action="vol listen zero" digits="5"/> <control action="vol listen dn" digits="4"/> <control action="hangup" digits="#"/> </group>
Sine conference is a blocking call that only ends when you exit the conference, The next line of code after you execute conference is basically a hangup hook. If you test if the channel is still up you should be able to tell the difference between hangup and transfer. Calling a conference from inside a lua script is a bit resource intensive compared to exiting the lua, calling the conference from the regular dialplan and going back to lua in an api_hangup_hook instead. On Fri, Nov 15, 2013 at 3:58 AM, Melanie Treitinger < treitinger@as-infodienste.de> wrote:
Hi,
I have the following scenario: When using a script in the conference caller controls, the hangup hook gets destroyed. Affected script languages: Lua, Spidermonkey, Python, Perl
You can easily reproduce this effect using the below Lua scripts and adding the script application to the caller controls. This is what happens: - hangup without pressing a digit: hangup hook is called - press a digit without script call, then hangup: hangup hook is called - press a digit with script call, then hangup: hangup hook is not called
Looking into the source code of session_destroy, you can see that the hangup hook is in fact removed - which shold not happen when calling a script. And there is no way to set it again after pressing the "*" digit.
Any ideas on this?
Thanks, Melanie
test-conferece.lua: -------------- function session_hangup_hook(status) freeswitch.consoleLog("NOTICE", "Session hangup: " .. status .. "\n") error() end
session:answer(); session:setHangupHook("session_hangup_hook") conf_num = "3000" session:execute("conference", string.format("%s@default", conf_num)) session:hangup()
caller_controls.lua: -------------------- freeswitch.consoleLog("NOTICE","---- DTMF detect ----\n");
conference.conf.xml: -------------------- <caller-controls> <group name="default"> <control action="mute" digits="0"/> <control action="execute_application" digits="*" data="lua caller_controls.lua"/> <control action="energy up" digits="9"/> <control action="energy equ" digits="8"/> <control action="energy dn" digits="7"/> <control action="vol talk up" digits="3"/> <control action="vol talk zero" digits="2"/> <control action="vol talk dn" digits="1"/> <control action="vol listen up" digits="6"/> <control action="vol listen zero" digits="5"/> <control action="vol listen dn" digits="4"/> <control action="hangup" digits="#"/> </group>
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
Official FreeSWITCH Sites http://www.freeswitch.org http://wiki.freeswitch.org http://www.cluecon.com
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
participants (2)
-
Anthony Minessale
-
Melanie Treitinger