Transfer supports two events that aren't present on other Tropo objects. One of those events is "connect" which allows you to ask questions and do things during a transfer. Here's the logical flow of what happens when you use this event.
A transfer always happens on an existing call. We'll call that existing call the "A leg" of the call. When you execute a transfer, Tropo dials the other party. We'll call that other party the "B Leg".
If the transfer contains an event called "connect", then the following happens...
- Tropo does not complete the transfer until all of the connect events have completed or until an ask triggers some other event.
- If multiple connect events are defined, Tropo executes all of them in the order they appear in the document.
- If the Tropo object in a connect event is "ask", then...
- Tropo plays the prompt to the B leg, and awaits their response.
- The A leg still hears whatever was specified by the Ring event (if a ring event was specified, otherwise hears dead air).
- Will only connect the call if the ask completes successfully. If the ask does not resolve in a valid choice, the call does not connect.
- If you get a nomatch or a timeout or any other result from the ask, Tropo will not connect the two call legs and will fire the incomplete, timeout or continue event on the document as appropriate. When this happens, the B leg is immediately disconnected, and the A leg does whatever the incomplete, timeout, or continue document tells it to do.
- If the event action is "post", Tropo sends a shortened result object to the URL specified, but does NOT transfer control to that URL. The response from that URL is ignored, so it doesn't act like a normal "next" action.