Пример #1
0
        /// <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);
            }
        }