def test_servicio_agentes_activos_no_incluye_agentes_no_asignados_al_supervisor( self, logger, _ami_manager, manager): self.campana_activa.supervisors.add(self.supervisor_admin.user) ag1 = self.agente_profile ag10, ag11 = AgenteProfileFactory.create_batch(2) QueueMemberFactory.create(member=ag10, queue_name=self.queue) self.client.login(username=self.supervisor_admin.user.username, password=self.PWD) _ami_manager.return_value = ( "/OML/AGENT/{0}/NAME : Agente 01\r\n". format(ag1.pk) + "/OML/AGENT/{0}/SIP : 1004\r\n".format( ag1.pk) + "/OML/AGENT/{0}/STATUS : READY:1582309004\r\n" .format(ag1.pk) + "/OML/AGENT/{0}/NAME : Agente10\r\n". format(ag10.pk) + "/OML/AGENT/{0}/SIP : 1013\r\n".format( ag10.pk) + "/OML/AGENT/{0}/STATUS : READY:1582309102\r\n" .format(ag10.pk) + "/OML/AGENT/{0}/NAME : Agente11\r\n". format(ag11.pk) + "/OML/AGENT/{0}/SIP : 1014\r\n".format( ag11.pk) + "/OML/AGENT/{0}/STATUS : READY:1582309100\r\n" .format(ag11.pk) + "3 results found."), None url = reverse('api_agentes_activos') response = self.client.get(url) response_json = response.json() self.assertEqual(len(response_json), 2) for datos_agente in response_json: self.assertTrue(datos_agente.get('id') != str(ag11.pk))
def test_servicio_agentes_no_adiciona_grupo_headers_desconocidos( self, _ami_manager, manager): self.campana_activa.supervisors.add(self.supervisor_admin.user) ag1 = self.agente_profile ag2 = AgenteProfileFactory() QueueMemberFactory.create(member=ag2, queue_name=self.queue) self.client.login(username=self.supervisor_admin.user.username, password=self.PWD) _ami_manager.return_value = ( "/OML/AGENT/{0}/NAME : John Perkins\r\n". format(ag1.pk) + "/OML/AGENT/{0}/SIP : 1001\r\n".format( ag1.pk) + "/OML/AGENT/{0}/STATUS : READY:1582309000\r\n" .format(ag1.pk) + "/OML/AGENT/{0}/STRANGE-HEADER : strange-value\r\n". format(ag1.pk) + "/OML/AGENT/{0}/NAME : Silvia Pensive\r\n". format(ag2.pk) + "/OML/AGENT/{0}/SIP : 1002\r\n".format( ag2.pk) + "/OML/AGENT/{0}/STATUS : PAUSE:1582309000\r\n" .format(ag2.pk) + "2 results found."), None url = reverse('api_agentes_activos') response = self.client.get(url) self.assertEqual(len(response.json()), 2) datos_agente_1 = response.json()[0] datos_agente_2 = response.json()[1] self.assertEqual(datos_agente_2['id'], str(ag2.pk)) self.assertEqual(datos_agente_2['status'], 'PAUSE') self.assertEqual([i for i in datos_agente_1.keys()], ['id', 'nombre', 'sip', 'status', 'tiempo'])
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)
def _generar_ami_manager_response_agentes(self): # genera datos que simulan lo más aproximadamente posible las lineas de output de # los estados de los agentes obtenidos por el comando AMI 'database show OML/AGENT' linea_agente = 'Output: /OML/AGENT/{0}/NAME : agente{0}' linea_sip = 'Output: /OML/AGENT/{0}/SIP : 100{0}' linea_status = 'Output: /OML/AGENT/{0}/STATUS : {1}:155439223' response = [] self.ag1 = self.agente_profile self.ag2, self.ag3 = AgenteProfileFactory.create_batch(2) QueueMemberFactory.create(member=self.ag2, queue_name=self.queue) QueueMemberFactory.create(member=self.ag3, queue_name=self.queue) datos_agentes = [{ 'id': self.ag1.pk, 'status': 'READY' }, { 'id': self.ag2.pk, 'status': 'PAUSE' }, { 'id': self.ag3.pk, 'status': 'OFFLINE' }] for datos_agente in datos_agentes: id_agente = datos_agente['id'] status_agente = datos_agente['status'] response.extend([ linea_agente.format(id_agente), linea_sip.format(id_agente), linea_status.format(id_agente, status_agente) ]) return '\r\n'.join(response), None
def setUp(self): self.usuario_admin_supervisor = UserFactory(is_staff=True, is_supervisor=True) self.usuario_admin_supervisor.set_password(self.PWD) self.usuario_admin_supervisor.save() self.agente_profile = AgenteProfileFactory.create(user=self.usuario_admin_supervisor) self.nombre_calificacion = NombreCalificacionFactory.create(nombre=self.CALIFICACION_NOMBRE) self.nombre_calificacion_gestion = NombreCalificacionFactory.create(nombre=self.GESTION) self.campana_activa = CampanaFactory.create( estado=Campana.ESTADO_ACTIVA, type=Campana.TYPE_PREVIEW) self.contacto_calificado_gestion = ContactoFactory( bd_contacto=self.campana_activa.bd_contacto) self.contacto_calificado_no_accion = ContactoFactory( bd_contacto=self.campana_activa.bd_contacto) self.contacto_no_atendido = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto) self.contacto_no_calificado = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto) self.opcion_calificacion_gestion = OpcionCalificacionFactory.create( campana=self.campana_activa, nombre=self.nombre_calificacion_gestion.nombre, tipo=OpcionCalificacion.GESTION) self.opcion_calificacion_noaccion = OpcionCalificacionFactory.create( campana=self.campana_activa, nombre=self.nombre_calificacion.nombre, tipo=OpcionCalificacion.NO_ACCION) self.telefono1 = self.contacto_calificado_gestion.telefono self.telefono2 = self.contacto_calificado_no_accion.telefono self.telefono3 = self.contacto_no_atendido.telefono self.telefono4 = self.contacto_no_calificado.telefono self.generador_log_llamadas = GeneradorDeLlamadaLogs() self.generador_log_llamadas.generar_log( self.campana_activa, False, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile, contacto=self.contacto_calificado_gestion, duracion_llamada=self.DURACION_LLAMADA, callid=1) self.generador_log_llamadas.generar_log( self.campana_activa, False, 'COMPLETEAGENT', self.telefono2, agente=self.agente_profile, contacto=self.contacto_calificado_no_accion, duracion_llamada=self.DURACION_LLAMADA, callid=2) self.generador_log_llamadas.generar_log( self.campana_activa, True, 'NOANSWER', self.telefono3, agente=self.agente_profile, contacto=self.contacto_no_atendido, callid=3) self.generador_log_llamadas.generar_log( self.campana_activa, True, 'COMPLETEOUTNUM', self.telefono4, agente=self.agente_profile, contacto=self.contacto_no_calificado, duracion_llamada=0, callid=4) callid_gestion = LlamadaLog.objects.get( contacto_id=self.contacto_calificado_gestion.pk, event='COMPLETEAGENT').callid callid_no_accion = LlamadaLog.objects.get( contacto_id=self.contacto_calificado_no_accion.pk, event='COMPLETEAGENT').callid self.calif_gestion = CalificacionClienteFactory.create( opcion_calificacion=self.opcion_calificacion_gestion, agente=self.agente_profile, contacto=self.contacto_calificado_gestion, callid=callid_gestion) self.calif_no_accion = CalificacionClienteFactory.create( opcion_calificacion=self.opcion_calificacion_noaccion, agente=self.agente_profile, contacto=self.contacto_calificado_no_accion, callid=callid_no_accion) CalificacionCliente.history.all().update(history_change_reason='calificacion') self.client.login(username=self.usuario_admin_supervisor.username, password=self.PWD)
def handle(self, *args, **options): nro_grabaciones = options['nro_llamadas'][0] agente = AgenteProfileFactory.create() for i in range(nro_grabaciones): try: self.grabacion_marcada_aleatoria(agente) except Exception as e: raise CommandError('Fallo del comando: {0}'.format(e.message)) self.stdout.write( self.style.SUCCESS('Creada(s) {0} grabaciones(s)'.format(nro_grabaciones)))
def crear_agentes(self): self.agentes = [] for i in range(1, 5): username = '******' % i usrs = User.objects.filter(username=username) if usrs.count() == 1: agente = usrs[0].agenteprofile else: usr = UserFactory(username=username, is_agente=True) agente = AgenteProfileFactory(user=usr) self.agentes.append(agente)
def setUp(self): super(GeneradorDeLlamadaLogsTests, self).setUp() self.manual = CampanaFactory.create(type=Campana.TYPE_MANUAL) self.usr_agente1 = UserFactory.create(username='******', is_agente=True) self.agente1 = AgenteProfileFactory.create(user=self.usr_agente1) self.dialer = CampanaFactory.create(type=Campana.TYPE_DIALER) self.contacto_d = ContactoFactory(bd_contacto=self.dialer.bd_contacto) self.entrante = CampanaFactory.create(type=Campana.TYPE_ENTRANTE) self.preview = CampanaFactory.create(type=Campana.TYPE_PREVIEW) self.contacto_p = ContactoFactory(bd_contacto=self.preview.bd_contacto)
def setUp(self): super(ReporteDeLLamadasEntrantesDeSupervisionTest, self).setUp() self.generador = GeneradorDeLlamadaLogs() self.supervisor = SupervisorProfileFactory() self.supervisor.user.set_password(self.PWD) self.supervisor.user.save() self.agente1 = AgenteProfileFactory() self.agente2 = AgenteProfileFactory() self.entrante1 = CampanaFactory.create( type=Campana.TYPE_ENTRANTE, nombre='camp-entrante-1', estado=Campana.ESTADO_ACTIVA, supervisors=[self.supervisor.user]) self.opcion_calificacion = OpcionCalificacionFactory( campana=self.entrante1, tipo=OpcionCalificacion.GESTION) # Campaña que no debe estar en los reportes por no ser del supervisor self.entrante2 = CampanaFactory.create(type=Campana.TYPE_ENTRANTE, nombre='camp-entrante-2', estado=Campana.ESTADO_ACTIVA) self.queue = QueueFactory.create(campana=self.entrante1)
def setUp(self): super(BaseReporteDeLlamadasTests, self).setUp() self.hasta = fecha_hora_local(now()) self.durante = fecha_hora_local(now() - timedelta(days=1)) self.desde = datetime_hora_minima_dia(self.hasta) - timedelta(days=1) self.supervisor = SupervisorProfileFactory(is_administrador=True) self.agente1 = AgenteProfileFactory() self.agente2 = AgenteProfileFactory() self.agente3 = AgenteProfileFactory() self.manual = CampanaFactory.create(type=Campana.TYPE_MANUAL, nombre='camp-manual-1', estado=Campana.ESTADO_ACTIVA) self.dialer = CampanaFactory.create(type=Campana.TYPE_DIALER, nombre='camp-dialer-1', estado=Campana.ESTADO_ACTIVA) self.contacto_d = ContactoFactory(bd_contacto=self.dialer.bd_contacto) self.entrante = CampanaFactory.create(type=Campana.TYPE_ENTRANTE, nombre='camp-entrante-1', estado=Campana.ESTADO_ACTIVA) self.preview = CampanaFactory.create(type=Campana.TYPE_PREVIEW, nombre='camp-preview-1', estado=Campana.ESTADO_ACTIVA) self.contacto_p = ContactoFactory(bd_contacto=self.preview.bd_contacto) self.campanas = [ self.manual, self.dialer, self.entrante, self.preview, ]
def test_servicio_agentes_activos_entradas_mixtas_lineas_pause_id_aceptadas( self, logger, _ami_manager, manager): ag1_pk = self.agente_profile.pk self.campana_activa.supervisors.add(self.supervisor_admin.user) ag2, ag3, ag4 = AgenteProfileFactory.create_batch(3) QueueMemberFactory.create(member=ag2, queue_name=self.queue) QueueMemberFactory.create(member=ag3, queue_name=self.queue) QueueMemberFactory.create(member=ag4, queue_name=self.queue) self.client.login(username=self.supervisor_admin.user.username, password=self.PWD) _ami_manager.return_value = ( "/OML/AGENT/{0}/NAME : John Perkins\r\n" .format(ag1_pk) + "/OML/AGENT/{0}/PAUSE_ID : 1\r\n".format( ag1_pk) + "/OML/AGENT/{0}/SIP : 1001\r\n".format( ag1_pk) + "/OML/AGENT/{0}/STATUS : \r\n".format( ag1_pk) + "/OML/AGENT/{0}/NAME : Silvia Pensive\r\n" .format(ag2.pk) + "/OML/AGENT/{0}/SIP : 1002\r\n".format( ag2.pk) + "/OML/AGENT/{0}/STATUS : PAUSE:1582309000\r\n" .format(ag2.pk) + "/OML/AGENT/{0}/NAME : FERNANDO XXX\r\n" .format(ag3.pk) + "/OML/AGENT/{0}/SIP : 1105\r\n".format( ag3.pk) + "/OML/AGENT/{0}/STATUS : \r\n".format( ag3.pk) + "/OML/AGENT/{0}/NAME : Marge Simpson\r\n" .format(ag4.pk) + "/OML/AGENT/{0}/PAUSE_ID : 0\r\n".format( ag4.pk) + "/OML/AGENT/{0}/SIP : 1003\r\n".format( ag4.pk) + "/OML/AGENT/{0}/STATUS : PAUSE:1582309500\r\n" .format(ag4.pk) + "2 results found."), None url = reverse('api_agentes_activos') response = self.client.get(url) response_json = response.json() agent1_dict = response_json[1] self.assertEqual(len(response_json), 2) self.assertEqual(agent1_dict['pause_id'], '0')
def setUp(self): super(CalificacionTests, self).setUp() self.usuario_agente = UserFactory(is_agente=True) self.usuario_agente.set_password(self.PWD) self.usuario_agente.save() self.campana = CampanaFactory.create() self.nombre_opcion_gestion = NombreCalificacionFactory.create() self.nombre_calificacion_agenda = NombreCalificacion.objects.get( nombre=settings.CALIFICACION_REAGENDA) self.formulario = FormularioFactory() self.campo_formulario = FieldFormularioFactory( formulario=self.formulario) self.opcion_calificacion_gestion = OpcionCalificacionFactory.create( campana=self.campana, nombre=self.nombre_opcion_gestion.nombre, tipo=OpcionCalificacion.GESTION, formulario=self.formulario) self.opcion_calificacion_agenda = OpcionCalificacionFactory.create( campana=self.campana, nombre=self.nombre_calificacion_agenda.nombre, tipo=OpcionCalificacion.AGENDA) self.opcion_calificacion_camp_manual = OpcionCalificacionFactory.create( campana=self.campana, nombre=self.nombre_opcion_gestion.nombre) self.opcion_calificacion_no_accion = OpcionCalificacionFactory.create( campana=self.campana, tipo=OpcionCalificacion.NO_ACCION) self.contacto = ContactoFactory.create() self.campana.bd_contacto.contactos.add(self.contacto) self.queue = QueueFactory.create(campana=self.campana) self.agente_profile = AgenteProfileFactory.create( user=self.usuario_agente) self.calificacion_cliente = CalificacionClienteFactory( opcion_calificacion=self.opcion_calificacion_camp_manual, agente=self.agente_profile, contacto=self.contacto) QueueMemberFactory.create(member=self.agente_profile, queue_name=self.queue) self.client.login(username=self.usuario_agente.username, password=self.PWD)
def test_servicio_agentes_activos_muestra_activos_no_offline( self, _ami_manager, manager): self.campana_activa.supervisors.add(self.supervisor_admin.user) agente = AgenteProfileFactory() QueueMemberFactory.create(member=agente, queue_name=self.queue) self.client.login(username=self.supervisor_admin.user.username, password=self.PWD) _ami_manager.return_value = self._generar_ami_manager_response_agentes( ) url = reverse('api_agentes_activos') response = self.client.get(url) self.assertEqual(len(response.json()), 2) for datos_agente in response.json(): self.assertIn( datos_agente['id'], [str(self.ag1.pk), str(self.ag2.pk)]) if datos_agente['id'] == str(self.ag1.pk): self.assertEqual(datos_agente['status'], 'READY') else: self.assertEqual(datos_agente['status'], 'PAUSE')
def setUp(self): super(ReporteDeLLamadasSalientesDeSupervisionTest, self).setUp() self.generador = GeneradorDeLlamadaLogs() self.supervisor = SupervisorProfileFactory() self.agente1 = AgenteProfileFactory() self.manual = CampanaFactory.create(type=Campana.TYPE_MANUAL, nombre='camp-manual-1', estado=Campana.ESTADO_ACTIVA, supervisors=[self.supervisor.user]) self.opcion_calificacion_m1 = OpcionCalificacionFactory( campana=self.manual, tipo=OpcionCalificacion.GESTION) self.preview = CampanaFactory.create( type=Campana.TYPE_PREVIEW, nombre='camp-preview-1', estado=Campana.ESTADO_ACTIVA, supervisors=[self.supervisor.user]) self.opcion_calificacion_p1 = OpcionCalificacionFactory( campana=self.preview, tipo=OpcionCalificacion.GESTION) # Campañas que no deben estar en los reportes por no ser del supervisor self.manual2 = CampanaFactory.create(type=Campana.TYPE_MANUAL, nombre='camp-manual-2', estado=Campana.ESTADO_ACTIVA) self.preview2 = CampanaFactory.create(type=Campana.TYPE_PREVIEW, nombre='camp-preview-2', estado=Campana.ESTADO_ACTIVA) # Campañas que no deben estar en los reportes por no ser MANUAL o PREVIEW self.dialer = CampanaFactory.create(type=Campana.TYPE_DIALER, nombre='camp-dialer-1', estado=Campana.ESTADO_ACTIVA, supervisors=[self.supervisor.user]) self.opcion_calificacion_d1 = OpcionCalificacionFactory( campana=self.dialer, tipo=OpcionCalificacion.GESTION) self.dialer2 = CampanaFactory.create(type=Campana.TYPE_DIALER, nombre='camp-dialer-2', estado=Campana.ESTADO_ACTIVA)
def test_servicio_agentes_activos_detecta_grupos_menos_lineas_previstas( self, _ami_manager, manager): self.campana_activa.supervisors.add(self.supervisor_admin.user) ag1 = self.agente_profile ag2 = AgenteProfileFactory() QueueMemberFactory.create(member=ag2, queue_name=self.queue) self.client.login(username=self.supervisor_admin.user.username, password=self.PWD) _ami_manager.return_value = ( "/OML/AGENT/{0}/NAME : John Perkins\r\n". format(ag1.pk) + "/OML/AGENT/{0}/NAME : Silvia Pensive\r\n". format(ag2.pk) + "/OML/AGENT/{0}/SIP : 1001\r\n".format( ag2.pk) + "/OML/AGENT/{0}/STATUS : READY:1582309000\r\n". format(ag2.pk) + "2 results found."), None url = reverse('api_agentes_activos') response = self.client.get(url) self.assertEqual(len(response.json()), 1) datos_agente = response.json()[0] self.assertEqual(datos_agente['id'], str(ag2.pk)) self.assertEqual(datos_agente['status'], 'READY')
def setUp(self): self.factory = RequestFactory() self.supervisor_admin = SupervisorProfileFactory(is_administrador=True) self.supervisor_admin.user.set_password(self.PWD) self.supervisor_admin.user.save() self.supervisor = SupervisorProfileFactory(is_administrador=False) self.supervisor.user.set_password(self.PWD) self.supervisor.user.save() self.agente_profile = AgenteProfileFactory() self.agente_profile.user.set_password(self.PWD) self.agente_profile.user.is_agente = True self.agente_profile.user.save() self.campana_activa = CampanaFactory.create( estado=Campana.ESTADO_ACTIVA) self.campana_activa_supervisor = CampanaFactory.create( estado=Campana.ESTADO_ACTIVA) self.campana_activa_supervisor.supervisors.add(self.supervisor.user) self.campana_finalizada = CampanaFactory( estado=Campana.ESTADO_FINALIZADA) self.queue = QueueFactory.create(campana=self.campana_activa) QueueMemberFactory.create(member=self.agente_profile, queue_name=self.queue) self.sistema_externo = SistemaExternoFactory() self.opcion_calificacion = OpcionCalificacionFactory( campana=self.campana_activa) self.calificacion_cliente = CalificacionClienteFactory( opcion_calificacion=self.opcion_calificacion, agente=self.agente_profile) for user in User.objects.all(): Token.objects.create(user=user)
def test_servicio_agentes_activos_entradas_menos_lineas_son_detectadas_y_excluidas( self, logger, _ami_manager, manager): self.campana_activa.supervisors.add(self.supervisor_admin.user) ag1 = self.agente_profile ag2, ag3, ag4 = AgenteProfileFactory.create_batch(3) QueueMemberFactory.create(member=ag2, queue_name=self.queue) QueueMemberFactory.create(member=ag3, queue_name=self.queue) QueueMemberFactory.create(member=ag4, queue_name=self.queue) self.client.login(username=self.supervisor_admin.user.username, password=self.PWD) _ami_manager.return_value = ( "/OML/AGENT/{0}/NAME : John Perkins\r\n". format(ag1.pk) + "/OML/AGENT/{0}/SIP : 1001\r\n".format( ag1.pk) + "/OML/AGENT/{0}/STATUS : READY:1582309100\r\n" .format(ag1.pk) + "/OML/AGENT/{0}/NAME : Silvia Pensive\r\n" .format(ag2.pk) + "/OML/AGENT/{0}/SIP : 1002\r\n".format( ag2.pk) + "/OML/AGENT/{0}/STATUS : PAUSE:1582309000\r\n" .format(ag2.pk) + "/OML/AGENT/{0}/NAME : Homero Simpson\r\n" .format(ag3.pk) + "/OML/AGENT/{0}/NAME : Marge Simpson\r\n". format(ag4.pk) + "/OML/AGENT/{0}/SIP : 1003\r\n".format( ag4.pk) + "/OML/AGENT/{0}/STATUS : PAUSE:1582309500\r\n" .format(ag4.pk) + "/OML/AGENT/{0}/SIP : 1004\r\n".format( ag4.pk) + "2 results found."), None url = reverse('api_agentes_activos') response = self.client.get(url) self.assertEqual(len(response.json()), 3)
def _crear_datos_entorno(self): self.admin = User.objects.filter(is_staff=True).first() # crear grupo grupo = GrupoFactory() # crear agente agente = AgenteProfileFactory(grupo=grupo, reported_by=self.admin) agente.user.username = self.agent_username agente.user.set_password(self.agent_password) agente.sip_extension = 1000 + agente.id agente.user.is_agente = True agente.user.save() agente.save() agente.user.groups.add(Group.objects.get(name='Agente')) asterisk_sip_service = ActivacionAgenteService() asterisk_sip_service.activar() # crear audio ArchivoDeAudioFactory() # crear pausa PausaFactory() # crear formulario (2 campos) form = FormularioFactory() FieldFormularioFactory.create_batch(2, formulario=form) # crear califs.(1 gestion y 1 normal) self.success = NombreCalificacionFactory(nombre='Success') self.angry = NombreCalificacionFactory(nombre='Hangs up angry') # crear BD (3 contactos) self.bd_contacto = BaseDatosContactoFactory() ContactoFactory.create_batch(3, bd_contacto=self.bd_contacto) campana_manual = self._crear_campana_manual() campana_entrante = self._crear_campana_entrante() activacion_queue_service = ActivacionQueueService() activacion_queue_service.activar() # crea un troncal y con este una ruta entrante hacia el pbx-emulator text_config = ("type=friend\n" "host=pbx-emulator\n" "defaultuser=01177660010\n" "secret=OMLtraining72\n" "qualify=yes\n" "insecure=invite\n" "context=from-pstn\n" "disallow=all\n" "allow=alaw\n") register_string = "01177660010:OMLtraining72@pbx-emulator" troncal_pbx_emulator = TroncalSIPFactory( text_config=text_config, register_string=register_string, canales_maximos=1000, caller_id='') sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk( ) sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator) ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt") PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.") OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator) sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk( ) sincronizador_ruta_saliente.regenerar_asterisk(ruta_saliente) # crear ruta entrante self._crear_ruta_entrante(campana_entrante) self._asignar_agente_a_campana(agente, campana_manual) self._asignar_agente_a_campana(agente, campana_entrante)
def _crear_datos_entorno(self): admin = User.objects.filter(is_staff=True).first() # crear grupo grupo = GrupoFactory() # crear modulo modulo = ModuloFactory() # crear agente agente = AgenteProfileFactory(grupo=grupo, reported_by=admin) agente.modulos.add(modulo) agente.user.username = self.agent_username agente.user.set_password(self.agent_password) agente.sip_extension = 1000 + agente.id agente.user.is_agente = True agente.user.save() agente.save() asterisk_sip_service = ActivacionAgenteService() asterisk_sip_service.activar() # crear audio ArchivoDeAudioFactory() # crear pausa PausaFactory() # crear formulario (2 campos) form = FormularioFactory() FieldFormularioFactory.create_batch(2, formulario=form) # crear califs.(1 gestion y 1 normal) success = NombreCalificacionFactory(nombre='Success') angry = NombreCalificacionFactory(nombre='Hangs up angry') # crear BD (3 contactos) bd_contacto = BaseDatosContactoFactory() ContactoFactory.create_batch(3, bd_contacto=bd_contacto) # crear campaña manual campana_manual = CampanaFactory( nombre='test_manual_campaign', bd_contacto=bd_contacto, type=Campana.TYPE_MANUAL, reported_by=admin, es_manual=True, estado=Campana.ESTADO_ACTIVA ) # crear Queue para la campaña Queue.objects.create( campana=campana_manual, name=campana_manual.nombre, maxlen=5, wrapuptime=5, servicelevel=30, strategy='rrmemory', eventmemberstatus=True, eventwhencalled=True, ringinuse=True, setinterfacevar=True, weight=0, wait=120 ) # opciones de calificacion OpcionCalificacionFactory( nombre=success.nombre, campana=campana_manual, tipo=OpcionCalificacion.GESTION) OpcionCalificacionFactory( nombre=angry.nombre, campana=campana_manual, tipo=OpcionCalificacion.NO_ACCION) activacion_queue_service = ActivacionQueueService() activacion_queue_service.activar() # crea un troncal y con este una ruta entrante hacia el pbx-emulator text_config = ("type=friend\n" "host=pbx-emulator\n" "defaultuser=01177660010\n" "secret=OMLtraining72\n" "qualify=yes\n" "insecure=invite\n" "context=from-pstn\n" "disallow=all\n" "allow=alaw\n") register_string = "01177660010:OMLtraining72@pbx-emulator" troncal_pbx_emulator = TroncalSIPFactory( text_config=text_config, register_string=register_string, canales_maximos=1000, caller_id='') sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk() sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator) ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt") PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.") OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator) sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk() sincronizador_ruta_saliente.regenerar_rutas_salientes(ruta_saliente)
def _crear_datos_entorno(self): self.admin = User.objects.filter(is_staff=True).first() # crear grupo grupo = GrupoFactory() # crear agente agente = AgenteProfileFactory(grupo=grupo, reported_by=self.admin) agente.user.username = self.agent_username agente.user.set_password(self.agent_password) agente.sip_extension = 1000 + agente.user.id agente.user.is_agente = True agente.user.save() agente.save() agente.user.groups.add(Group.objects.get(name='Agente')) asterisk_sip_service = ActivacionAgenteService() asterisk_sip_service.activar() # crear audio ArchivoDeAudioFactory() # crear pausa PausaFactory() # crear formulario (2 campos) form = FormularioFactory() FieldFormularioFactory.create_batch(2, formulario=form) # crear califs.(1 gestion y 1 normal) self.success = NombreCalificacionFactory(nombre='Success') self.angry = NombreCalificacionFactory(nombre='Hangs up angry') # crear BD (3 contactos) self.bd_contacto = BaseDatosContactoFactory() ContactoFactory.create_batch(3, bd_contacto=self.bd_contacto) campana_manual = self._crear_campana_manual() campana_entrante = self._crear_campana_entrante() activacion_queue_service = ActivacionQueueService() activacion_queue_service.activar() # crea un troncal y con este una ruta entrante hacia el pbx-emulator text_config = ("type=wizard\n" "transport=trunk-transport\n" "accepts_registrations=no\n" "accepts_auth=no\n" "sends_registrations=yes\n" "sends_auth=yes\n" "endpoint/rtp_symmetric=no\n" "endpoint/force_rport=no\n" "endpoint/rewrite_contact=yes\n" "endpoint/timers=yes\n" "aor/qualify_frequency=60\n" "endpoint/allow=alaw,ulaw\n" "endpoint/dtmf_mode=rfc4733\n" "endpoint/context=from-pstn\n" "remote_hosts=pbxemulator:5060\n" "outbound_auth/username=01177660010\n" "outbound_auth/password=OMLtraining72\n") troncal_pbx_emulator = TroncalSIPFactory(text_config=text_config, canales_maximos=1000, tecnologia=1, caller_id='') sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk( ) sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator) ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt") PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.") OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator) sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk( ) sincronizador_ruta_saliente.regenerar_asterisk(ruta_saliente) # crear ruta entrante self._crear_ruta_entrante(campana_entrante) self._asignar_agente_a_campana(agente, campana_manual) self._asignar_agente_a_campana(agente, campana_entrante)