Yate as a Conference Server

From Yate Documentation
(Difference between revisions)
Jump to: navigation, search
(Created page with "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 u...")
 
(Create conference using external script)
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Yate can be used as a Conference Server in two ways:
+
Yate allows you to build a custom conference server application.
 +
<!--Yate as a conference server can be customized as needed and also you can build your own functionalities.-->
  
* you can execute a conference directly from routing module (e.g regexroute.conf),
+
An external script that can create conference on demand. You can also write a scheduler to call all participants to a conference.
  
* 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.
+
Among conferences capabilities are:
 +
:- play announcements
 +
:- mute/unmute a participant
 +
:- record the call  
 +
:- add/remove a participant from conference
 +
:- bill the participants
 +
:- see who's talking
 +
This features can be controlled by associating a script as a utility channel to the conference.
 +
 
 +
A conference can be started from different places, directly from routing module or 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 200 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 follow, 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 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();
 +
 
 +
In parameter 'notify' will be set the id of the conference which will set the record that will receive notifications for the event in the conference. This events can be:
 +
:- enter/join/leave a conference
 +
:- ended announcements
 +
:- see who's talking
 +
 
 +
'''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]]

Latest revision as of 11:42, 20 May 2013

Yate allows you to build a custom conference server application.

An external script that can create conference on demand. You can also write a scheduler to call all participants to a conference.

Among conferences capabilities are:

- play announcements
- mute/unmute a participant
- record the call
- add/remove a participant from conference
- bill the participants
- see who's talking

This features can be controlled by associating a script as a utility channel to the conference.

A conference can be started from different places, directly from routing module or from an external script or by using module Pbxassist, that has the capability of doing PBX operations for conference on receiving DTMF sequences.

[edit] 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 200 users, and where if there is only one person, they will remain in it.

[edit] 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 follow, 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 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();

In parameter 'notify' will be set the id of the conference which will set the record that will receive notifications for the event in the conference. This events can be:

- enter/join/leave a conference
- ended announcements
- see who's talking

See also

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers