def obtener_sip_agentes_sesiones_activas(): agentes_activos_service = SupervisorActivityAmiManager() agentes = list(agentes_activos_service._obtener_agentes_activos()) sips_agentes = [] for agente in agentes: if agente['status'] != 'OFFLINE': sips_agentes.append(int(agente['sip'])) return sips_agentes
def obtener_sip_agentes_sesiones_activas(): # TODO: Controlar cantidad de conexiones a Asterisk con AMIManagerConnector agentes_activos_service = SupervisorActivityAmiManager() agentes = list(agentes_activos_service.obtener_agentes_activos()) sips_agentes = [] for agente in agentes: if agente['status'] != 'OFFLINE': sips_agentes.append(int(agente['sip'])) return sips_agentes
def get(self, request): online = [] agentes_parseados = SupervisorActivityAmiManager() ids_agentes_propios = self._obtener_ids_agentes_propios(request) for data_agente in agentes_parseados.obtener_agentes_activos(): id_agente = int(data_agente.get('id', -1)) status_agente = data_agente.get('status', '') if status_agente != 'OFFLINE' and id_agente in ids_agentes_propios: online.append(data_agente) return Response(data=online)
def post(self, request, pk): accion = request.POST.get('accion') servicio_acciones = SupervisorActivityAmiManager() error = servicio_acciones.ejecutar_accion_sobre_agente( self.supervisor, self.agente_id, accion) if error: return Response(data={'status': 'ERROR', 'message': error}) else: return Response(data={ 'status': 'OK', })
def get(self, request): online = [] agentes_parseados = SupervisorActivityAmiManager() agentes_dict = self._obtener_ids_agentes_propios(request) for data_agente in agentes_parseados.obtener_agentes_activos(): id_agente = int(data_agente.get('id', -1)) status_agente = data_agente.get('status', '') if status_agente != 'OFFLINE' and str(id_agente) in agentes_dict: agente_dict = agentes_dict.get(str(id_agente), '') grupo_activo = agente_dict.get('grupo', '') campanas_activas = agente_dict.get('campana', []) data_agente['grupo'] = grupo_activo data_agente['campana'] = campanas_activas online.append(data_agente) return Response(data=online)
class AgentesStatusAPIView(APIView): """Devuelve información de los agentes en el sistema""" permission_classes = ( IsAuthenticated, EsSupervisorPermiso, ) renderer_classes = (JSONRenderer, ) http_method_names = ['get'] agentes_parseados = SupervisorActivityAmiManager() def _obtener_ids_agentes_propios(self, request): supervisor_profile = request.user.get_supervisor_profile() campanas_asignadas_actuales = supervisor_profile.campanas_asignadas_actuales( ) ids_agentes = list( campanas_asignadas_actuales.values_list( 'queue_campana__members__pk', flat=True).distinct()) return ids_agentes def get(self, request): online = [] ids_agentes_propios = self._obtener_ids_agentes_propios(request) for data_agente in self.agentes_parseados._obtener_agentes_activos(): id_agente = int(data_agente.get('id', -1)) status_agente = data_agente.get('status', '') if status_agente != 'OFFLINE' and id_agente in ids_agentes_propios: online.append(data_agente) return Response(data=online)
def get(self, request): online = [] agentes_parseados = SupervisorActivityAmiManager() agentes_dict = self._obtener_ids_agentes_propios(request) for data_agente in agentes_parseados.obtener_agentes_activos(): id_agente = int(data_agente.get('id', -1)) status_agente = data_agente.get('status', '') if status_agente != 'OFFLINE' and id_agente in agentes_dict: agente = agentes_dict.get(id_agente, '') grupo_activo = agente.grupo.nombre campanas_activas = agente.queue_set.values_list( 'campana__nombre', flat=True) data_agente['grupo'] = grupo_activo data_agente['campana'] = campanas_activas online.append(data_agente) return Response(data=online)
def _contabilizar_agentes(self): agentes_activos_dict = { agente['id']: agente for agente in SupervisorActivityAmiManager().obtener_agentes_activos() } # TODO: Revisar si es más eficiente usar el prefetch_related de campanas que obtener # tupla de (campana_id, agente_id) y construir agentes_activos_campana_id_dict agentes_activos_campana_id_dict = self._genera_agentes_activos_campana_dict( agentes_activos_dict.keys()) for campana_id in agentes_activos_campana_id_dict.keys(): self._contabiliza_agentes_campana( campana_id, agentes_activos_campana_id_dict[campana_id], agentes_activos_dict)
def set_agent_unavailable_state_redis(self): supervisor_activity = SupervisorActivityAmiManager() supervisor_activity.escribir_estado_agentes_unavailable()
def set_astdb_unavailable_state(self): supervisor_activity = SupervisorActivityAmiManager() supervisor_activity.escribir_agentes_unavailable_astdb()