public void To(int id) { _FirstTransferTryKO = false; _ToTransfer = null; _FromTransferDisplayName = ""; if (_State == FunctionState.Idle) { List <TlfPosition> activeCalls = Top.Tlf.ActiveCalls; FunctionState st = FunctionState.Error; if (activeCalls.Count == 1) { if ((activeCalls[0].State == TlfState.Set) || (activeCalls[0].State == TlfState.Conf)) { TlfPosition tlf = activeCalls[0]; TlfPosition to = Top.Tlf[id]; bool transferDone = false; if (Top.Tlf[id].State == TlfState.Idle) { string toUri = to.Uri; if (TlfManager.GetDisplayName(to.Uri) == null && to.Literal.Length > 0) { //Si to.Uri no tiene display name se añade el Literal como display name en la transferencia directa toUri = "\"" + to.Literal + "\" " + to.Uri; } SipAgent.TransferCall(tlf.CallId, -1, toUri, null); transferDone = true; } else if (Top.Tlf[id].State == TlfState.Hold) { SipAgent.HoldCall(activeCalls[0].CallId); System.Threading.Thread.Sleep(50); SipAgent.TransferCall(tlf.CallId, to.CallId, null, "\"" + to.Literal + "\""); transferDone = true; _ToTransfer = to; _FromTransferDisplayName = "\"" + tlf.Literal + "\""; } if (transferDone) { _Logger.Debug("Iniciando transferencia..."); Top.Sip.TlfTransferStatus += OnTransferStatus; AssociateCall = tlf; st = FunctionState.Executing; Top.WorkingThread.Enqueue("SetSnmp", delegate() { string snmpString = Top.Cfg.PositionId + "_" + "TRANSFER" + "_" + tlf.Literal; General.SafeLaunchEvent(SetSnmpString, this, new SnmpStringMsg <string, string>(Settings.Default.TlfFacilityOid, snmpString)); }); } } } State = st; } }