[Freeswitch-users] bind_meta_app blocks DTMFs?
Mariusz Czulada
manieq at wp.eu
Fri Jan 14 19:31:33 MSK 2011
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
More information about the FreeSWITCH-users
mailing list