Multi Site Conference?

drmessano
Posts: 203
Member Since:
2006-10-10

Can't seem to work this out in my head..

Is it possible to set up a multi-site conference using X number of Trixboxes which are connected via IAX?

What I envision is user at Site 1 dialing into the 9001 conference. User at Site 2 dials into the 9001 conference on his local pbx (#2). User at site 3 dials into the 9001 conference on her local pbx (#3) and so on.. Because of ???? being set up, the conferences are trunked together, which reduces the audio paths to one per box, versus having each caller dial into the primary box.

Any thoughts?

dm



dickson
Posts: 1424
Member Since:
2006-06-02
Thats an interesting

Thats an interesting idea.
If you are talking 1-8 users per site joining, then there might not be much point, but i suppose if you are going to have dozens of people per site joining the conference it might make sense.
Out of the box, won't work, but I can think of a couple of hacks.
Was this something you wanted the system to do automatically for every meeting?

I can have a coding idea in my head that might work. If someone has some ideas about it, post it. I'll code a hack this weekend and post it here.



drmessano
Posts: 203
Member Since:
2006-10-10
Yes, it would be nice to be

Yes, it would be nice to be able to set it up and leave it.. Maybe create a couple of companywide conferences that will always bridge across all the PBX's.

I'm curious when you say "If you are talking 1-8 users per site joining, then there might not be much point".. Would you not see a bandwidth savings from user 2 on? Forget that we're not talking a lot of bandwidth per call, but I would think any savings on bandwidth would be a plus.. even if it's not "a lot" until you cut 8 audio paths per site down to 1.



jchuby
Posts: 375
Member Since:
2006-07-20
FEATURE CODE!! Heres how to

FEATURE CODE!!

Heres how to do it (i think, in my head)...

Server 1: "Host" Server Virtual Conference 9001
-Inbound ROUTE with and CID Matching to 44444 (Any random, but understandable set of numbers) goes to conf 9001

Servers 2-Infinity
-Trunk using IAX to Server 1 with outbound Caller ID set to 44444
-Outbound Routes setup one called Conference and have it Only send out over the IAX and its pattern matching to something unique and short (ie: 88923)
- Feature code setup for 9001 to dial 88923, which will then get sent out over IAX with CID 44444 to server1, which will put user in conf.

You can work around with diff numbers and DID settings, but I dont see why this simple setup wouldnt work on all servers (As long as servers 2+ do not have an ext 9001)

--

JChuby
Experienced Trixbox Tech for Hire in Greater NYC
JChubaK@gmail.com or PM me on Trixbox.org Forums



drmessano
Posts: 203
Member Since:
2006-10-10
Ok, but each user at each

Ok, but each user at each site is now tying up a channel on the trunk connecting to the conference, correct?

So if my ten users at site 3 are connecting to the conference, I now have ten channels open to site 1... which is what I was trying to avoid.

I was thinking more along the lines of this....

Server 1 hosts the main conference.
Server 2 hosts a conference with all the site 2 users connected to it.
Server 2's conference "connects" once to server 1's conference. It is now occupying 1 channel to the conference.

Think of it like Server 2's conference is a "speakerphone" dialed into Server 1's conference.

Bandwidth wise, Server 1 would only have to handle enough channels to support X number of servers connected to the conference, and each satellite server would handle it's individual users. If I had 100 users dialed into Server 4, and say 20 on site at their desks, that's 120 users not dialed into Server 1, and all sharing the one channel to the first server. Fan that out to 1000, 10000, or 20000 users, and that's one heck of a conference call with little bandwidth.



jmullinix
Posts: 836
Member Since:
2006-06-04
Why couldn't someone at

Why couldn't someone at Trixbox 1 dial into Trixbox 2 and enter the conference through say and IVR? Then transfer that call to the conference room on Trixbox 1. This channel will inter-connect the conferences. Then your callers just enter the appropriate conference rooms. Call tear down might be a command line thing, or a custom script.

--

John

In search of Dundi Peers in Lake Wales, FL and Baltimore, MD.
http://www.cohutta.com
1-706-632-3343 - E164 friendly (Use your friendly ENUM trunk today.)
Dial Plan helper http://www.cohutta.com/npanxx.php



drmessano
Posts: 203
Member Since:
2006-10-10
Sounds like a plan.. I never

Sounds like a plan.. I never thought about initiating a call, then transferring it.

Is it possible to dial a call from inside a conference? What about if the burden was on each site to dial into the main conference from their conference. If the call were to get dropped, they could dial in without disturbing the rest of the conference.



jchuby
Posts: 375
Member Since:
2006-07-20
ahhh, i understand what you

ahhh, i understand what you want to do now...

The transfer call to conference is prob your best method for bridging all the separate rooms together.

--

JChuby
Experienced Trixbox Tech for Hire in Greater NYC
JChubaK@gmail.com or PM me on Trixbox.org Forums



dickson
Posts: 1424
Member Since:
2006-06-02
Conference/transferring

Conference/transferring requires too much human intervention. You want a multi site conference system that is autonomous. This isn't a bad idea, i think you could host a lot of meetings.

I've got some code started that I'll post on Monday.

I won't get into details just yet, still working on it, but essentially heres what happens

A call enters into the MeetMe.
System does a check on the number of participants.
If the number is =1 then the system grabs the meeting number then automatically initiates a call from the pbx to the other pbx's using the same meeting credentials. (uses a .call file in the spool directory)
It does work, just working out a way to automatically hang up the calls reliably.



philippel
Posts: 658
Member Since:
2006-05-31
you may want to consider

you may want to consider manually setting up such a 'tree' of conferences and evaluating the quality of the conference in such a scneario I could imagine the two tiered level of mixing that is going on in each conference 'leaf' and then again at the trunk of the conference might end up with problems. It can easily be evaluated by manually initiating the conferences and doing a test. This would be good background work to do before writing all the code to make it happen and then finding out the audio results are not good.

--

Philippe Lindheimer, FreePBX® Project Leader
http://freepbx.org - #freepbx on irc.freenode.net
http://freepbx.org/forums - The FreePBX® Forum
OTTS Training - Oct 7-10, Digium's HQ



dickson
Posts: 1424
Member Since:
2006-06-02
I did do a quick test to

I did do a quick test to prove the concept. Worked ok. The code itself is about 14 lines, so its not complex. Yet.
The error checking/disconnecting of conferences is proving to be far more complex than establishing the meetings.
By design, it works as a 'star' layout, since theoretically the first person to enter a conference will cause that system to become the host, and establish connections to all the other conferences. No chaining. Chaining leads to some REALLY odd call quality.



dickson
Posts: 1424
Member Since:
2006-06-02
Welcome to "MultiMeet"

Welcome to "MultiMeet" !!

Here's some code you can try. Let me know if you find any issues, i'll try and fix it up.

Its BETA, but should work enough for you to try. I tested it with 4 PBX's and with about 25 users, seemed to work just fine.

WHAT IT DOES:
This allows for multiple sites, each running their own conference servers to be bridged automatically together as one large virtual meeting room. So instead of 3 centers with 25 users each all attempting to join a single server (so 50 outside SIP connections to a single server, plus the 25 local) this system keeps each of the 25 users on their own pbx, and only needs 1 single trunk between it and the 'master' server. So, for 3 PBXs, only 2 active SIP connections.)

OPERATION OUTLINE:
A user dials a ring group/ivr which points to the multimeet code.

It asks for the meeting number.
Person enters the number and the system attempts to join the meeting.
It simply detects the first caller into a meeting, then creates a 'star' type link to the other meeting servers it has in its configuration based on the Meeting number the first participant enters.

This creates a simple single trunk between the 'master' meeting room and the other pbxs.
(My code has the first PBX to have someone join the meeting to become the master)

HOW TO MAKE IT WORK:

Install the code (installation instructions further down)
Create a meeting room on each of your servers using FreePBX meeting GUI.
Create a ring group/IVR to point to CUSTOM, and in box to the right, point it to
multimeet-entry,s,1

Call that number, and the system prompts you for your meeting number
Put that in (currently defaults to 4 digits)
System will now join the meeting.
If it sees that this meeting has NO other participants, that triggers the system to make outbound calls.

INSTALLATION INSTRUCTIONS:

Open the /etc/asterisk/extensions_custom.conf file
copy /paste the code below the *************** in this post into that file
Save the changes and exit
type asterisk -rx reload
goto FreePBX
Create a ringgroup/ivr to point to CUSTOM and the context it will goto is multimeet-entry,s,1
Submit the changes
Click on the red bar
Create some meeting room numbers on your server (same meeting on each pbx)
(Repeat the above steps on each of your PBX's that you want to test it on)
Call the ringrroup/ivr on one of the PBXs and join the conference.

KNOWN OUTSTANDING ISSUES:

This code is BETA. Only tested marginally by me
This code won't disconnect the trunks between the meetings....yet.
I'll work on that code the next day or two.
Its easy enough for you to manually disconnect them, from the asterisk CLI
type soft hangup [Press TAB]
That will show you the active calls. You'll be able to see the calls that are linked to the meeting because it will have the same number as the meeting itself.

It doesn't handle meeting PIN numbers just yet, but I'll try and fix that (of course anyone ambitious out there can send me, or post additional code too.

***************
[multimeet-entry]
;Welcome to Multimeet Version .9 Beta
;This code is for instructional and training purposes only.
;This is the first module. Users come here first, they enter in their pin number
;At this time, pin numbers are assign ad-hoc. This will be corrected a little later on in the beta release.

exten => s,1,Wait(1)
exten => s,2,DigitTimeout(5)
exten => s,3,ResponseTimeout(5)
exten => s,4,Playback(enter-conf-pin-number&then-press-pound)
exten => s,5,NoOp(Requesting user to enter in their PIN number from their touch tone phone)
exten => s,6,Read(meetmepin||4|||5)
;this listens for the user to enter in their 4? digit pin number, with the # key, or 4 digits which ever is first
;they have 5 seconds to enter something, if that time is not met, the system will ask again.
;you can change this to reflect the meeting types you have.

exten => s,7,GotoIf($["${meetmepin}" = ""]?4)
exten => s,8,NoOp(the pin number entered is ${meetmepin})
;s,7 check to see if the user entered anything, if not, the system will loop him asking for a new number

exten => s,9,Goto(multimeet-2,s,1]

[multimeet-2]
;this module joins the user to the conference, and initates outbound calls to other conferences

exten => s,1,NoOp(Joining current caller to conference number ${meetmepin})
exten => s,2,MeetMeCount(${meetmepin}|count)
exten => s,3,NoOp()
;we now count to see the number of users in a meeting room to make sure that there are not 2 people in there already.
;if the system sees 2 or more in a meeting room already, we send them back to the beginning to select a new pin.

exten => s,4,Gotoif,$[${count} >=1]?100
;if the count is already 1(or more) then there is already a person in the room, or a MultiMeet link is established
;either situation would mean that making another link is not necessary at this time.

exten => s,5,system(echo "Channel: Local/${meetmepin}@from-internal/n" >> /etc/asterisk/${meetmepin}.call)
exten => s,6,system(echo "MaxRetries: 1" >> /etc/asterisk/${meetmepin}.call)
exten => s,7,system(echo "WaitTime:5" >> /etc/asterisk/${meetmepin}.call)
exten => s,8,system(echo "Context: from-internal" >> /etc/asterisk/${meetmepin}.call)
exten => s,9,system(echo "Extension: 89${meetmepin}" >> /etc/asterisk/${meetmepin}.call)
exten => s,10,system(echo "Priority: 1" >> /etc/asterisk/${meetmepin}.call)
exten => s,11,system(chown asterisk:asterisk ${meetmepin}.call)
exten => s,12,Wait(1)
exten => s,13,system(mv /etc/asterisk/${meetmepin}.call /var/spool/asterisk/outgoing)

;this code above creates a ".call file" that will be placed into /var/spool/asterisk/outgoing.
;This call file automatically generates a call within the asterisk PBX.
;The entry "Channel" defines the 'local' meeting the computer should join
;The entry "Extension" is the destination meeting it should join.
;This creates a 'trunk' between the two.

;On my two asterisk PBX's, I had created a meeting '6000' using FreePBX on each.
;In the above example, my 'far end' PBX is contacted with an outbound prefix of 89.
;So, when the person enters in the meeting they want to contact as 6000, the system will call 896000
;an outbound route in FreePBX simply of 89|. will send 6000 to the far end system.
;the far end system matches that to the local meeting and a link is made between the two systems.
;make sense? :)

;If you have multiple sites that you want to call, just repeat the code, modify the s,XX accordingly
;as well as the "EXTENSION" entry to reflect the outbound dial prefix that you need.

exten => s,n,Goto(s,100)
exten => s,100,MeetMe(${meetmepin}|Mds)



eoo
Posts: 448
Member Since:
2006-10-30
this looks like it could be

this looks like it could be very interesting. do you see any reason why this cannot be cascaded and extended indefinitely [besides bandwidth at the star's hub]? Monster conferences....



dickson
Posts: 1424
Member Since:
2006-06-02
Based on some of the testing

Based on some of the testing I did on this thing last night, Monster isn't even the right word. Colossal is more along the lines I think could be potentially achievable. The test I did last night was 200 simulated SIP users and 25 regular SIP users mixed with 5 PSTN lines across 5 boxes and it was fine. Worked like a charm and boxes weren't even breaking a sweat.

And the coding isn't that complex, I threw the previous posted code together in less than an hour. I just didn't bother with PINs or other things, but a little more time could easily do all the features such as waiting for Admins to join, minimizing on hold music, etc etc. Wouldn't be hard to do.

A little front end coding to spread callers around to different servers for some load balancing, I sincerely think it could be possible to achieve.

Lets pretend with Meetme that a box could handle 100 simultaneous meetme users (i will test what the limit is shortly, but i think it could do it) in either a single or several different meetings.....that means that you could have a single "HOST" box with 100 simultaneous SIP connections...if each one of those were hooked up to 100 boxes, each hosting 100 users each themselves....yowsers.

Lets say you were buying el-cheap $200 machines and doing everything via inbound SIP provider, for like $25,000 in hardware you could build a conference system that could, in theory, handle 10,000 simultaneous meeting place phone calls.

...Colossal...and inexpensive.



eoo
Posts: 448
Member Since:
2006-10-30
yes, looking at the way this

yes, looking at the way this works, that is what I was thinking... could have the whole forum on a conference call easily! this starts some interseting ideas ... like the ability of having a virtual convention .... with the ability to have sub conferences going on and users to slide from "room" one to another .... very, very interesting! [nice work by the way!]



drmessano
Posts: 203
Member Since:
2006-10-10
This is awesome.. thank

This is awesome.. thank you.

I could see a company that has implemented Trixboxes at each of their branches using this for a companywide conference call with ease.. Imaging putting 500 offices x 30000 users on a call vs 20000 users dialing into one server.



dickson
Posts: 1424
Member Since:
2006-06-02
Absolutely possible. It

Absolutely possible. It would be interesting to plan the architecture for a system that would handle 20,000 users. That bandwidth would be potentially staggering! :)

I'll continue to work on the disconnection of trunks this week. Its a little bit tricky to do reliably. My thought is at this point to watch the meeting places, and if there is only 1 person in the conference for more than say, 30 mins (a single user in a conference would mean that the only participant would be the trunk itself, and after the time out, the system will initiate a hang up.)

Let me know if you have any problems or questions about getting it running!

Welcome!! :)



MillsapsPE
Posts: 309
Member Since:
2006-06-09
We currently have TB

We currently have TB installed at 3 of our locations and I'm buying the hardware for the 4th. This is a great idea for saving bandwidth for conference calls.



eoo
Posts: 448
Member Since:
2006-10-30
Are we sure about that? If

Are we sure about that? If we have a single server with an 80 person conference [OK, this is a thought experiment so humor me a second] and each is using, say 100Kb bandwidth, then we know that server needs 8Mbs for the conference.

Now split those users to use 4 TBs. If four TBs are hooked together and each has 20 users on the conference, there is a hub at the center which has three conference pipes going into it. So, how much bandwidth will each of those pipes utilize?

Surely for everyone to participate, the bandwidth through the central server has to be the same either way.

The benefit surely cannot be bandwidth reduction so much as CPU load sharing to actually manage the conference. Am I missing something?



MillsapsPE
Posts: 309
Member Since:
2006-06-09
I thought dmessano addressed

I thought dmessano addressed this in the 5th post.

In terms of connecting TB boxes located in different geographic locations, the number of users is mostly irrelevant. The relevant parameter is how many TB's are connected to the main TB hosting the conference. It doesn't matter how many users are actually connected to each TB unit. In reality, I guess it could matter in terms of having to many local connections overloading your local 10/100/1000 network to your local TB unit.



dickson
Posts: 1424
Member Since:
2006-06-02
Yes, Think about that for a

Yes, Think about that for a second Eoo

You have 4 servers, 20 people each...you don't need to establish a trunk for each PERSON, you only need to establish a trunk for each MEETING on each server. So, lets say you are doing it with a STAR pattern, thats only 3 trunk lines. 1 from each of the 3 pbxs linking to the 4th pbx acting as the hub.

Each PBX handles the multiple connections for their users...and handles the multiplexing of all the sound. That 'single sound' file is carried over a single trunk to the hub.

That means considerably less bandwidth. The "HUB server" would only have 20 + 3 (local users + 3 trunks) thats 23 lines, and only 3 coming across your "WAN" pipe...which reduces the load.



jmullinix
Posts: 836
Member Since:
2006-06-04
Now that is cool

Thanks, dickson for the code. I am installing it now and will test it amongst my boxes.

Just a thought on call teardown, and I am not a programmer, but when the user count gets to one in a given conference room, could you just go ahead and tear down the trunk call for that machine. If there is no human there, there is no need for that machine to remain on-line.

Thanks for taking time to write and debug this. It is an awesome tool.

--

John

In search of Dundi Peers in Lake Wales, FL and Baltimore, MD.
http://www.cohutta.com
1-706-632-3343 - E164 friendly (Use your friendly ENUM trunk today.)
Dial Plan helper http://www.cohutta.com/npanxx.php



dickson
Posts: 1424
Member Since:
2006-06-02
Thanks! Keep me posted on

Thanks! Keep me posted on any bugs or issues you might have...and especially success stories!
I worked out tuesday to allow it to ask for meeting passwords for user and/or admin. And the actual 'trunk' can call a meeting on a remote server that has a pin and join it without having to know the pin. It scans the .conf file and pulls the admin password for a meeting and joins using that (if one is used) really slick.

Yep, thats exactly how its going to work, if only 1 person in a meeting. There was just a minor bug that i'm trying to sort out, since i'm trying to make the code as flexible as possible, i want to have it installable on any system so anyone can set up a meeting. The scenerio is, if there is a meetingcount, i don't want a remote server to hangup the meeting, then have someone join that meeting after the hang up, and have that suddenly trigger a bunch of new trunks to existing meetings. I haven't tested that scenerio as to what might happen...but just sounds bad to me ;)

Look for updates at the end of the upcoming week.



eoo
Posts: 448
Member Since:
2006-10-30
I lost track of this thread

I lost track of this thread for a while but I am still skeptical about the "infinite users" case. I follow the logic about the bandwidth saving but there is something "perpetual motion" in the logic and I am not sure where the disconnect is. I think the disconnect is that you will save the bandwidth as dickson's logic is correct, but as a result, the call quality will just degarde as the user count goes up.
I don't know the mixing algorithm at the server but there has to be data loss in the mixing algorithm otherwise mutiple people speaking from multiple sources down one channel cannot work. The more sources, the more the data loss required to keep it within a single channel. This would suggest that if you do in fact hook up a 100 users using four servers, the quality will be pretty poor and get worse as the number of users goes up, whether there is a single super server or 1000 average servers. Ultimately, at the server at the center of the star, all the end point channels are being mixed into single channel to be sent back to each users. So, yes, I think the bandwidth savings works but the actual call quality will make it unusable..... but I am of course open to a demo that disproves me :)



drmessano
Posts: 203
Member Since:
2006-10-10
I would tend to agree that

I would tend to agree that yes, with 10000 user starred out amongst 100 servers, making 100 connections to the HUB, this would be an issue if you had multiple audio streams WITH audio on them mixing times mixing at the hub....it could be ugly.

However, this isn't practial anyway....

1. You're NOT going to have a companywide call with everyone allowed to unmute. This size call usually involves a handful of speakers, "preaching" in turn.
2. Even calls with 2 or 3 offices connected will often involve no more 3 or 4 users actively engaged in a conversation, and not speaking at the same time.

I see no reason why a single channel of audio from a remote box wouldn't successfully be mixed at a "hub" and redistributed across X number of boxes. You would have to be talking about a really crappy alogrithm to not accomplish such a simple task.

This is NOT a chatroom soultion.. but it's merely a router to route single channel audio (with an occasional overlap) across MANY distribution points, and seems to work well so far.



eoo
Posts: 448
Member Since:
2006-10-30
I can see where this should

I can see where this should work fine with small numbers of speakers preaching to the multitudes or small multi site conferences. With just a handful of speakers allowed to be talking at once there will be no meaningful data loss. Maybe a good idea to extend the code to enforce keeping the number of active particpants (dynamically) limited.



drmessano
Posts: 203
Member Since:
2006-10-10
I've been thinking more

I've been thinking more about this..

I don't think a limit is necessary at all.. you're not likely going to have the required number of users speaking at the same time to create a problem during a typical conference call... Even one of 30,000 users has a "protocol" because you're not going to HEAR anything but jumbled audio anyway with 2 or more people talking at the same time.

I have been on many conference calls with 3,000 users on them, and I can't remember one where two or more users actually spoke at the same time for more than a second.. They would ask for a comment, one or two people would try to speak up, a third one stated what they had to say, and the other two stopped and waited til the third one was done, and tried again to ask their question or make their statement.

The only time you will create a situation where the mixed audio is a problem is if you have an unruly Chatroom type enviorment like a Yahoo Chat Room. In that situation, you end up with nothing but jumbled audio anyway, and no one will ever get a word through. Darwin kinda fixes that one on it's own.

The issues you face with two or more users speaking at the same time are no different at all from what you would experience on a single-pbx trixbox conference.. You just can't/won't have two or more speaking at the same time.. Just doesn't work.

This is much like 2 or more users keying up at the same time on a two-way radio.. you can't make them NOT key up, and there's no reason to solve it technically.. everyone waits their turn, and if they don't, they'll see the result and not do it again.



jmullinix
Posts: 836
Member Since:
2006-06-04
I have created a way to tear down the trunks.

Dickson,

I have created a manual way to tear down the trunks. You will notice I have shamelessly reused your code. Put this in extensions_custom.conf

************************************************

exten => 501,1,Wait(1)
exten => 501,2,DigitTimeout(5)
exten => 501,3,ResponseTimeout(5)
exten => 501,4,Playback(enter-conf-pin-number&then-press-pound)
exten => 501,5,NoOp(Requesting user to enter in their PIN number from their touch tone phone)
exten => 501,6,Read(meetmepin||4|||5)
;this listens for the user to enter in their 4? digit pin number, with the # key,
;or 4 digits which ever is first
;they have 5 seconds to enter something, if that time is not met, the system will ask again.
;you can change this to reflect the meeting types you have.

exten => 501,7,GotoIf($["${meetmepin}" = ""]?4)
exten => 501,8,NoOp(the pin number entered is ${meetmepin})
;s,7 check to see if the user entered anything, if not, the system will loop
;him asking for a new number

exten => 501,n,meetmeadmin(${meetmepin},K) ;The "K" logs off all users
exten => 501,n,hangup()

--

John

In search of Dundi Peers in Lake Wales, FL and Baltimore, MD.
http://www.cohutta.com
1-706-632-3343 - E164 friendly (Use your friendly ENUM trunk today.)
Dial Plan helper http://www.cohutta.com/npanxx.php



dickson
Posts: 1424
Member Since:
2006-06-02
Thanks!! K option, didnt

Thanks!! K option, didnt know about that one...i can use that one.

No worries...code is posted for everyone to use!

yes, I never intended the meeting to be for 'everyone' to use all at the same time. Big meetings, you simply can't have everyone be able to talk..especially ones th general public has access to. Just takes one Id10t on a cell phone with bad coverage to ruin a meeting. Thats why i've been trying to get the meeting codes to work. Allas, me real job interferes with my time this past week.



mmitchel
Posts: 320
Member Since:
2007-01-10
Wow, thats great work...

I see this thread is a few months old now... Has anyone deployed this into a prod environment, any feedback from users? What if any issues arose?

Sounds like a great solution to multi site conferencing and keeping it free/in house.

- Matt



jmullinix
Posts: 836
Member Since:
2006-06-04
I know this is an old

I know this is an old thread, but I have figured a way to get the conferences to break down automatically. I have modified dickson's code, right at the very bottom.

[multimeet-entry]
;Welcome to Multimeet Version .9 Beta
;This code is for instructional and training purposes only.
;This is the first module. Users come here first, they enter in their pin number
;At this time, pin numbers are assign ad-hoc. This will be corrected a little later
;on in the beta release.

exten => s,1,Wait(1)
exten => s,2,DigitTimeout(5)
exten => s,3,ResponseTimeout(5)
exten => s,4,Playback(enter-conf-pin-number&then-press-pound)
exten => s,5,NoOp(Requesting user to enter in their PIN number from their touch tone phone)
exten => s,6,Read(meetmepin||4|||5)
;this listens for the user to enter in their 4? digit pin number, with the # key,
;or 4 digits which ever is first
;they have 5 seconds to enter something, if that time is not met, the system will ask again.
;you can change this to reflect the meeting types you have.

exten => s,7,GotoIf($["${meetmepin}" = ""]?4)
exten => s,8,NoOp(the pin number entered is ${meetmepin})
;s,7 check to see if the user entered anything, if not, the system will loop
;him asking for a new number

exten => s,9,Goto(multimeet-2,s,1]

[multimeet-2]
;this module joins the user to the conference, and initates outbound calls to
;other conferences

exten => s,1,NoOp(Joining current caller to conference number ${meetmepin})
exten => s,2,MeetMeCount(${meetmepin}|count)
exten => s,3,NoOp()
;we now count to see the number of users in a meeting room to make sure that there are
;not 2 people in there already.
;if the system sees 2 or more in a meeting room already, we send them back to the
;beginning to select a new pin.

exten => s,4,Gotoif,$[${count} >=1]?100
;if the count is already 1(or more) then there is already a person in the room,
;or a MultiMeet link is established
;either situation would mean that making another link is not necessary at this time.

exten => s,5,system(echo "Channel: Local/${meetmepin}@from-internal/n" >> /etc/asterisk/${meetmepin}.call)
exten => s,6,system(echo "MaxRetries: 1" >> /etc/asterisk/${meetmepin}.call)
exten => s,7,system(echo "WaitTime:5" >> /etc/asterisk/${meetmepin}.call)
exten => s,8,system(echo "Context: from-internal" >> /etc/asterisk/${meetmepin}.call)
exten => s,9,system(echo "Extension: 77${meetmepin}" >> /etc/asterisk/${meetmepin}.call)
exten => s,10,system(echo "Priority: 1" >> /etc/asterisk/${meetmepin}.call)
exten => s,11,system(chown asterisk:asterisk ${meetmepin}.call)
exten => s,12,Wait(1)
exten => s,13,system(mv /etc/asterisk/${meetmepin}.call /var/spool/asterisk/outgoing)

;this code above creates a ".call file" that will be placed into /var/spool/asterisk/outgoing.
;This call file automatically generates a call within the asterisk PBX.
;The entry "Channel" defines the 'local' meeting the computer should join
;The entry "Extension" is the destination meeting it should join.
;This creates a 'trunk' between the two.

;On my two asterisk PBX's, I had created a meeting '6000' using FreePBX on each.
;In the above example, my 'far end' PBX is contacted with an outbound prefix of 77.
;So, when the person enters in the meeting they want to contact as 6000,
;the system will call 776000
;an outbound route in FreePBX simply of 77|. will send 6000 to the far end system.
;the far end system matches that to the local meeting and a link is made between
;the two systems.
;make sense? :)

;If you have multiple sites that you want to call, just repeat the code,
;modify the s,XX accordingly
;as well as the "EXTENSION" entry to reflect the outbound dial prefix that you need.

exten => s,n,Goto(s,100)
exten => s,100,MeetMe(${meetmepin}|Mdsp)

exten => h,1,goto(h,101)
;exten => h,100,MeetMe(${meetmepin}|Mdsp)
exten => h,101,Noop(Break down trunk when all callers have left)
exten => h,102,MeetMeCount(${meetmepin}|newcount)
exten => h,103,Gotoif($["${newcount}" > "1"]?104:106)
exten => h,104,Wait(30)
exten => h,105,goto(s,102)
exten => h,106,System(/usr/sbin/asterisk -rx "meetme kick 8001 all")
exten => h,n,hangup()

--

John

In search of Dundi Peers in Lake Wales, FL and Baltimore, MD.
http://www.cohutta.com
1-706-632-3343 - E164 friendly (Use your friendly ENUM trunk today.)
Dial Plan helper http://www.cohutta.com/npanxx.php



nischal
Posts: 69
Member Since:
2007-03-22
multi meetme with w & A options

Hi guys..
I was trying to work with this multi meetme setup.. It works great. accept for Meetme options like w, and A.
the leader arrived is not passed on through IAX trunk to the other server.

Any one has any clue ? or some one has already passed this hurdle

Nischal..



MillsapsPE
Posts: 309
Member Since:
2006-06-09
Would someone mind updating

Would someone mind updating to work with 2.6?
I have it working with 2.2 boxes.

I get an error on the second line:
exten => s,2,DigitTimeout(5)

    -- Executing [9999@from-internal:1] NoOp("SIP/420-087f6bd0", "Running miscapp 1: MultiSite Conference") in new stack
    -- Executing [9999@from-internal:2] Goto("SIP/420-087f6bd0", "multimeet-entry|s|1") in new stack
    -- Goto (multimeet-entry,s,1)
    -- Executing [s@multimeet-entry:1] Wait("SIP/420-087f6bd0", "1") in new stack
  == Spawn extension (multimeet-entry, s, 2) exited non-zero on 'SIP/420-087f6bd0'

Extension 420 dialed 9999 to attempt to start conference. I hear a fast busy on the phone.



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.