/// <summary> /// Al establecerse la llamada y terminar con exito la captura se envia el mensaje /// al target /// </summary> /// <param name="sender"></param> private void OnCapturedCallStateChanged(object sender) { TlfPosition tlf = (TlfPosition)sender; try { if (tlf.State == TlfState.Set) { _Captured.TlfPosStateChanged -= OnCapturedCallStateChanged; SipAgent.SendInstantMessage(_Target.Channels[0].AccId, _Target.Uri, PickUpTag + Top.Cfg.PositionId + Resources.HasCaptured + _Captured.Literal, _UseProxy); _Ringing.Remove(_Captured.Pos); foreach (int pos in _Ringing.Keys) { Top.Tlf[pos].State = TlfState.Idle; } _Ringing.Clear(); _Target.TlfPosStateChanged -= OnTargetCallStateChanged; _Target.State = TlfState.Idle; // se pasa a reposo al terminar la captura, no al entrar los ringing _Target = null; _TargetUris = null; State = FunctionState.Idle; Top.WorkingThread.Enqueue("SetSnmp", delegate() { string snmpString = Top.Cfg.PositionId + "_" + "CAPTURED" + "_" + _Captured.Literal; General.SafeLaunchEvent(SetSnmpString, this, new SnmpStringMsg <string, string>(Settings.Default.TlfFacilityOid, snmpString)); }); } } catch (Exception exc) { _Logger.Error("OnCapturedCallStateChanged exception {0}", exc.Message); } }