Ignore the very last but one paragraph of this e-mail - that's the text from an old attempt before I fixed some things before sending this e-mail Alan Chandler wrote:
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 conference 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" /> </condition> </extension>
<extension name="conf_transfer"> <condition field="destination_number" expression="^conf_transfer$" > <action application="answer" /> <action application="transfer" data="-both ${conference_name} XML default" /> </condition> </extension>
And here is the bit in my default XML where I define the conference
<extension name="nb_conferences"> <condition field="destination_number" expression="^(2(0[1-9]|[1-9][0-9]))$"> <action application="answer"/> <action application="conference" data="$1@default"/> </condition> </extension>
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 default"/> </condition> </extension>
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 http://www.chandlerfamily.org.uk