Training: Branch Offices
Branch Offices give the ability to connect two or more PBXs (or cloud instances) to allow direct communication between them rather than needing to send calls over a trunk, potentially using minutes of a service plan. The connection is made via the IAX2 protocol, rather than SIP, which differs in that SIP is signalling ONLY, and requires RTP to carry voice packets, whereas IAX2 bundles the signalling and voice traffic in the same communication channel. Branch Offices are configured under Destinations in the PBX interface:
To set one up you need to think of the systems as a pairing. PBX A will connect to PBX B, and PBX B will connect to PBX A. In PBX A, you'll use the address for PBX B as the host. The name AND password are both for the shared connection between the two pbxs, not unique. Meaning if you are configuring PBX A, the name should NOT be PBX-B, with PBX B's branch name set as PBX-A, because these will not match. You might name it something shared by both, such as BranchAB (connecting A and B), or BranchBC (connecting offices B and C), and the password needs to be the same on both systems as well.
Normally to dial a destination on another branch from the one the call is being initiated from, you must dial the branch's dial prefix first. In the above screenshot, the dial prefix is *48, so to reach a destination on the other branch, you would dial *48 and then the extension number, for example.
This is fine when you just need to dial a destination, but you cannot ROUTE to those destinations automatically in a call flow. In order to enable routing, for example as a failover, you'll need to define Branch Extensions. At the bottom of the configuration page for a branch office, there is the following section, which is used to list extensions on the OTHER pbx (if you are on PBX A, you would put destinations from PBX B in this section, and vice versa):
Not only will this allow you to dial extensions directly without using the dial prefix, but you can also route to them in any area where you can set a destination, such as a failover or a menu option.
Despite the name "Branch Extensions", this actually works on ALL destinations that have a direct dial number, including menus, ring groups, or conferences. Anything that you can dial by a direct 3-4 digit code can be a branch extension.
In addition to just communicating across multiple pbxs directly, branch connections can also be used AS a trunk for dialing. PBX A, for example, could have SIP providers on it, to provide inbound and outbound dialing, and PBX B could use its branch connection to PBX A as an actual outbound dialing route, which would send the call from PBX B to PBX A, and then out over the SIP trunk on PBX A. On the PBX where this dialing would be initiated, edit the Branch Office, and set Enable as Trunk to yes. This makes the branch show up under the outbound routes as an available trunk that can be added.