Yate as a PBX

From Yate Documentation
(Difference between revisions)
Jump to: navigation, search
(Call forwaring)
(Custom features)
 
(17 intermediate revisions by one user not shown)
Line 3: Line 3:
 
Because putting it all together can be a hassle and can take quite a lot of time, Null Team launched [http://freesentral.com FreeSentral], a full IP PBX based on Yate that is easy to set up and use.
 
Because putting it all together can be a hassle and can take quite a lot of time, Null Team launched [http://freesentral.com 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 creating a performance issue.
+
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===
 
===Yate modules and scripts for PBX functionality===
Line 31: Line 31:
 
====Voicemail====
 
====Voicemail====
 
In share/scripts directory from yate's sources you can find voicemail.php and leavemail.php.
 
In share/scripts directory from yate's sources you can find voicemail.php and leavemail.php.
* leavemail.php - 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.  
+
* 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.
 
* 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.
 
See [[IVR Setup]] to get an idea on how to set this up.
Line 40: Line 40:
 
See [[Writing an IVR]] for instructions on how to build your own.
 
See [[Writing an IVR]] for instructions on how to build your own.
  
====Call forwaring====
+
====Call forwarding====
Call forwarding is completely a routing feature. To set this up you have to implement the forwarding rules. Basic rules (for few users) could be added in [[Regular expressions|regexroute]] but most of the time this won't be enough. The rules are usually stored in a database so routing would have to be implemented in [[register]] module or custom [[javascript]]/external script.
+
Call forwarding is completely a [[How_To's#Routing|routing]] feature. To set this up you have to implement the forwarding rules. Basic rules (for few users) could be added in [[Regular expressions|regexroute]] but most of the time this won't be enough. The rules are usually stored in a database so routing would have to be implemented in [[register]] module or custom [[javascript]]/external script.
 
<br/>
 
<br/>
Depending on how complex this rules are you will probably need to use [[Call Forker|the callfork module]].
+
Depending on how complex this rules are you will probably need to use the [[Call Forker|callfork]] module to define them.
  
 
====Call hunting====
 
====Call hunting====
 +
This is also a [[How_To's#Routing|routing]] feature for which you will need [[Call Forker|callfork]]. Using [[Call Forker|callfork]] you can setup sequential/circular/and a lot of other dialling patterns.
  
 
====Queues====
 
====Queues====
 +
You can use the [[Queues Module|queues]] module that implements queuing of incoming calls and distribution of these calls to operators using database queries.
  
 
====LCR/multiple dial plans====
 
====LCR/multiple dial plans====
 +
This should be implemented in the routing logic. Distributing the calls between the various providers is up to you.
  
 
===Custom features===
 
===Custom features===
 +
If you want to add additional features to your PBX you will probably need to define them in the [[How_To's#Routing|routing]] logic or a combination between extending [[pbxassist]] configuration file and the routing logic.
 +
 +
'''See also'''
 +
* [[pbxassist|Pbxassist module]]
 +
* [[javascript]]
 +
* [[How_To's#Routing|Routing]]
 +
* [[Standard PBX keys]]
 +
 +
[[Category:PBX]] [[Category:Server]]

Latest revision as of 17:20, 31 October 2013

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.

Contents

[edit] 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

[edit] 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

[edit] Additional PBX functionality

[edit] 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.

When user presses this digits a chan.operation message will be emited with a custom "operation" parameter. This message can be handled by a javascript/external script.

[edit] Voicemail

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.

[edit] AutoAttendant

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.

[edit] Call forwarding

Call forwarding is completely a routing feature. To set this up you have to implement the forwarding rules. Basic rules (for few users) could be added in regexroute but most of the time this won't be enough. The rules are usually stored in a database so routing would have to be implemented in register module or custom javascript/external script.
Depending on how complex this rules are you will probably need to use the callfork module to define them.

[edit] Call hunting

This is also a routing feature for which you will need callfork. Using callfork you can setup sequential/circular/and a lot of other dialling patterns.

[edit] Queues

You can use the queues module that implements queuing of incoming calls and distribution of these calls to operators using database queries.

[edit] LCR/multiple dial plans

This should be implemented in the routing logic. Distributing the calls between the various providers is up to you.

[edit] Custom features

If you want to add additional features to your PBX you will probably need to define them in the routing logic or a combination between extending pbxassist configuration file and the routing logic.

See also

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers