Expand the scope of Dial Events
authorMark Michelson <mmichelson@digium.com>
Mon, 9 May 2016 20:00:56 +0000 (15:00 -0500)
committerMark Michelson <mmichelson@digium.com>
Tue, 31 May 2016 16:43:24 +0000 (11:43 -0500)
commit205a31f86c4ceec4966492363fb9ac674c990235
tree425d8f23f52900292cd7aad1e1f7f75bdd5a55d3
parent88d997913faabe81f8b9e7bdaa56742be0d669b9
Expand the scope of Dial Events

Dial events up to this point have come in two flavors
* A Dial event with no status to indicate that dialing has begun
* A Dial event with a status to indicate that dialing has ended

With this change, Dial events have been expanded to also give
intermediate events, such as "RINGING", "PROCEEDING", and "PROGRESS".
This is especially useful for ARI dialing, as it gives the application
writer the opportunity to place a channel into an early bridge when
early media is detected.

AMI handles these in-progress dial events by sending a new event called
"DialState" that simply indicates that dial state has changed but has
not ended. ARI never distinguished between DialBegin and DialEnd, so no
change was made to the event itself.

Another change here relates to dial forwards. A forward-related event
was previously only sent when a channel was successfully able to forward
a call to a new channel. With this set of changes, if forwarding is
blocked, we send a Dial event with a forwarding destination but no
forwarding channel, since we were prevented from creating one. This is
again useful for ARI since application writers can now handle call
forward attempts from within their own application.

ASTERISK-25925 #close
Reported by Mark Michelson

Change-Id: I42cbec7730d84640a434d143a0d172a740995543
CHANGES
UPGRADE.txt
apps/app_dial.c
apps/app_followme.c
apps/app_queue.c
main/bridge_channel.c
main/cdr.c
main/dial.c
main/manager_channels.c
main/stasis_channels.c