[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