[Freeswitch-users] Stuck on my first attempt at dialplanning

Alan Chandler alan at chandlerfamily.org.uk
Tue Aug 18 11:59:29 PDT 2009

This is my first attempt at setting up the dial plan to do anything more 
than the basic default stuff.  What I am trying to do is set up some 
conferencing as follows

1. A calls B
2. B puts both A and B into a conference
3. A or B calls out from the conference (via the * set in caller 
controls) to C
4a If C hangs up or rejects the call, A/B should go back to the conference
4b If A/B types *1 before the call is answered he should go back to the 
4c If A/B types *1 after the call is answered both A/B and C should go 
back into the conference.

It nearly all works except

i) A seemingly can't use the * caller control, where as B can.  The 
other caller control I set up (mute) seems to work

ii) If C rejects the call before answering, B gets hung_up (because of 
i) I can only test with B)

iii) When B gets back to the conference, the * caller control doesn't 
work (although the mute does)

Can someone tell me where I am going wrong.


Here is the dialplan snippet that I use to handle the dialout from the 
conference (pressing the * in step 3)

     <!-- Conference Callout To Another Extension -->
     <extension name="cco">
       <condition field="destination_number" expression="^cco$">
         <action application="read" data="3 3 
'tone_stream://%(10000,0,350,440)' digits 5000 #"/>
         <action application="bind_meta_app" data="2 a s 
execute_extension::conf_transfer XML features" />
         <action application="set" data="hangup_after_bridge=false" />
         <action application="bridge" 
data="user/${digits}@${domain_name}" />
         <action application="info" />
          <action application="conference" 
data="${conference_name}@default" />

     <extension name="conf_transfer">
       <condition field="destination_number" expression="^conf_transfer$" >
         <action application="answer" />
         <action application="transfer" data="-both ${conference_name} 
XML default" />

And here is the bit in my default XML where I define the conference

     <extension name="nb_conferences">
       <condition field="destination_number" 
	<action application="answer"/>
	<action application="conference" data="$1 at default"/>

The call out to the conference from the original call is done via 
changing the bind meta app in the default dialplan for local extension

	<action application="bind_meta_app" data="2 ab s execute_extension::cf 
XML features"/>

and this extension in features

     <!-- Used to transfer both legs into a conference -->
     <extension name="cf">
       <condition field="destination_number" expression="^cf$">
	<action application="answer"/>
	<action application="transfer" data="-both 2${dialed_extension:1} XML 

I can get as far as talking to C after dialing him, but if he doesn't 
answer, or rejects the call I get lost in space somewhere.  If I type *1 
during the call with C I get back to the conference, and C appears to be 
  in the conference (hear him speak) but he gets music on hold.

What am I doing wrong?

Alan Chandler

More information about the FreeSWITCH-users mailing list