Yate as a Conference Server
Line 4: | Line 4: | ||
* or you can do it programmatically using [[call.conference]] message from an external script or by using module [[Pbxassist]], that has the capability of doing PBX operations for conference on receiving DTMF sequences. | * or you can do it programmatically using [[call.conference]] message from an external script or by using module [[Pbxassist]], that has the capability of doing PBX operations for conference on receiving DTMF sequences. | ||
− | |||
== Create a conference from routing module == | == Create a conference from routing module == | ||
Line 10: | Line 9: | ||
A simple conference can be executed via regexroute.conf. Choose a number that will join people in a conference: | A simple conference can be executed via regexroute.conf. Choose a number that will join people in a conference: | ||
− | ^800$ = conf/sampleroom;lonely=true;maxusers=200 | + | ^800$ = conf/sampleroom;lonely=true;billing=true;maxusers=200 |
Here 800 will join people into a conference which is limited to 50 users, and where if there is only one person, they will remain in it. | Here 800 will join people into a conference which is limited to 50 users, and where if there is only one person, they will remain in it. | ||
Line 20: | Line 19: | ||
1. By letting the users call a specific number | 1. By letting the users call a specific number | ||
2. By making a scheduler that will call all the participants to join the conference room | 2. By making a scheduler that will call all the participants to join the conference room | ||
+ | |||
+ | Either way here are some steps to foloow to create your conference from an external module. | ||
+ | |||
+ | The parameters that are needed for conference room are taken from [[call.execute]] and [[call.conference]] messages. | ||
In regexroute.conf route all calls to script: | In regexroute.conf route all calls to script: | ||
Line 26: | Line 29: | ||
In the script you can check the identity of the caller from the database and if he has a conference scheduled then send him to conference room, else you can play him a prompt to say that he hasn't a conference at that moment. | In the script you can check the identity of the caller from the database and if he has a conference scheduled then send him to conference room, else you can play him a prompt to say that he hasn't a conference at that moment. | ||
+ | |||
+ | To make a conference from an external module: | ||
+ | |||
+ | $m = new Yate("chan.masquerade"); | ||
+ | $m->id = ""; | ||
+ | $m->params["message"] = "call.execute"; | ||
+ | $m->params["id"] = $partycallid; | ||
+ | $m->params["callto"] = "conf/cs-$conference_id"; | ||
+ | $m->params["notify"] = "conf-monitor/cs-$conference_id"; | ||
+ | $m->params["billing"] = "true"; | ||
+ | $m->params["lonely"] = "true"; | ||
+ | $m->params["maxusers"] = $maxusers; | ||
+ | $m->params["smart"] = "t"; | ||
+ | |||
+ | if ($is_organizer == "1") { | ||
+ | $m->params["record"] = "external/nodata/conference.php"; | ||
+ | // set this so that script can play warnings in conference | ||
+ | $m->params["recordwarn"] = "-"; | ||
+ | $m->params["speakers"] = $speakers; | ||
+ | $m->params["interval"] = $interval_notifications; | ||
+ | $m->params["waitlock"] = -200; | ||
+ | } else { | ||
+ | $m->params["existing"] = "t"; | ||
+ | } | ||
+ | $m->Dispatch(); | ||
+ | |||
+ | |||
+ | '''See also''' | ||
+ | |||
+ | * [http://sangoma.com/assets/docs/misc/2008_09_18_Conferencing_with_Sangoma_Wanpipe.pdf Conferencing with Sangoma Wanpipe] (PDF) | ||
+ | * [[Pbxassist|Pbxassist module]] | ||
+ | * [[Conference PBX]] |
Revision as of 15:24, 16 May 2013
Yate can be used as a Conference Server in two ways:
- you can execute a conference directly from routing module (e.g regexroute.conf),
- or you can do it programmatically using call.conference message from an external script or by using module Pbxassist, that has the capability of doing PBX operations for conference on receiving DTMF sequences.
Create a conference from routing module
A simple conference can be executed via regexroute.conf. Choose a number that will join people in a conference:
^800$ = conf/sampleroom;lonely=true;billing=true;maxusers=200
Here 800 will join people into a conference which is limited to 50 users, and where if there is only one person, they will remain in it.
Create conference using external script
You can make your conference in two ways:
1. By letting the users call a specific number 2. By making a scheduler that will call all the participants to join the conference room
Either way here are some steps to foloow to create your conference from an external module.
The parameters that are needed for conference room are taken from call.execute and call.conference messages.
In regexroute.conf route all calls to script:
.*=external/nodata/conference-in.php
In the script you can check the identity of the caller from the database and if he has a conference scheduled then send him to conference room, else you can play him a prompt to say that he hasn't a conference at that moment.
To make a conference from an external module:
$m = new Yate("chan.masquerade"); $m->id = ""; $m->params["message"] = "call.execute"; $m->params["id"] = $partycallid; $m->params["callto"] = "conf/cs-$conference_id"; $m->params["notify"] = "conf-monitor/cs-$conference_id"; $m->params["billing"] = "true"; $m->params["lonely"] = "true"; $m->params["maxusers"] = $maxusers; $m->params["smart"] = "t"; if ($is_organizer == "1") { $m->params["record"] = "external/nodata/conference.php"; // set this so that script can play warnings in conference $m->params["recordwarn"] = "-"; $m->params["speakers"] = $speakers; $m->params["interval"] = $interval_notifications; $m->params["waitlock"] = -200; } else { $m->params["existing"] = "t"; } $m->Dispatch();
See also