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"
}