[Freeswitch-users] bind_meta_app blocks DTMFs?
Madovsky
infos at madovsky.org
Fri Apr 15 20:51:43 MSD 2011
<action application="set" data="hangup_after_bridge=false"/>
<action application="set" data="continue_on_fail=true"/>
you don't need to specify continue_on_fail=tru since you don't hangup after bridge
----- Original Message -----
From: Mariusz Czulada
To: FreeSWITCH Users Help
Sent: Friday, April 15, 2011 8:23 AM
Subject: Re: [Freeswitch-users] bind_meta_app blocks DTMFs?
Hi all,
I finally solved the problem (bind_meta_app do not block DTMF), so I'd like to share the solution here, in case someone else is also interested in similiar function. What I needed was to replace direct call to conference app:
<action application="conference" data="confX_${confX_num}_2"/>
with call via loopback:
<action application="bridge" data="loopback/app=conference:cx_${cx_num}_2"/>
Now my subX_2 extension looks like this:
<extension name="subX_2">
<condition field="destination_number" expression="^subX_2$">
<action application="set" data="pass_rfc2833=true"/>
<action application="set" data="hangup_after_bridge=false"/>
<action application="set" data="continue_on_fail=true"/>
<action application="set" data="bridge_terminate_key=2"/>
<action application="bridge" data="loopback/app=conference:cx_${cx_num}_2"/>
</condition>
</extension>
Now after pressing "*2":
* all parties which joined subconference can speak to/hear each other,
* after pressing "2" they leave sub and return to main conference,
* other participants of main conference hear no beeps - joining subconf is like "mute" and returning to main conf like "unmute"
Regards,
Mariusz
Dnia 18-01-2011 o godz. 18:33 Mariusz Czulada napisał(a):
Michael, Brian,
The "hacked" version i used was not hacked indeed. I just tried to correct the patch I send to Jira, but was totally unrelated to this case. Now I use 1.0.7 with default configuration. Then, in conf/dialplan/default folder I added following file (subtest.xml):
<include>
<extension name="test_subconf">
<condition field="destination_number" expression="^(34\d{2})$">
<action application="set" data="confX_num=$1"/>
<action application="answer"/>
<action application="transfer" data="confX_join"/>
</condition>
</extension>
<extension name="confX_join">
<condition field="destination_number" expression="^confX_join$">
<action application="bind_meta_app" data="1 a s execute_extension::subX_1"/>
<action application="bind_meta_app" data="2 a s execute_extension::subX_2"/>
<action application="conference" data="confX_${confX_num}"/>
</condition>
</extension>
<extension name="subX_1">
<condition field="destination_number" expression="^subX_1$">
<action application="set" data="pass_rfc2833=true"/>
<action application="conference" data="confX_${confX_num}_1"/>
</condition>
</extension>
<extension name="subX_2">
<condition field="destination_number" expression="^subX_2$">
<action application="set" data="pass_rfc2833=true"/>
<action application="conference" data="confX_${confX_num}_2"/>
</condition>
</extension>
</include>
Feature I expected to achieve was to allow some users to enter sub conference (i.e. "confX_3400_1") to discuss something on side, then get back to the main one ("confX_3400"). During this time other participants should treat them as they are still present in the conference, but probably muted.
What I observed was:
* while joining "confX_3400_1" first user hears "you are the only..." message, then MOH
* when second user joins "confX_3400_1", both hear entry beep, and MOH stops
* while in sub conf, no DTMF codes are processed; no messages like "switch_rtp.c:3113 RTP RECV DTMF 2:1600" appear on FSW console; no one is able to leave using "#"
* while in "confX_3400_1" no one can be hear; just like they were muted
* while in "confX_3400_1" they are still listed as "confX_3400"participants
* after they're kicked from "confX_3400_1" from the console, they are again audible by other participants of "confX_3400", without any propt or beep, just like the were unmuted; and can use *1 again to enter sub conf.
So at this moment I have two problems:
* User cannot use "#" even if it is defined as a "hangup" action in "default" configuration profile (used here).
* Users cannot hear each other (or they cannot talk to each other, but the result is the same).
My question is: is there something I missed in a dialplan or this is the way freeswitch works now?
Regards,
Mariusz
Dnia 14-01-2011 o godz. 19:39 Michael Collins napisał(a):
Mariusz,
After moving from the main conference to the second conference, when the user presses digits, do any of them work? The way to test would be to call in to the first conference then press #1 to go to the sub conference, then press 0 a few times to see if you mute/unmute. Also, try pressing 1, 2, 3, etc. and watch the FS console. Be sure that you are in debug mode on the console. (If you use fs_cli then you will be at loglevel debug by default.)
Question - what customizations have you made? I see that your version is "hacked" so most likely you've done some tinkering. One thing you can do to test is to update to latest git and don't do any "hacking" to the code. Test your dialplan and see if the DTMFs work as expected. If your DTMFs work on a plain install then you know that your customizations are doing something. If not, then pastebin your output (pastebin.freeswitch.org) and we'll take a look.
-MC
On Fri, Jan 14, 2011 at 8:31 AM, Mariusz Czulada <manieq at wp.eu> wrote:
Hi All,
I'm trying to implement subconference feature, to allow some
participants go (or rather "gosub") to a another conference room to
discuss something then get back to the main conference. I use FreeSWITCH
Version 1.0.head (hacked-20110112T172836Z). Bellow some configure
extracts:
>From conference.conf.xml:
...
<caller-controls>
...
<group name="just_exit">
<control action="hangup" digits="#"/>
<control action="hangup" digits="1"/>
<control action="mute" digits="0"/>
</group>
...
</caller-controls>
...
<profiles>
..
<profile name="confX_M">
...
<param name="caller-controls" value="just_exit"/>
...
</profile>
<profile name="confX_S">
...
<param name="caller-controls" value="just_exit"/>
...
</profile>
</profiles>
...
>From dialplan (own) public/confX.conf.xml:
...
<extension name="confX_join">
<condition field="destination_number" expression="^confX_join$"/>
<condition field="${confX_num}" expression="^1(\d{4})$">
<action application="bind_meta_app" data="1 a s
execute_extension::subX_1"/>
<action application="bind_meta_app" data="2 a s
execute_extension::subX_2"/>
<action application="bind_meta_app" data="3 a s
execute_extension::subX_3"/>
<action application="conference" data="confX_${cpnfX_num}@confX_M"/>
</condition>
</extension>
...
<extension name="subX_1">
<condition field="destination_number" expression="^subX_1$">
<action application="set" data="pass_rfc2833=true"/>
<action application="conference" data="confX_${cpnfX_num}_1 at confX_S"/>
</condition>
</extension>
<extension name="subX_2">
<condition field="destination_number" expression="^subX_2$">
<action application="set" data="pass_rfc2833=true"/>
<action application="conference" data="confX_${cpnfX_num}_2 at confX_S"/>
</condition>
</extension>
<extension name="subX_3">
<condition field="destination_number" expression="^subX_3$">
<action application="set" data="pass_rfc2833=true"/>
<action application="conference" data="confX_${cpnfX_num}_3 at confX_S"/>
</condition>
</extension>
...
During connection user is first handled by IVR, where he enters
conference number (assume: "1234") which is stored in "confX_num"
variable. Then call is transfered to "confX_join". Here I assign actions
for *1, *2 and *3 DTMF sequences then join main conference
("confX_1234_M"). When some user presses i.e. "*2" then he also enters
subconf 2 ("confX_1234_2"). Those users attached to "confX_1234_2" are
at the same time still attached also to "confX_1234_M", but found muted
and deaf to other participants. Then, leaving subconference they will be
back "alive" in master conference, which I tested by kicking them from
"confX_1234_2" manually.
Now my problem begins. Then user is on "confX_1234_M" dialing "#" forces
user to leave conference, as defined in "just-exit" controls. But when
user enters also "confX_1234_2" DTMF codes are no longer processed,
neither by master conference nor by subconference. I set
"pass_rfc2833=true" but it is not helpful. Did I missed to set something
[1] in the dialplan or other config files, or [2] actually no DTMF codes
can be processed while in "*2" leg? And if [2]==true: would it be
possible to develop such DTMF handling?
BTW: DTMFs are not processed while in subconference but if user is
kicked off from subconf back to main conference, one can use DTMF codes
again to (un)mute (0), join sub (*2) or leave (# or 1).
TIA for your help or tips.
Regards,
Mariusz
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
------------------------------------------------------------------------------
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20110415/f086f941/attachment-0001.html
More information about the FreeSWITCH-users
mailing list