private void btCallTransfer_Click(object sender, EventArgs e) { if ((pbxCall1 != null) && (pbxCall2 != null)) { // Need to get hold call id and active call id String holdCallId = null; String activeCallId = null; Boolean canDoAction = false; if ((pbxCall1.CallStatus == Call.Status.ACTIVE) && (pbxCall2.CallStatus == Call.Status.PUT_ON_HOLD)) { holdCallId = pbxCall2.Id; activeCallId = pbxCall1.Id; canDoAction = true; } else if ((pbxCall1.CallStatus == Call.Status.PUT_ON_HOLD) && (pbxCall2.CallStatus == Call.Status.ACTIVE)) { holdCallId = pbxCall1.Id; activeCallId = pbxCall2.Id; canDoAction = true; } if (canDoAction) { // Transfer call rainbowTelephony.TransferCall(activeCallId, holdCallId, callback => { if (!callback.Result.Success) { String output = String.Format("Impossible to tranfer the call - Error:[{0}]", Util.SerializeSdkError(callback.Result)); AddStateLine(output); log.LogError(output); } }); } } }