SwapCalls
This operation is part of the Voice API section of the Web Services API.
Overview
Swaps between two calls when one call is held and the other is established.
Request URL | /api/v2/me/calls/{id} |
---|---|
HTTP method | POST |
Required features | api-voice |
Parameters
Parameter | Value |
---|---|
operationName | SwapCalls |
otherCallUri | The URI of the call to swap. |
Sample 1
Request
POST api/v2/me/calls/013V08JRL498H1OI04000VTAES00000S
{
"operationName": "SwapCalls",
"otherCallUri": "http://127.0.0.1:8080/api/v2/me/calls/01RCC3N118B1V0SL8O7GK2LAES00000P"
}
HTTP response
{
"statusCode": 0
}
CometD notification
The SwapCalls operations results in two notifications. One for the call that is placed on hold, and a second for the held call is retrieved.
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"01RCC3N118B1V0SL8O7GK2LAES00000P",
"state":"Established",
"callUuid":"01RCC3N118B1V0SL8O7GK2LAES00000P",
"connId":"0071027198180019",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/631608b3-ceb1-472b-ba05-2ae39555b0d1",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"15001",
"phoneNumber":"15001",
"digits":"15001"
}
],
"dnis":"15001",
"callType":"Internal",
"capabilities":[
"UpdateUserData",
"SendDtmf",
"SwapCalls",
"InitiateConference",
"Hold",
"SingleStepTransfer",
"InitiateTransfer",
"AttachUserData",
"CompleteConference",
"DeleteUserDataPair",
"SingleStepConference",
"DeleteUserData",
"Hangup",
"CompleteTransfer"
],
"duration":"156",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"monitoring":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/01RCC3N118B1V0SL8O7GK2LAES00000P",
"path":"/calls/01RCC3N118B1V0SL8O7GK2LAES00000P"
},
"phoneNumber":"15000",
"extensions":{
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"01RCC3N118B1V0SL8O7GK2LAES00000Q",
"state":"Held",
"callUuid":"01RCC3N118B1V0SL8O7GK2LAES00000Q",
"connId":"007102719818001a",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/631608b3-ceb1-472b-ba05-2ae39555b0d1",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"15002",
"phoneNumber":"15002",
"digits":"15002"
}
],
"dnis":"15002",
"callType":"Consult",
"capabilities":[
"UpdateUserData",
"SendDtmf",
"SwapCalls",
"InitiateConference",
"Hold",
"SingleStepTransfer",
"InitiateTransfer",
"AttachUserData",
"CompleteConference",
"DeleteUserDataPair",
"SingleStepConference",
"DeleteUserData",
"Hangup",
"CompleteTransfer"
],
"duration":"129",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"monitoring":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/01RCC3N118B1V0SL8O7GK2LAES00000Q",
"path":"/calls/01RCC3N118B1V0SL8O7GK2LAES00000Q"
},
"phoneNumber":"15000",
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
Sample 2
The following examples describe the full set of requests and events that demonstrate using the SwapCalls operation.
The agent receives a notification of an inbound call:
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"013V08JRL498H1OI04000VTAES00000R",
"state":"Ringing",
"callUuid":"013V08JRL498H1OI04000VTAES00000R",
"connId":"0071023821aec01b",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"5000",
"phoneNumber":"5000",
"digits":"5000"
}
],
"dnis":"5005",
"callType":"Internal",
"capabilities":[
"Answer",
"DeleteUserDataPair",
"AttachUserData",
"DeleteUserData",
"UpdateUserData"
],
"duration":"0",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000R",
"path":"/calls/013V08JRL498H1OI04000VTAES00000R"
},
"phoneNumber":"5005",
"extensions":{
"WrapUpTime":0,
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
The agent answers the inbound call and receives notification of the call state change:
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"013V08JRL498H1OI04000VTAES00000R",
"state":"Established",
"callUuid":"013V08JRL498H1OI04000VTAES00000R",
"connId":"0071023821aec01b",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"5000",
"phoneNumber":"5000",
"digits":"5000"
}
],
"dnis":"5005",
"callType":"Internal",
"capabilities":[
"DeleteUserDataPair",
"AttachUserData",
"Hangup",
"DeleteUserData",
"Hold",
"SendDtmf",
"InitiateConference",
"InitiateTransfer",
"SingleStepConference",
"UpdateUserData",
"SingleStepTransfer"
],
"duration":"5",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000R",
"path":"calls/013V08JRL498H1OI04000VTAES00000R"
},
"phoneNumber":"5005",
"extensions":{
"WrapUpTime":0,
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
The agent requests the inbound call be placed on hold:
POST api/v2/me/calls/013V08JRL498H1OI04000VTAES00000R
{
"operationName": "Hold"
}
Notification is received of the call being held:
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"013V08JRL498H1OI04000VTAES00000R",
"state":"Held",
"callUuid":"013V08JRL498H1OI04000VTAES00000R",
"connId":"0071023821aec01b",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"5000",
"phoneNumber":"5000",
"digits":"5000"
}
],
"dnis":"5005",
"callType":"Internal",
"capabilities":[
"Retrieve",
"DeleteUserDataPair",
"AttachUserData",
"Hangup",
"DeleteUserData",
"InitiateConference",
"InitiateTransfer",
"SingleStepConference",
"UpdateUserData",
"SingleStepTransfer"
],
"duration":"10",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000R",
"path":"/calls/013V08JRL498H1OI04000VTAES00000R"
},
"phoneNumber":"5005",
"extensions":{
"WrapUpTime":0,
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
The agent requests the second call be made:
POST api/v2/me/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a/calls
{
"operationName": "Dial",
"destination": {
"phoneNumber": "5001"
}
}
The agent receives notification that the second call is dialing:
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"013V08JRL498H1OI04000VTAES00000S",
"state":"Dialing",
"callUuid":"013V08JRL498H1OI04000VTAES00000S",
"connId":"0071023821aec01c",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"5001",
"phoneNumber":"5001",
"digits":"5001"
}
],
"dnis":"5001",
"callType":"Internal",
"capabilities":[
"DeleteUserDataPair",
"AttachUserData",
"Hangup",
"DeleteUserData",
"SendDtmf",
"SwapCalls",
"UpdateUserData",
"CompleteTransfer"
],
"duration":"0",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000S",
"path":"/calls/013V08JRL498H1OI04000VTAES00000S"
},
"phoneNumber":"5005",
"extensions":{
"WrapUpTime":0,
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
and then notification that the second call is answered:
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"013V08JRL498H1OI04000VTAES00000S",
"state":"Established",
"callUuid":"013V08JRL498H1OI04000VTAES00000S",
"connId":"0071023821aec01c",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"5001",
"phoneNumber":"5001",
"digits":"5001"
}
],
"dnis":"5001",
"callType":"Internal",
"capabilities":[
"DeleteUserDataPair",
"AttachUserData",
"Hangup",
"DeleteUserData",
"Hold",
"SendDtmf",
"InitiateConference",
"SwapCalls",
"InitiateTransfer",
"SingleStepConference",
"UpdateUserData",
"SingleStepTransfer",
"CompleteTransfer",
"CompleteConference"
],
"duration":"10",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000S",
"path":"/calls/013V08JRL498H1OI04000VTAES00000S"
},
"phoneNumber":"5005",
"extensions":{
"WrapUpTime":0,
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
The agent then sends the SwapCalls request:
POST api/v2/me/calls/013V08JRL498H1OI04000VTAES00000S
{
"operationName": "SwapCalls",
"otherCallUri": "http://localhost:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000R"
}
The agent then receives notification that the second call is now held:
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"013V08JRL498H1OI04000VTAES00000S",
"state":"Held",
"callUuid":"013V08JRL498H1OI04000VTAES00000S",
"connId":"0071023821aec01c",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"5001",
"phoneNumber":"5001",
"digits":"5001"
}
],
"dnis":"5001",
"callType":"Internal",
"capabilities":[
"Retrieve",
"DeleteUserDataPair",
"AttachUserData",
"Hangup",
"DeleteUserData",
"InitiateConference",
"InitiateTransfer",
"SingleStepConference",
"UpdateUserData",
"SingleStepTransfer"
],
"duration":"41",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000S",
"path":"/calls/013V08JRL498H1OI04000VTAES00000S"
},
"phoneNumber":"5005",
"extensions":{
"WrapUpTime":0,
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}
and to complete the operation, a notification that the first call is now be retrieved from hold:
{
"data":{
"notificationType":"StatusChange",
"call":{
"id":"013V08JRL498H1OI04000VTAES00000R",
"state":"Established",
"callUuid":"013V08JRL498H1OI04000VTAES00000R",
"connId":"0071023821aec01b",
"deviceUri":"http://127.0.0.1:8080/api/v2/devices/efe1ab32-53f9-43ce-b65e-5768c61f7d4a",
"participants":[
{
"e164Number":"",
"formattedPhoneNumber":"5000",
"phoneNumber":"5000",
"digits":"5000"
}
],
"dnis":"5005",
"callType":"Internal",
"capabilities":[
"DeleteUserDataPair",
"AttachUserData",
"Hangup",
"DeleteUserData",
"Hold",
"SendDtmf",
"InitiateConference",
"SwapCalls",
"InitiateTransfer",
"SingleStepConference",
"UpdateUserData",
"SingleStepTransfer",
"CompleteTransfer",
"CompleteConference"
],
"duration":"60",
"mute":"Off",
"supervisorListeningIn":false,
"monitoredUserMuted":false,
"uri":"http://127.0.0.1:8080/api/v2/me/calls/013V08JRL498H1OI04000VTAES00000R",
"path":"/calls/013V08JRL498H1OI04000VTAES00000R"
},
"phoneNumber":"5005",
"extensions":{
"WrapUpTime":0,
"BusinessCall":0
},
"messageType":"CallStateChangeMessage"
},
"channel":"/v2/me/calls"
}