Example #1
0
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
Example #3
0
 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)
Example #4
0
 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',
         })
Example #5
0
 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)
Example #6
0
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()