I’m implementing a ARI system where an callee should transfer a caller to another endpoint sometimes.
The caller most of the time is “external” to asterisk, coming from a telephony company or voip peers.
As I understand my options are:
-originate a new channel and put this and the caller on a bridge, or
-to use the REFER method to signal the caller to call the new endpoint.
My question is: how the signalling to the ARI aplication that the call should be transfered (and to where) it’s usually implemented?
Do I do use INFO or NOTIFY methods? Should this be done outside SIP? What are the best practices here?
Leave out the gory details of the SIP methods like REFER, INFO, NOTIFY, (and INVITE :). Asterisk abstracts that away.
Since you are all-in on ARI, you might consider reviewing this addChannel ARI command documentation or starting with the more general overview of ARI.
I’m confused about whether you are talking about Asterisk, transferring the upstream, which is what the the initial part seems to refer to, or the downstream requesting the call to be transferred.
For the former, whilst Asterisk abstracts the use of REFER, it it doesn’t abstract the difference between that, and re-bridging the call. In dialplan terms, the former is Dial() and the latter is Tranfer(). Dial is much more used than Transfer, and the latter may not be well tested. Also only some upstreams will honour it. If the upstream is a commercial provider, they would typically charge for the call as though the first technique had been used.