Okay, I did something 100% in dialplan with some conference.conf.xml additions. It's an example of how crazy powerful the dialplan really is. First, you need to add these to your conference.conf.xml: <caller-controls> ... <group name="plain"> <control action="mute" digits="0"/> <control action="energy up" digits="9"/> <control action="energy equ" digits="8"/> <control action="energy dn" digits="7"/> <control action="vol talk up" digits="3"/> <control action="vol talk zero" digits="2"/> <control action="vol talk dn" digits="1"/> <control action="vol listen up" digits="6"/> <control action="vol listen zero" digits="5"/> <control action="vol listen dn" digits="4"/> </group> ... </caller-controls> And add a new conference profile: <profiles> ... <profile name="simple"> <param name="domain" value="$${domain}"/> <param name="rate" value="16000"/> <param name="interval" value="10"/> <param name="energy-level" value="300"/> <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> <param name="muted-sound" value="conference/conf-muted.wav"/> <param name="unmuted-sound" value="conference/conf-unmuted.wav"/> <param name="alone-sound" value="conference/conf-alone.wav"/> <param name="moh-sound" value="$${hold_music}"/> <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/> <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/> <param name="kicked-sound" value="conference/conf-kicked.wav"/> <param name="locked-sound" value="conference/conf-locked.wav"/> <param name="is-locked-sound" value="conference/conf-is-locked.wav"/> <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/> <param name="pin-sound" value="conference/conf-pin.wav"/> <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/> <param name="caller-id-name" value="$${outbound_caller_name}"/> <param name="caller-id-number" value="$${outbound_caller_id}"/> <param name="caller-controls" value="plain"/> <param name="comfort-noise" value="true"/> </profile> ... </profiles> Add these extensions to your dialplan. I just put them in conf/dialplan/default/01_Conf_Add_Caller.xml: <include> <!-- Sample dialplan for sending member or moderator to a conference where he/she can add/remove calls --> <!-- Dial 46xx for member, *46xx for moderator --> <extension name="Simple add-caller conf: member"> <condition field="destination_number" expression="^(46\d{2})$"> <action application="answer"/> <action application="conference" data="$1@simple"/> </condition> </extension> <extension name="Simple add-caller conf: moderator"> <condition field="destination_number" expression="^\*(46\d{2}$)"> <!-- set up a few bind_digit_action (BDA) bindings for the moderator --> <action application="bind_digit_action" data="moderator,*1,exec:execute_extension,ASK_FOR_NUMBER__$1 XML default"/> <action application="bind_digit_action" data="moderator,*2,exec:execute_extension,CANCEL_LAST_CALL__$1 XML default"/> <action application="digit_action_set_realm" data="moderator"/> <action application="conference" data="$1@simple"/> </condition> </extension> <extension name="Add new OB call to conference"> <condition field="destination_number" expression="^ASK_FOR_NUMBER__(\d+)$"> <!-- ask caller for a number + #, collect into ${target_num} variable --> <action application="play_and_get_digits" data="4 11 1 5000 # ivr/ivr-enter_destination_telephone_number.wav ivr/ivr-that_was_an_invalid_entry.wav target_num \d+"/> <!-- add this call to the conference --> <action application="execute_extension" data="ADD_CALL_TO_CONF__${target_num}"/> </condition> </extension> <extension name="Remove last OB call added to conference"> <condition field="destination_number" expression="^CANCEL_LAST_CALL__(\d+)$"> <!-- remove this call from the conference --> <action application="set" data="res=${uuid_kill ${new_uuid}}"/> </condition> </extension> <extension name="add that call"> <!-- if we have a four-digit number then attempt to dial it as a user ... --> <condition field="destination_number" expression="^ADD_CALL_TO_CONF__(\d\d\d\d)$" break="on-true"> <action application="set" data="new_uuid=${create_uuid foo}" inline="true"/> <action application="set" data="res=${bgapi originate {origination_uuid=${new_uuid}}user/$1 &conference(${conference_name})}"/> </condition> <!-- if we have a five+ digit number then attempt to dial it as a gw connection ... --> <condition field="destination_number" expression="^ADD_CALL_TO_CONF__(\d\d\d\d)$" break="on-true"> <action application="set" data="new_uuid=${create_uuid foo}" inline="true"/> <action application="set" data="res=${bgapi originate {origination_uuid=${new_uuid}}sofia/gateway/mygw/$1 &conference(${conference_name})}"/> <!-- Alternatively, you can just use loopback, but that creates three call legs instead of one, so be warned --> <!-- <action application="set" data="res=${bgapi originate {origination_uuid=${new_uuid}}loopback/$1 &conference(${conference_name})}"/> --> </condition> <!-- ... otherwise inform moderator that the operation was not exactly successful --> <condition field="destination_number" expression="^ADD_CALL_TO_CONF__$"> <action application="playback" data="ivr/ivr-dude_you_suck.wav"/> </condition> </extension> </include> How it works: Moderator dials *46xx to go into a conference. ("Normal" users dial 46xx and they cannot add a new call.) Moderator dials *1 and gets a dialog asking to enter the destination number and # key. Moderator keys in a phone number (or extension number) and presses #. System makes call and drops it into the conference. As a bonus feature I added *2 which will disconnect the most recently added phone call. I did this mostly as a proof of concept, but there's no reason you can't take this code and put it into production. In fact, you could add a PIN or user id (or both) checker so that just anyone can't add a call to a conference. If you guys actually like this then I'll add it to the wiki or something so everyone else can reference it. Enjoy, MC 2011/5/16 fieldpeak <fieldpeak@gmail.com>
Hi Gurus,
Is there anybody can help this issue? thanks!
Regards, Charles
在 2011年5月14日 下午3:54,fieldpeak <fieldpeak@gmail.com>写道:
Hi Michael,
Thanks for your detailed suggestion.
i test it as below steps, it works fine, however, there is a limiation that i have to fill fixed callee number in conference.conf.xml (data="execute_extension 5001"), while actually i what to dial arbitrary number after "*" dynamically(e.g *1234, *2345), i can think out it could realize by a IVR script like "data="execute_extension IVR_scripts" and after IVR give some voice prompt (pls input the callee number) then ... however, considering simplicity, can i convey the DTMF into the dialplan (just directly press *1234, and then 1234 ring...)? could you please provide any hints or any suggestion... Thanks a lot!
1. in conference.conf.xml, set as below, <control action="execute_application" digits="*" data="execute_extension 5001"/>
2. in dial plan,
<!-- for confernce named conf100 --> <extension name="conf100" > <condition field="destination_number" expression="^666$"> <action application="answer"/> <action application="set" data="conference_user_list=|"/> <action application="conference" data="conf100@default"/> </condition> </extension>
and
<!-- for dial out 5001 from the conference conf100 -->
<extension name="5_to_conf_out" > <condition field="destination_number" expression="^(5\d+)$"> <!-- <action application="conference" data="conf100 dial sofia/internal/5001@192.168.200.201 100 Conference_Caller_Name"/> --> <!-- <action application="bridge" data="sofia/internal/$ 1@192.168.200.201"/> --> <action application="set" data="api_result=${conference(conf100 dial sofia/internal/$1@192.168.200.201 100 Conference_Caller_Name)}"/> </condition> </extension>
3. register a extension 3001, call 666 and join a conference, and then press "*", the FS will call 5001 on a IAD. then 5001 and 3001 join the same conference.
2011/5/12 liuyp2 <liuyp2@asiainfo-linkage.com>
conference Your-Conf-Name dial user/1002
------------------------------ liuyp2 2011-05-12 ------------------------------ *发件人:* fieldpeak *发送时间:* 2011-05-12 11:11:41 *收件人:* FreeSWITCH-users *抄送:* *主题:* [Freeswitch-users] call somebody into conference after conferenceestablished
Hi Gurus,
i dial 666 and enter a conference, then i need call some body's phone number to join him into this conference... is there anyone can advise how can realize this scenario?
thanks.
Regards, Charles
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org