Esempio n. 1
0
 def test_datos_reporte_grafico_calificaciones_por_agente_coinciden_estadisticas_sistema(
         self, render_to_png, crea_reporte_pdf, escribir_archivo_datos_csv):
     agente_profile1, agente_profile2, agente_profile3 = AgenteProfileFactory.create_batch(
         3)
     log1 = LlamadaLogFactory(campana_id=self.campana_activa.pk,
                              agente_id=agente_profile1.pk)
     log2 = LlamadaLogFactory(campana_id=self.campana_activa.pk,
                              agente_id=agente_profile2.pk)
     log3 = LlamadaLogFactory(campana_id=self.campana_activa.pk,
                              agente_id=agente_profile3.pk)
     CalificacionClienteFactory(
         callid=log1.callid,
         opcion_calificacion=self.opcion_calificacion_gestion,
         agente=agente_profile1)
     CalificacionClienteFactory(
         callid=log2.callid,
         opcion_calificacion=self.opcion_calificacion_noaccion,
         agente=agente_profile2)
     CalificacionClienteFactory(
         callid=log3.callid,
         opcion_calificacion=self.opcion_calificacion_noaccion,
         agente=agente_profile3)
     url = reverse('campana_reporte_grafico', args=[self.campana_activa.pk])
     response = self.client.get(url, follow=True)
     estadisticas = response.context_data['graficos_estadisticas'][
         'estadisticas']
     self.assertContains(response, agente_profile1.user.get_full_name())
     self.assertContains(response, agente_profile2.user.get_full_name())
     self.assertContains(response, agente_profile3.user.get_full_name())
     # se toman en cuenta las calificaciones iniciales del setUp
     self.assertEqual(estadisticas['total_ventas'], 2)
     self.assertEqual(estadisticas['total_calificados'], 5)
Esempio n. 2
0
    def generar_log_transferencia_bt(self, campana, finalizacion, numero_marcado,
                                     agente_orig, agente_dest, contacto=None,
                                     bridge_wait_time=5, duracion_llamada=5,
                                     archivo_grabacion='', time=None, callid=None):
        """ Genera logs para una llamada con transferencia ciega a Agente """
        es_manual = campana.type == Campana.TYPE_MANUAL
        tipo_llamada = campana.type
        contacto_id = -1 if contacto is None else contacto.id

        assert agente_orig is not None, 'Solo un agente puede transferir'
        assert finalizacion in ['BT-BUSY', 'BT-CANCEL', 'BT-CHANUNAVAIL', 'BT-CONGESTION',
                                'BT-NOANSWER', 'BT-ABANDON', 'COMPLETE-BT', ]
        self._generar_logs(campana=campana, es_manual=es_manual, finalizacion=None,
                           numero_marcado=numero_marcado, tipo_llamada=tipo_llamada,
                           agente_id=agente_orig.id, contacto_id=contacto_id,
                           bridge_wait_time=bridge_wait_time,
                           duracion_llamada=duracion_llamada, archivo_grabacion='',
                           time=time, callid=callid, es_transfer=True)
        LlamadaLogFactory(event='BT-TRY', agente_id=agente_orig.id, campana_id=campana.id,
                          tipo_campana=campana.type, bridge_wait_time=bridge_wait_time,
                          duracion_llamada=duracion_llamada,
                          tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                          agente_extra_id=agente_dest.id,
                          numero_marcado=numero_marcado, contacto_id=contacto_id,
                          archivo_grabacion=archivo_grabacion, time=time, callid=callid)
        if finalizacion == 'COMPLETE-BT':
            LlamadaLogFactory(event='BT-ANSWER', agente_id=agente_dest.id,
                              campana_id=campana.id,
                              tipo_campana=campana.type, bridge_wait_time=bridge_wait_time,
                              duracion_llamada=-1,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=-1, time=time, callid=callid)
            LlamadaLogFactory(event='COMPLETE-BT', agente_id=agente_dest.id,
                              campana_id=campana.id,
                              tipo_campana=campana.type, bridge_wait_time=bridge_wait_time,
                              duracion_llamada=duracion_llamada,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=archivo_grabacion, time=time, callid=callid)
            pass
        else:
            LlamadaLogFactory(event=finalizacion, agente_id=agente_dest.id,
                              campana_id=campana.id,
                              tipo_campana=campana.type, bridge_wait_time=bridge_wait_time,
                              duracion_llamada=duracion_llamada,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=archivo_grabacion, time=time, callid=callid)

    # def generar_log_transferencia_ct(
        """ Genera logs para una llamada con transferencia consultativa a Agente """
    # def generar_log_transferencia_btout(
        """ Genera logs para una llamada con transferencia ciega a numero externo """
    # def generar_log_transferencia_ctout(
        """ Genera logs para una llamada con transferencia consultativa a numero externo """
Esempio n. 3
0
 def test_datos_reporte_grafico_llamadas_entrantes_promedio_tiempo_abandono(
         self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE,
                                       estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             False,
                                             'ABANDON',
                                             self.telefono1,
                                             agente=self.agente_profile,
                                             time=hoy,
                                             bridge_wait_time=4)
     LlamadaLogFactory(tipo_campana=Campana.TYPE_ENTRANTE,
                       tipo_llamada=LlamadaLog.LLAMADA_ENTRANTE,
                       campana_id=campana_entrante.pk,
                       event='ABANDONWEL',
                       bridge_wait_time=5,
                       time=hoy)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_entrante,
                                                fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     self.assertEqual(
         estadisticas_service.reporte_totales_llamadas.
         tiempo_promedio_abandono, 4.5)
 def test_datos_reporte_grafico_campana_entrantes_totales_calificaciones_contabiliza_historico(
         self, render_to_png, crea_reporte_pdf):
     self.campana_activa.type = Campana.TYPE_ENTRANTE
     id_llamada_1 = '000000'
     id_llamada_2 = '111111'
     LlamadaLogFactory(callid=id_llamada_1, campana_id=self.campana_activa.pk)
     LlamadaLogFactory(callid=id_llamada_2, campana_id=self.campana_activa.pk)
     self.campana_activa.save()
     self.calif_gestion.callid = id_llamada_1
     self.calif_gestion.save()
     self.calif_no_accion.callid = id_llamada_2
     self.calif_no_accion.save()
     url = reverse('campana_reporte_grafico', args=[self.campana_activa.pk])
     response = self.client.get(url, follow=True)
     estadisticas = response.context_data['graficos_estadisticas']['estadisticas']
     total_calificados = estadisticas['total_calificados']
     self.assertEqual(total_calificados, 4)
Esempio n. 5
0
 def test_reporte_contactados_campanas_no_entrantes_muestran_valor_calificacion_historica(
         self, exportar_reportes_csv, crea_reporte_pdf):
     url = reverse('campana_reporte_grafico', args=[self.campana_activa.pk])
     id_llamada = '000000'
     LlamadaLogFactory(callid=id_llamada, campana_id=self.campana_activa.pk)
     self.calif_gestion.callid = id_llamada
     self.calif_gestion.save()
     self.client.get(url, follow=True)
     calificados_dict = exportar_reportes_csv.call_args[0][2]
     # muestra los valores finales de las calificaciones
     self.assertEqual(len(calificados_dict), 3)
 def test_datos_reporte_grafico_llamadas_entrantes_promedio_tiempo_abandono(self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE, estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     self.generador_log_llamadas.generar_log(
         campana_entrante, False, 'ABANDON', self.telefono1, agente=self.agente_profile,
         time=hoy, bridge_wait_time=4)
     LlamadaLogFactory(tipo_campana=Campana.TYPE_ENTRANTE, campana_id=campana_entrante.pk,
                       event='ABANDONWEL', bridge_wait_time=5, time=hoy)
     estadisticas_service = EstadisticasService()
     _, _, _, _, tiempo_promedio_abandono = estadisticas_service.obtener_total_llamadas(
         campana_entrante)
     self.assertEqual(tiempo_promedio_abandono, 4.5)
Esempio n. 7
0
 def test_contabilizar_promedio_llamadas_abandonadas(self, _obtener_llamadas_en_espera_raw):
     self.generador.generar_log(self.entrante1, False, 'ABANDON', '35100001111',
                                agente=self.agente1, contacto=None, bridge_wait_time=5,
                                duracion_llamada=10, archivo_grabacion='', time=None)
     LlamadaLogFactory(tipo_campana=Campana.TYPE_ENTRANTE,
                       tipo_llamada=LlamadaLog.LLAMADA_ENTRANTE,
                       campana_id=self.entrante1.pk,
                       event='ABANDONWEL', bridge_wait_time=2)
     reporte = ReporteDeLLamadasEntrantesDeSupervision()
     estadisticas = reporte.estadisticas
     self.assertEqual(
         estadisticas[self.entrante1.pk]['tiempo_acumulado_abandonadas'], 7)
Esempio n. 8
0
    def test_ve_solamente_grabaciones_propias_antes_de_filtrar(self):
        agente3 = self.crear_agente_profile()
        QueueMemberFactory(member=agente3, queue_name=self.queue_campana_1)
        llamada_log3_3 = LlamadaLogFactory.create(duracion_llamada=1,
                                                  agente_id=agente3.id,
                                                  campana_id=self.campana1.id)

        url = reverse('grabacion_agente_buscar', kwargs={'pagina': 1})
        response = self.client.get(url, follow=True)

        self.assertContains(response, self.llamada_log1.numero_marcado)
        self.assertContains(response, self.llamada_log2.numero_marcado)
        self.assertContains(response, self.llamada_log3.numero_marcado)
        self.assertNotContains(response, llamada_log3_3.numero_marcado)
 def test_reporte_contactados_campanas_no_entrantes_muestran_valor_calificacion_historica(
         self, exportar_reportes_csv, crea_reporte_pdf, redis_publish):
     id_llamada = '000000'
     LlamadaLogFactory(callid=id_llamada, campana_id=self.campana_activa.pk,
                       event='COMPLETEAGENT')
     self.calif_gestion.callid = id_llamada
     self.calif_gestion.save()
     key_task = 'key_task'
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     reporte_contactados_csv = ReporteContactadosCSV(
         self.campana_activa, key_task, fecha_desde, fecha_hasta)
     # muestra el histórico de contactados (aqui cuenta la linea de header)
     self.assertEqual(len(reporte_contactados_csv.datos), 5)
 def test_calificaciones_agenda_se_adicionan_a_llamadas_pendientes(self):
     campana_manual = CampanaFactory(type=Campana.TYPE_MANUAL, estado=Campana.ESTADO_ACTIVA)
     opcion_calificacion_agenda = OpcionCalificacionFactory(
         nombre=settings.CALIFICACION_REAGENDA, campana=campana_manual,
         tipo=OpcionCalificacion.AGENDA)
     log = LlamadaLogFactory(campana_id=campana_manual.pk)
     CalificacionClienteFactory(
         callid=log.callid,
         opcion_calificacion=opcion_calificacion_agenda, agente=self.agente_profile)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_manual, fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     self.assertEqual(estadisticas_service.reporte_totales_llamadas.llamadas_pendientes, 1)
 def test_contabilizar_promedio_llamadas_abandonadas(
         self, _obtener_llamadas_en_espera_raw):
     self.generador.generar_log(self.entrante1,
                                False,
                                'ABANDON',
                                '35100001111',
                                agente=self.agente1,
                                contacto=None,
                                bridge_wait_time=5,
                                duracion_llamada=10,
                                archivo_grabacion='',
                                time=None)
     LlamadaLogFactory(tipo_campana=Campana.TYPE_ENTRANTE,
                       campana_id=self.entrante1.pk,
                       event='ABANDONWEL',
                       bridge_wait_time=2)
     self.client.login(username=self.supervisor.user.username,
                       password=self.PWD)
     url = reverse('supervision_campanas_entrantes')
     response = self.client.get(url)
     estadisticas = response.context_data['estadisticas']
     self.assertEqual(
         estadisticas[self.entrante1.pk]['t_promedio_abandono'], 3.5)
Esempio n. 12
0
    def setUp(self):
        self.supervisor1 = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.supervisor2 = self.crear_supervisor_profile(rol=User.SUPERVISOR)

        self.agente1 = self.crear_agente_profile()
        self.agente2 = self.crear_agente_profile()

        self.campana1 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_1 = QueueFactory(campana=self.campana1)
        QueueMemberFactory(member=self.agente1,
                           queue_name=self.queue_campana_1)
        self.campana1.supervisors.add(self.supervisor1.user)

        self.campana2 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_2 = QueueFactory(campana=self.campana2)
        QueueMemberFactory(member=self.agente2,
                           queue_name=self.queue_campana_2)
        self.campana2.supervisors.add(self.supervisor2.user)

        self.contacto = ContactoFactory(id_externo='id_ext')
        self.campana3 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana3.bd_contacto.genera_contactos([self.contacto])
        self.campana3.supervisors.add(self.supervisor1.user)

        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana1, tipo=OpcionCalificacion.GESTION)
        self.calificacion = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion)
        update_change_reason(self.calificacion, 'calificacion')

        self.llamada_log1 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            callid=self.calificacion.callid,
            campana_id=self.campana1.id,
            contacto_id='-1',
            event='COMPLETEAGENT')
        self.llamada_log2 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            campana_id=self.campana1.id,
            event='COMPLETEAGENT')
        self.llamada_log3 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            campana_id=self.campana1.id,
            event='COMPLETEAGENT')
        self.marca_campana1 = GrabacionMarcaFactory(
            callid=self.llamada_log1.callid)
        self.marca_campana2 = GrabacionMarcaFactory(
            callid=self.llamada_log2.callid)

        self.llamada_log2_1 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente2.id,
            campana_id=self.campana2.id,
            event='COMPLETEAGENT')
        self.marca_campana2_1 = GrabacionMarcaFactory(
            callid=self.llamada_log2_1.callid)

        self.llamada_log3_1 = LlamadaLogFactory.create(
            numero_marcado=self.contacto.telefono,
            agente_id=self.agente2.id,
            campana_id=self.campana3.id,
            event='COMPLETEAGENT')

        (_, hace_mucho, ahora) = self._obtener_fechas()
        self.rango_hace_mucho = hace_mucho.date().strftime('%d/%m/%Y') + ' - ' + \
            ahora.date().strftime('%d/%m/%Y')
Esempio n. 13
0
    def _generar_logs_dial(self, campana, tipo_llamada, finalizacion, numero_marcado, agente_id,
                           contacto_id, bridge_wait_time, duracion_llamada, archivo_grabacion,
                           time, callid=None, es_transfer=False):
        """
        Genera logs para la pata de la conexion desde el DIAL
        """
        LlamadaLogFactory(event='DIAL',
                          campana_id=campana.id,
                          tipo_campana=campana.type,
                          tipo_llamada=tipo_llamada,
                          agente_id=agente_id,
                          numero_marcado=numero_marcado,
                          contacto_id=contacto_id,
                          bridge_wait_time=-1,
                          duracion_llamada=-1,
                          archivo_grabacion='',
                          time=time, callid=callid)

        if finalizacion in NOCONNECT:
            if not es_transfer:
                LlamadaLogFactory(event=finalizacion,
                                  campana_id=campana.id,
                                  tipo_campana=campana.type,
                                  tipo_llamada=tipo_llamada,
                                  agente_id=agente_id,
                                  numero_marcado=numero_marcado,
                                  contacto_id=contacto_id,
                                  bridge_wait_time=bridge_wait_time,
                                  duracion_llamada=-1,
                                  archivo_grabacion='',
                                  time=time, callid=callid)
        else:
            LlamadaLogFactory(event='ANSWER',
                              campana_id=campana.id,
                              tipo_campana=campana.type,
                              tipo_llamada=tipo_llamada,
                              agente_id=agente_id,
                              numero_marcado=numero_marcado,
                              contacto_id=contacto_id,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada=-1,
                              archivo_grabacion='',
                              time=time, callid=callid)
            if es_transfer:
                pass  # No hago nada pues la finalizacion se crea segun la transferencia
            elif tipo_llamada in [Campana.TYPE_MANUAL, Campana.TYPE_PREVIEW]:
                assert finalizacion in CONNECT, \
                    'Una llamada Manual con ANSWER debe terminar en COMPLETEAGENT o COMPLETEOUTNUM'
                LlamadaLogFactory(event=finalizacion,
                                  campana_id=campana.id,
                                  tipo_campana=campana.type,
                                  tipo_llamada=tipo_llamada,
                                  agente_id=agente_id,
                                  numero_marcado=numero_marcado,
                                  contacto_id=contacto_id,
                                  bridge_wait_time=bridge_wait_time,
                                  duracion_llamada=duracion_llamada,
                                  archivo_grabacion=archivo_grabacion,
                                  time=time, callid=callid)
            else:
                # Evento extra de Finalizacion para la pata de dial en el caso DIALER
                assert tipo_llamada == Campana.TYPE_DIALER, \
                    'Sólo Dialers no Manuales pueden tener eventos de la pata DIAL de la conexion'
                if es_transfer:
                    pass  # No hago nada pues la finalizacion se crea segun la transferencia
                elif finalizacion in NO_DIALOG:
                    if finalizacion == 'EXITWITHTIMEOUT':
                        finalizacion_pata_dial = 'COMPLETEAGENT'
                    if finalizacion == 'ABANDON':
                        finalizacion_pata_dial = 'COMPLETEOUTNUM'
                    LlamadaLogFactory(event=finalizacion_pata_dial,
                                      campana_id=campana.id,
                                      tipo_campana=campana.type,
                                      tipo_llamada=tipo_llamada,
                                      agente_id=-1,  # 'dialer-dialout'
                                      numero_marcado=numero_marcado,
                                      contacto_id=contacto_id,
                                      bridge_wait_time=bridge_wait_time,
                                      duracion_llamada=duracion_llamada,
                                      archivo_grabacion='',
                                      time=time, callid=callid)
                else:
                    assert finalizacion in CONNECT, \
                        'Finalizacion incorrecta para campaña Dialer:%s' % finalizacion
                    LlamadaLogFactory(event=finalizacion,
                                      campana_id=campana.id,
                                      tipo_campana=campana.type,
                                      tipo_llamada=tipo_llamada,
                                      agente_id=-1,
                                      numero_marcado=numero_marcado,
                                      contacto_id=contacto_id,
                                      bridge_wait_time=bridge_wait_time,
                                      duracion_llamada=duracion_llamada,
                                      archivo_grabacion='',
                                      time=time, callid=callid)
Esempio n. 14
0
    def generar_log_transferencia_campt(self, campana_orig, campana_dest, finalizacion,
                                        numero_marcado, agente_orig, agente_dest, contacto=None,
                                        bridge_wait_time=5, duracion_llamada=5,
                                        archivo_grabacion='', time=None, callid=None):
        """ Genera logs para una llamada transferida a una campaña Entrante """
        es_manual = campana_orig.type == Campana.TYPE_MANUAL
        tipo_llamada = campana_orig.type
        contacto_id = -1 if contacto is None else contacto.id

        assert agente_orig is not None, 'Solo un agente puede transferir'
        assert finalizacion in ['COMPLETE-CAMPT', 'ABANDON', 'EXITWITHTIMEOUT', ]

        # Genero log de llamada hasta CAMPT-TRY
        self._generar_logs(campana=campana_orig, es_manual=es_manual, finalizacion=None,
                           numero_marcado=numero_marcado, tipo_llamada=tipo_llamada,
                           agente_id=agente_orig.id, contacto_id=contacto_id,
                           bridge_wait_time=bridge_wait_time,
                           duracion_llamada=duracion_llamada, archivo_grabacion='',
                           time=time, callid=callid, es_transfer=True)
        LlamadaLogFactory(event='CAMPT-TRY', agente_id=agente_orig.id, campana_id=campana_orig.id,
                          tipo_campana=campana_orig.type, bridge_wait_time=bridge_wait_time,
                          duracion_llamada=duracion_llamada,
                          tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                          campana_extra_id=campana_dest.id,
                          numero_marcado=numero_marcado, contacto_id=contacto_id,
                          archivo_grabacion=archivo_grabacion, time=time, callid=callid)
        LlamadaLogFactory(event='ENTERQUEUE-TRANSFER', campana_id=campana_dest.id,
                          agente_id=agente_orig.id,
                          duracion_llamada=0, bridge_wait_time=0,
                          tipo_campana=campana_dest.type,
                          campana_extra_id=campana_orig.id,
                          tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                          numero_marcado=numero_marcado, contacto_id=contacto_id,
                          archivo_grabacion=archivo_grabacion, time=time, callid=callid)

        if finalizacion == 'COMPLETE-CAMPT':
            LlamadaLogFactory(event='CAMPT-COMPLETE',
                              campana_id=campana_orig.id,
                              tipo_campana=campana_orig.type,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              agente_id=agente_orig.id, agente_extra_id=agente_dest.id,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada=duracion_llamada,
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=archivo_grabacion, time=time, callid=callid)

            LlamadaLogFactory(event='CONNECT', campana_id=campana_dest.id,
                              tipo_campana=campana_dest.type,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              agente_id=agente_dest.id,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada='-1',
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=archivo_grabacion, time=time, callid=callid)
            LlamadaLogFactory(event='COMPLETE-CAMPT', campana_id=campana_dest.id,
                              tipo_campana=campana_dest.type,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              agente_id=agente_dest.id,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada=duracion_llamada,
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=archivo_grabacion, time=time, callid=callid)

        else:
            assert finalizacion in ['ABANDON', 'EXITWITHTIMEOUT'], 'Finalizacion '
            'incorrecta: %s' % finalizacion
            LlamadaLogFactory(event='CAMPT-FAIL',
                              campana_id=campana_orig.id, tipo_campana=campana_orig.type,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              agente_id=agente_orig.id,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada=duracion_llamada,
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=archivo_grabacion, time=time, callid=callid)
            LlamadaLogFactory(event=finalizacion,
                              campana_id=campana_dest.id, tipo_campana=campana_dest.type,
                              tipo_llamada=LlamadaLog.LLAMADA_TRANSFER_INTERNA,
                              agente_id=-1,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada=-1,
                              numero_marcado=numero_marcado, contacto_id=contacto_id,
                              archivo_grabacion=archivo_grabacion, time=time, callid=callid)
Esempio n. 15
0
    def _generar_logs_queue(self, campana, tipo_llamada, finalizacion, numero_marcado, agente_id,
                            contacto_id, bridge_wait_time, duracion_llamada, archivo_grabacion,
                            time, callid=None, es_transfer=False):

        """
        Genera logs para la pata de la conexion desde el ENTERQUEUE
        """
        LlamadaLogFactory(event='ENTERQUEUE',
                          campana_id=campana.id,
                          tipo_campana=campana.type,
                          tipo_llamada=tipo_llamada,
                          agente_id=-1,
                          numero_marcado=numero_marcado,
                          contacto_id=contacto_id,
                          bridge_wait_time=-1,
                          duracion_llamada=-1,
                          archivo_grabacion='',
                          time=time, callid=callid)
        if finalizacion in NO_DIALOG:
            # No se establece el Dialogo con el Agente
            LlamadaLogFactory(event=finalizacion,
                              campana_id=campana.id,
                              tipo_campana=campana.type,
                              tipo_llamada=tipo_llamada,
                              agente_id=-1,
                              numero_marcado=numero_marcado,
                              contacto_id=contacto_id,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada=-1,
                              archivo_grabacion='',
                              time=time, callid=callid)
        else:
            # Se establece el Dialogo con el Agente
            assert agente_id is not None and agente_id != -1, 'Una llamada conectada debe '
            'tener un agente'
            LlamadaLogFactory(event='CONNECT',
                              campana_id=campana.id,
                              tipo_campana=campana.type,
                              tipo_llamada=tipo_llamada,
                              agente_id=agente_id,
                              numero_marcado=numero_marcado,
                              contacto_id=contacto_id,
                              bridge_wait_time=bridge_wait_time,
                              duracion_llamada=-1,
                              archivo_grabacion='',
                              time=time, callid=callid)
            if es_transfer:
                pass  # No hago nada pues la finalizacion se crea segun la transferencia
            else:
                assert finalizacion in CONNECT, 'Finalizacion incorrecta: %s' % finalizacion
                LlamadaLogFactory(event=finalizacion,
                                  campana_id=campana.id,
                                  tipo_campana=campana.type,
                                  tipo_llamada=tipo_llamada,
                                  agente_id=agente_id,
                                  numero_marcado=numero_marcado,
                                  contacto_id=contacto_id,
                                  bridge_wait_time=bridge_wait_time,
                                  duracion_llamada=duracion_llamada,
                                  archivo_grabacion=archivo_grabacion,
                                  time=time, callid=callid)