Skip to main content

Transfer Complete

This event is sent to the transferCompleteUrl of the A-leg's <Transfer> verb when the transferred call (B-leg) completes. In a simultaneous ringing scenario, only one B-leg succeeds and this event corresponds to that successful leg. If none of the calls were answered, the transferComplete event corresponds to one of the legs.

The cause for a transferComplete event on a call can be:

  • hangup: one party hung up the call, a <Hangup> verb was executed, or there was no more BXML to execute; it indicates that the call ended normally.
  • busy: the callee was busy.
  • timeout: the call wasn't answered before the callTimeout was reached.
  • cancel: the call was cancelled by its originator while it was ringing.
  • rejected: the call was rejected by the callee.
  • callback-error: a BXML callback couldn't be delivered to your callback server.
  • invalid-bxml: invalid BXML was returned in response to a callback.
  • application-error: an unsupported action was tried on the call, e.g. trying to play a .ogg audio.
  • account-limit: the account rate limits were reached.
  • node-capacity-exceeded: the system maximum capacity was reached.
  • error: some error not described in any of the other causes happened on the call.
  • unknown: some unknown error happened on the call.
caution

This list is not exhaustive and other values can appear in the future.

Request Parameters

PropertyDescription
eventTypeThe event type, value is transferComplete.
eventTimeThe approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.
accountIdThe user account associated with the call.
applicationIdThe id of the application associated with the call.
fromThe provided identifier string of the caller used in the from field of the original call.
toThe phone number user in the to field of the original call, in E.164 format (e.g. +15555555555).
directionThe direction of the call. Either inbound or outbound. The direction of a call never changes.
callIdThe call id associated with the event.
callUrlThe URL of the call associated with the event.
enqueuedTime(optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.
startTimeTime the call was started, in ISO 8601 format.
answerTimeTime the call was answered, in ISO 8601 format.
tagThe tag specified earlier in the call. If no tag was specified or it was previously cleared, this field will not be present.
transferCallerIdThe phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) even if privacy is set to true.
privacy(optional) Hide the calling number. The transferCallerDisplayName field can be used to customize the displayed name.
transferCallerDisplayName(optional) The caller display name to use when the call is transferred. May not exceed 256 characters nor contain control characters such as new lines. If privacy is true, only the following values are valid: Restricted, Anonymous, Private, or Unavailable.
transferToThe phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).
causeReason the call ended. See above for possible values.
errorMessageText explaining the reason that caused the call to be ended in case of errors.
errorIdBandwidth internal id that references the error event.

Expected Response

HTTP/1.1 200
Content-Type: application/xml; charset=utf-8

<Response>
<!-- BXML verbs to process in the call -->
</Response>

Examples

Successful Transfer

POST http://yourUrl.example/transferComplete
Content-Type: application/json

{
"eventType" : "transferComplete",
"eventTime" : "2019-07-31T13:20:39.810Z",
"accountId" : "55555555",
"applicationId" : "7fc9698a-b04a-468b-9e8f-91238c0d0086",
"from" : "+15551112222",
"to" : "+15553334444",
"direction" : "outbound",
"callId" : "c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d",
"callUrl" : "https://voice.bandwidth.com/api/v2/accounts/55555555/calls/c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d",
"transferCallerId" : "+15551115555",
"transferTo" : "+15556667777",
"startTime" : "2019-07-31T13:13:34.859Z",
"answerTime" : "2019-07-31T13:13:40.644Z",
"cause" : "hangup",
}

Successful Transfer with Enqueued Time

POST http://yourUrl.example/transferComplete
Content-Type: application/json

{
"eventType" : "transferComplete",
"eventTime" : "2019-07-31T13:20:39.810Z",
"accountId" : "55555555",
"applicationId" : "7fc9698a-b04a-468b-9e8f-91238c0d0086",
"from" : "+15551112222",
"to" : "+15553334444",
"direction" : "outbound",
"callId" : "c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d",
"callUrl" : "https://voice.bandwidth.com/api/v2/accounts/55555555/calls/c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d",
"transferCallerId" : "+15551115555",
"transferTo" : "+15556667777",
"enqueuedTime" : "2019-07-31T13:13:33.023Z",
"startTime" : "2019-07-31T13:13:34.859Z",
"answerTime" : "2019-07-31T13:13:40.644Z",
"cause" : "hangup",
}

Failed Transfer to Busy Number

POST http://yourUrl.example/transferComplete
Content-Type: application/json

{
"eventType" : "transferComplete",
"eventTime" : "2019-07-31T13:20:39.810Z",
"accountId" : "55555555",
"applicationId" : "7fc9698a-b04a-468b-9e8f-91238c0d0086",
"from" : "+15551112222",
"to" : "+15553334444",
"direction" : "outbound",
"callId" : "c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d",
"callUrl" : "https://voice.bandwidth.com/api/v2/accounts/55555555/calls/c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d",
"transferCallerId" : "+15551115555",
"transferTo" : "+15556667777",
"startTime" : "2019-07-31T13:13:34.859Z",
"answerTime" : "2019-07-31T13:13:40.644Z",
"cause" : "busy",
"errorMessage" : "Callee is busy",
"errorId" : "4642074b-7b58-478b-96e4-3a60955c6765"
}