Attended Transfer in Cluster with external_replaces

Hey there,

Running Asterisk 16 w/PJSIP

I’m trying to figure out how to handle Attended Transfers when running a cluster of Asterisk Servers. Currently we’re sort of clustering users by their department using Kamailio in front of Asterisk, but that makes it impossible to guarantee that attended transfers can be made between departments.

I’ve found this article on the WIKI, and I’m looking for some clarification: Home - Asterisk Documentation

If I add the external_replaces context, configuring it so we’ll allow performing remote attended transfers to other asterisk boxes in our cluster, that should be good (I’m guessing).

However, I’m pondering this statement on the wiki article:

When Server B receives this INVITE, it will essentially swap this new call in for the call referenced by the Replaces header. By doing this, the final picture looks something like the following:

Does that mean that if Asterisk A receives a REFER request pointing to a call it doesn’t know, and executes the external_replaces extension, which in turn then would make a Dial to Asterisk B - will Asterisk B will magically notice this Replaces-header, and perform the swap, or do I need to handle this myself in whatever dialplan context the INVITE from Asterisk A comes into?

I think some of this depends on whether or not phones connected to Asterisk A can also connect to Asterisk B and start making calls there using the same user/pass credentials eg. shared backend authentication via ODBC, LDAP, sync’d text files, etc.

I don’t think so because you are initiating a new INVITE from A to B. The Replaces header only gets propagated on the new outbound leg if you use something like the ‘b’ option to Dial() and basically start rolling your own headers.

Yes, but assuming Asterisk A and B can already call each other freely, then whatever Dial() you execute on A via external_replaces should enter B without issue.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.