Yate as a PBX
Yate can be used as a PBX. Depending on the functionality you want you can use a combination of Yate modules and external scripts.
Because putting it all together can be a hassle and can take quite a lot of time, Null Team launched FreeSentral, a full IP PBX based on Yate that is easy to set up and use.
By default Yate's PBX functionality is disabled because it reduces the number of calls Yate can handle for other types of setups. That is because in order to offer PBX features Yate needs a lot more control over the call leg than it's usually needed for other types of setups. This allows us to have control over the telephony channel without having a performance issue.
Yate modules and scripts for PBX functionality
- pbxassist - Configurable PBX with hold, transfer and conference capabilities
- moh - Music on hold
- conference - Conference module
- park - Call parking
- pickup - Call pickup
- pbx - support modules for other modules
- queues, queue_in.php, queue_out.php - Queues and call distribution to operators
- voicemail.php, leavemail.php - Voicemail support
Basic PBX functionality in Yate
The basic PBX functionality in Yate is implemented in pbxassist module. This module offers support for putting a call on hold, starting and managing a confereces and performing attended and unattended call transfer.
Note: This module is not loaded by default
Additional PBX functionality
Call parking and pickup
Yate offers modules that implement call parking and picking up but the logic for this is custom. The used keys and how you define the parking orbits logic is up to you.
The easiest way to get this working is to extend the pbxassist configuration file to catch more pressed digits. You can define custom sections for call park and pickup.
In share/scripts directory from yate's sources you can find voicemail.php and leavemail.php.
- leavemail.php - is used to record a voicemail message for a user. If user doesn't answer call for a specific period of time or is offline you have to route a call to it.
- voicemail.php - users use this to listen and manage their voicemail messages. You associate a number with this service. When call to this number is name you have to route call to it.
See IVR Setup to get an idea on how to set this up.
The Auto Attendant is a service that greets the user and allows him to reach different branches of a company.
In Yate this is usually an IVR script.
See Writing an IVR for instructions on how to build your own.
Depending on how complex this rules are you will probably need to use the callfork module to define them.
You can use the queues module that implements queuing of incoming calls and distribution of these calls to operators using database queries.
LCR/multiple dial plans
This should be implemented in the routing logic. Distributing the calls between the various providers is up to you.