[asterisk-app-dev] ARI + Call Transfers

Alistair Cunningham acunningham at integrics.com
Thu Jan 2 17:25:24 CST 2014


On 02/01/14 16:20, Joshua Colp wrote:
> Greetings everyone and welcome to 2014!
>
> Now that Christmas and the holidays have passed I thought I would send
> this email out to elicit some feedback.
>
> I'd like to enable transfers in ARI. You may think to yourself "they
> were disabled?" and the answer would be yes. The trouble with enabling
> transfers is properly conveying that a transfer has occurred to the
> parties interested. This is due to the event in question being published
> on the bridge involved instead of on the channels. This can be overcome
> for ARI though! Have no fear.
>
> After going through many ideas I've settled on a somewhat simple
> solution: If an ARI application is subscribed to *any* object (such as
> the bridge OR any channels) involved in the transfer then it receives
> the applicable transfer event (blind or attended). The transfer events
> will convey the same information as the AMI ones do and will have a
> guarantee that only one transfer event is published to the ARI application.
>
> Thoughts?

It's not quite the question you're asking, but I'll weigh in anyway. 
When implementing this, please bear those writing billing engines in 
mind. For example, imagine a call comes in from the PSTN to a toll-free 
number (so the inbound call must be billed). The caller listens to an 
IVR for 10 seconds, then talks to a person on a locally registered SIP 
handset for a further 20 seconds. That person then blind transfers them 
out to a cell phone (and the outbound call must be billed). They talk to 
the cell phone user for 30 seconds, who uses the # key to attended 
transfer them to a different cell phone (which is a separate billable 
outbound call), with the first cell phone user talking to the second for 
15 seconds during the attended transfer. The original caller talks to 
the second cell phone for 2 minutes, then hangs up. The inbound call 
must be billed for 3:15, the first outbound for 0:45, and the second 
outbound for 2:15 (ignoring ring times on the outbound calls). Of 
course, you don't need to implement this logic in Asterisk, but please 
keep the model of the channels consistent enough that someone writing a 
billing engine can figure out exactly what call legs they need to bill, 
and for how long, and when transfers occur which endpoint did the 
transfer and how. AGI suffered from billable call legs appearing to hang 
up when transferred (even though they stayed up), making it very 
difficult to piece together exactly what billable calls occurred when. 
It would be good to avoid this in ARI.

-- 
Alistair Cunningham
+1 888 468 3111
+44 20 799 39 799
http://integrics.com/



More information about the asterisk-app-dev mailing list