mod_conference: Any way to pass conference PIN in the URI?
Hi all, Part of an app I'm working on has a web UI for managing conferences on a FreeSWITCH instance. One of the goals in this effort is to allow a conference host to invite participants. We had initially used the 'api conference dial/bgdial' commands, but unfortunately we ran into some problems (we needed to provide credentials to our SIP proxy, among other things). So what we're doing now is inviting the person with a REFER. The conference owner enters a phone extension/SIP URI and the remote party's phone rings. When the remote party answers the call, it then REFERs their phone to call the FreeSWITCH conference. If the conference requires a PIN, then, obviously they get prompted for a PIN. Here's the million dollar question: Is there any way to pass along the conference PIN as a URI parameter or something like that? Any help would be greatly appreciated. Thanks in advance, -- Joe
On Mon, Oct 13, 2008 at 9:14 AM, Joe Attardi <joe.attardi@nortel.com> wrote:
Hi all,
Part of an app I'm working on has a web UI for managing conferences on a FreeSWITCH instance. One of the goals in this effort is to allow a conference host to invite participants. We had initially used the 'api conference dial/bgdial' commands, but unfortunately we ran into some problems (we needed to provide credentials to our SIP proxy, among other things).
So what we're doing now is inviting the person with a REFER. The conference owner enters a phone extension/SIP URI and the remote party's phone rings. When the remote party answers the call, it then REFERs their phone to call the FreeSWITCH conference. If the conference requires a PIN, then, obviously they get prompted for a PIN.
Here's the million dollar question: Is there any way to pass along the conference PIN as a URI parameter or something like that?
Any help would be greatly appreciated.
Thanks in advance,
-- Joe
Joe, Instead of modifying the URI, why not attach your own header: X-conf-pin: 1234 I haven't done it yet, but it might be as simple as: action application="conference" data="confname+${sip_X-conf-pin}"> Taken from: http://wiki.freeswitch.org/wiki/Channel_Variables#variable_xxxx http://wiki.freeswitch.org/wiki/Mod_conference#Dialplan_configuration -- Kristian Kielhofner http://blog.krisk.org http://www.submityoursip.com http://www.astlinux.org http://www.star2star.com
Woof! On Mon, 13 Oct 2008 11:02:49 -0400, Kristian Kielhofner <kkielhofner@star2star.com> wrote:
Instead of modifying the URI, why not attach your own header: X-conf-pin: 1234 I haven't done it yet, but it might be as simple as: action application="conference" data="confname+${sip_X-conf-pin}">
I don't believe that has the desired effect. It would seem the above line will change the conference PIN based on the value of the header in each call, but it will not prevent the caller from being asked to enter the PIN. Joe wants to have callers that are transfered into the conference from the Web UI not to have to enter a PIN via the DTMF keypad. --Woof!
On Mon, Oct 13, 2008 at 1:40 PM, Andy Spitzer <woof@nortel.com> wrote:
Woof!
On Mon, 13 Oct 2008 11:02:49 -0400, Kristian Kielhofner <kkielhofner@star2star.com> wrote:
Instead of modifying the URI, why not attach your own header: X-conf-pin: 1234 I haven't done it yet, but it might be as simple as: action application="conference" data="confname+${sip_X-conf-pin}">
I don't believe that has the desired effect. It would seem the above line will change the conference PIN based on the value of the header in each call, but it will not prevent the caller from being asked to enter the PIN.
Joe wants to have callers that are transfered into the conference from the Web UI not to have to enter a PIN via the DTMF keypad.
--Woof!
Hmmm, looks like I misunderstood the OP. But this seems even simpler: why not just create different conditional matches (for the same conference) in the dialplan based on something you can match to differentiate callers coming from the web ui, and don't prompt them for a pin (while prompting everyone else)? Perhaps something like: <extension name="conference-pinskip"> <condition field="destination_number" expression="^([0-9]\d+)$"/> <condition field="${sip_from_host}" expression="192.168.0.5"> <action application="answer"/> <action application="log" data="INFO Conference $1 - skipping pin\n"/> <action application="conference" data="$1@default"/> </condition> </extension> <extension name="conference-pin"> <condition field="destination_number" expression="^([0-9]\d+)$"> <action application="answer"/> <action application="log" data="INFO Conference $1 - prompting pin\n"/> <action application="conference" data="$1@default+1234"/> </condition> </extension> I'm still pretty new at this (and I'm sure there are better ways to do it) but I *think* this should ask for ping 1234 unless you are coming from SIP host 192.168.0.5 (at least according to the $sip_from_host, presumably parsing the host portion of the From: header). Obviously replace sip_from_host with a relevant SIP variable and expression with whatever you want to match... Am I getting any closer? ;) -- Kristian Kielhofner http://blog.krisk.org http://www.submityoursip.com http://www.astlinux.org http://www.star2star.com
Hi Kristian, Kristian Kielhofner wrote:
I'm still pretty new at this (and I'm sure there are better ways to do it) but I *think* this should ask for ping 1234 unless you are coming from SIP host 192.168.0.5 (at least according to the $sip_from_host, presumably parsing the host portion of the From: header). Obviously replace sip_from_host with a relevant SIP variable and expression with whatever you want to match...
I tried something similar (here is the relevant snippet from my default_context.xml): <context name="default"> <extension name="4444"> <condition field="destination_number" expression="^conf1$" break="on-true"> <action application="conference" data="conf1@4444+12345"/> </condition> <condition field="destination_number" expression="^conf1-nopin$" break="on-true"> <action application="conference" data="conf1@4444" /> </condition> </extension> </context> The intent was to skip the PIN if the destination number was 'conf1-nopin' and require it if it was 'conf1'. This works great for the first person to call the conference. After that, the setting "sticks". i.e. if I call conf1-nopin, I get in without a PIN, but then others get in without a PIN even if they call conf1; and if I call conf1; I am prompted for a PIN, but then others get prompted for a PIN even if they call conf1-nopin. I looked through the mod_conference docs and found this as the explanation: http://wiki.freeswitch.org/wiki/Mod_conference#Syntax "The first time a conference name (confname) is used, it will be created on demand, and the pin will be set to what ever is specified at that time: the pin in the data string if specified, or if not, the "pin" setting in the conference profile, and if that is also unspecified, then there is no pin protection. Any later attempt to join the conference must specify the same pin number, if one existed when it was created. " So, though your suggestion was good (and I got excited when it initially worked!), it looks like this won't work. Does anyone else have any other ideas? Thanks... -- Joe
you don't have to use the pin in the conference you can use a small script or some dialplan logic to ask for an arbitrary pin then comp it to the one from the header. On Tue, Oct 14, 2008 at 4:11 PM, Joe Attardi <joe.attardi@nortel.com> wrote:
Hi Kristian,
Kristian Kielhofner wrote:
I'm still pretty new at this (and I'm sure there are better ways to do it) but I *think* this should ask for ping 1234 unless you are coming from SIP host 192.168.0.5 (at least according to the $sip_from_host, presumably parsing the host portion of the From: header). Obviously replace sip_from_host with a relevant SIP variable and expression with whatever you want to match...
I tried something similar (here is the relevant snippet from my default_context.xml):
<context name="default"> <extension name="4444"> <condition field="destination_number" expression="^conf1$" break="on-true"> <action application="conference" data="conf1@4444+12345"/> </condition> <condition field="destination_number" expression="^conf1-nopin$" break="on-true"> <action application="conference" data="conf1@4444" /> </condition> </extension> </context>
The intent was to skip the PIN if the destination number was 'conf1-nopin' and require it if it was 'conf1'. This works great for the first person to call the conference. After that, the setting "sticks".
i.e. if I call conf1-nopin, I get in without a PIN, but then others get in without a PIN even if they call conf1; and if I call conf1; I am prompted for a PIN, but then others get prompted for a PIN even if they call conf1-nopin.
I looked through the mod_conference docs and found this as the explanation: http://wiki.freeswitch.org/wiki/Mod_conference#Syntax "The first time a conference name (confname) is used, it will be created on demand, and the pin will be set to what ever is specified at that time: the pin in the data string if specified, or if not, the "pin" setting in the conference profile, and if that is also unspecified, then there is no pin protection. Any later attempt to join the conference must specify the same pin number, if one existed when it was created. "
So, though your suggestion was good (and I got excited when it initially worked!), it looks like this won't work. Does anyone else have any other ideas?
Thanks...
-- Joe
_______________________________________________ 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
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ AIM: anthm MSN:anthony_minessale@hotmail.com <MSN%3Aanthony_minessale@hotmail.com> GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com<PAYPAL%3Aanthony.minessale@gmail.com> IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org <sip%3A888@conference.freeswitch.org> iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org<googletalk%3Aconf%2B888@conference.freeswitch.org> pstn:213-799-1400
participants (4)
-
Andy Spitzer
-
Anthony Minessale
-
Joe Attardi
-
Kristian Kielhofner