├── .coveragerc ├── .eslintignore ├── .eslintrc.js ├── .flake8 ├── .gitignore ├── .gitlab-ci.yml ├── .gitlab └── issue_templates │ └── Bug.md ├── .omnileads_version ├── .pre-commit-config.yaml ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE.txt ├── README.md ├── ReleaseNotes.md ├── TRANSLATING.md ├── api_app ├── __init__.py ├── admin.py ├── apps.py ├── authentication.py ├── forms.py ├── locale │ ├── en │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── es │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ └── django.po │ └── pt_BR │ │ └── LC_MESSAGES │ │ └── django.po ├── migrations │ ├── 0001_initial.py │ └── __init__.py ├── serializers │ ├── __init__.py │ ├── agents.py │ ├── audios_asterisk.py │ ├── base.py │ ├── base_de_contactos.py │ ├── call_disposition.py │ ├── campaigns │ │ └── add_agents_to_campaign.py │ ├── external_site.py │ ├── external_site_authentication.py │ ├── external_system.py │ ├── form.py │ ├── group_of_hour.py │ ├── inbound_route.py │ ├── ivr.py │ ├── outbound_route.py │ ├── pause.py │ ├── pause_set.py │ ├── register_server.py │ └── reportes.py ├── services │ ├── base_datos_contacto_service.py │ ├── calificacion_llamada.py │ └── storage_service.py ├── tests │ ├── __init__.py │ ├── campaign │ │ ├── __init__.py │ │ └── agents │ │ │ ├── __init__.py │ │ │ └── tests_add_agents_to_campaign.py │ ├── pause_sets │ │ ├── __init__.py │ │ ├── tests_configuraciones_de_pausas.py │ │ └── tests_conjuntos_de_pausa.py │ ├── tests.py │ ├── tests_agents_asterisk_session_api.py │ ├── tests_api_base_de_contactos.py │ ├── tests_api_call_dispositions.py │ ├── tests_api_click2call.py │ ├── tests_api_contactos.py │ ├── tests_api_external_site_authentications.py │ ├── tests_api_external_sites.py │ ├── tests_api_external_systems.py │ ├── tests_api_forms.py │ ├── tests_api_group_of_hour.py │ ├── tests_api_inbound_route.py │ ├── tests_api_ivr.py │ ├── tests_api_outbound_route.py │ ├── tests_api_pauses.py │ ├── tests_api_permisos.py │ ├── tests_api_register_server.py │ ├── tests_api_send_messages.py │ ├── tests_api_status_calificacion_llamada.py │ └── tests_api_subir_base_contactos.py ├── urls.py ├── utils │ ├── __init__.py │ ├── contactos │ │ └── base_datos_contacto_archivo_parser.py │ ├── group_of_hours.py │ ├── ivr.py │ ├── logger.py │ └── routes │ │ ├── inbound.py │ │ └── outbound.py └── views │ ├── __init__.py │ ├── administrador.py │ ├── agente.py │ ├── audios.py │ ├── audios_asterisk.py │ ├── auditoria.py │ ├── base.py │ ├── base_de_contactos.py │ ├── call_disposition.py │ ├── campaigns │ └── add_agents_to_campaign.py │ ├── destino_entrante.py │ ├── external_site.py │ ├── external_site_authentication.py │ ├── external_system.py │ ├── form.py │ ├── grabaciones.py │ ├── group_of_hour.py │ ├── inbound_route.py │ ├── ivr.py │ ├── logging.py │ ├── outbound_route.py │ ├── pause.py │ ├── pause_set.py │ ├── permissions.py │ ├── register_server.py │ ├── reports.py │ ├── supervisor.py │ ├── system.py │ ├── usuarios.py │ └── wombat_dialer.py ├── build ├── docker │ └── ci-images │ │ ├── Dockerfile-callrecs-converter │ │ ├── Dockerfile-postgres │ │ ├── Dockerfile-python-flake8 │ │ ├── Readme.md │ │ ├── converter.sh │ │ └── install_language.sh ├── oml_uwsgi.ini └── scripts │ ├── callrec_converter.py │ ├── callrec_converter.sh │ ├── django_commands.sh │ ├── django_migrations.sh │ ├── docker-entrypoint.sh │ ├── init_cronos.sh │ ├── init_daphne.sh │ ├── init_devenv.sh │ ├── init_pgsql_backup.sh │ ├── init_pgsql_restore.sh │ ├── init_uwsgi.sh │ └── init_worker_bgtasks.sh ├── check-js.sh ├── checks.py ├── configuracion_telefonia_app ├── __init__.py ├── admin.py ├── apps.py ├── forms.py ├── locale │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ └── pt_BR │ │ └── LC_MESSAGES │ │ ├── django.po │ │ └── djangojs.po ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── download_asterisk_sounds.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_hangup.py │ ├── 0003_attr_hangup_dest_entrante.py │ ├── 0004_auto_20190115_1559.py │ ├── 0005_rutasaliente_orden.py │ ├── 0006_identificacion_cliente.py │ ├── 0007_destino_entrante_keys.py │ ├── 0008_adiciona_destino_personalizado.py │ ├── 0009_troncalsip_tecnologia.py │ ├── 0010_auto_20191203_1018.py │ ├── 0011_playlist_musica_de_espera.py │ ├── 0012_amdconf.py │ ├── 0013_crea_amdconf_inicial.py │ ├── 0014_esquemagrabaciones.py │ ├── 0015_crea_esquema_grabaciones_inicial.py │ ├── 0016_audiosasteriskconf.py │ ├── 0017_patrondediscado_prepend_regex.py │ ├── 0018_regex_did_entrante_patron_de_discado_saliente.py │ ├── 0019_tipo_destino_entrante_menuwhatsapp.py │ ├── 0020_patrondediscado_regex.py │ ├── 0021_alter_destinoentrante_tipo.py │ ├── 0022_ruta_entrante_con_idioma_asterisk.py │ └── __init__.py ├── models.py ├── regeneracion_configuracion_telefonia.py ├── services │ ├── __init__.py │ └── audio_asterisk.py ├── static │ └── configuracion_telefonia_app │ │ ├── CSS │ │ └── troncales.css │ │ ├── JS │ │ ├── esquema_grabacion.js │ │ ├── ext │ │ │ └── jquery-ui.min.js │ │ ├── formularioIdentificacionCliente.js │ │ ├── ivr.js │ │ ├── progreso_audio.js │ │ ├── ruta-entrante.js │ │ ├── rutas-entrantes-lib.js │ │ ├── troncal.js │ │ └── validacion-fecha-hora.js │ │ └── img │ │ └── wait.gif ├── templates │ ├── adicionar_audios_asterisk.html │ ├── crear_destino_personalizado.html │ ├── crear_identificacion_cliente.html │ ├── crear_ivr.html │ ├── crear_validacion_fecha_hora.html │ ├── create_update_troncal.html │ ├── delete_troncal_sip.html │ ├── destino_personalizado.html │ ├── editar_configuracion_amd.html │ ├── editar_destino_personalizado.html │ ├── editar_esquema_grabacion.html │ ├── editar_identificacion_cliente.html │ ├── editar_ivr.html │ ├── editar_validacion_fecha_hora.html │ ├── eliminar_destino_personalizado.html │ ├── eliminar_identificador_cliente.html │ ├── eliminar_ivr.html │ ├── eliminar_validacion_fecha_hora.html │ ├── identificacion_cliente.html │ ├── ivr.html │ ├── ivr_fields.html │ ├── lista_destino_personalizados.html │ ├── lista_grupos_horarios.html │ ├── lista_identificador_cliente.html │ ├── lista_ivrs.html │ ├── lista_rutas_entrantes.html │ ├── lista_rutas_salientes.html │ ├── lista_troncal_sip.html │ ├── lista_validaciones_fecha_hora.html │ ├── playlist │ │ ├── crear_playlist.html │ │ ├── editar_playlist.html │ │ ├── eliminar_playlist.html │ │ └── lista_playlists.html │ └── validacion_fecha_hora.html ├── tests │ ├── __init__.py │ ├── factories.py │ ├── tests_restriccion_eliminacion.py │ ├── tests_rutas_entrantes.py │ ├── tests_sincronizadores.py │ └── utiles.py ├── urls.py └── views │ ├── __init__.py │ ├── audio.py │ ├── base.py │ └── opciones_avanzadas.py ├── coverage.sh ├── manage.py ├── notification_app ├── __init__.py ├── apps.py ├── consumers.py ├── locale │ ├── en │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── es │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ └── django.po │ └── pt_BR │ │ └── LC_MESSAGES │ │ └── django.po ├── message │ ├── __init__.py │ ├── apps.py │ ├── emsg.py │ ├── jinja2 │ │ └── message │ │ │ └── emsg │ │ │ ├── _base.html.j2 │ │ │ ├── _base.text.j2 │ │ │ ├── detail.html.j2 │ │ │ ├── list.html.j2 │ │ │ ├── user.created │ │ │ ├── body.html.j2 │ │ │ ├── body.text.j2 │ │ │ ├── schema.yaml.j2 │ │ │ └── subject.text.j2 │ │ │ └── user.password-updated │ │ │ ├── body.html.j2 │ │ │ ├── body.text.j2 │ │ │ ├── schema.yaml.j2 │ │ │ └── subject.text.j2 │ ├── urls.py │ └── views.py ├── migrations │ └── __init__.py ├── notification.py └── routing.py ├── ominicontacto ├── __init__.py ├── asgi.py ├── settings │ ├── __init__.py │ ├── addons.py │ ├── checks.py │ ├── defaults.py │ ├── develop.py │ ├── gitlab.py │ ├── oml_settings_local.py │ ├── omnileads.py │ ├── production.py │ └── tests.py ├── urls.py └── wsgi.py ├── ominicontacto_app ├── __init__.py ├── admin.py ├── apps.py ├── asterisk_config.py ├── asterisk_config_generador_de_partes.py ├── bgtasks │ ├── __init__.py │ ├── consumers.py │ └── mixins.py ├── context_processors.py ├── errors.py ├── forms │ ├── __init__.py │ ├── audio.py │ └── base.py ├── import_export.py ├── locale │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ └── pt_BR │ │ └── LC_MESSAGES │ │ ├── django.po │ │ └── djangojs.po ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ ├── actualizar_campanas_preview.py │ │ ├── actualizar_datos_agente_en_contacto.py │ │ ├── actualizar_metadata_dia_actual.py │ │ ├── actualizar_permisos.py │ │ ├── adicionar_perfil_supervisor_admin.py │ │ ├── cambiar_admin_password.py │ │ ├── crear_grabaciones.py │ │ ├── desactivar_autenticacion_externa.py │ │ ├── inicializar_entorno.py │ │ ├── logout_unavailable_agents.py │ │ ├── regenerar_asterisk.py │ │ ├── sincronizar_wombat.py │ │ └── verificar_permisos_en_urls.py ├── middleware │ ├── __init__.py │ └── permiso_oml.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_calificacion_especial_reagenda.py │ ├── 0003_queue_dial_timeout.py │ ├── 0004_contacto_es_originario.py │ ├── 0005_agenteencontacto_es_originario.py │ ├── 0006_queue_destino.py │ ├── 0007_campana_mostrar_nombre.py │ ├── 0008_formulario_oculto.py │ ├── 0009_auto_20190115_1559.py │ ├── 0010_auto_20190117_1421.py │ ├── 0011_sitio_externo.py │ ├── 0012_parametroscrm.py │ ├── 0013_add_callid_calificacion.py │ ├── 0014_renombra_uid_modelos_grabacion.py │ ├── 0015_rename_metadatacliente_respuestaformulariogestion.py │ ├── 0016_respuestaformulariogestion_calificacion.py │ ├── 0017_respuestaformulariogestion_completar_calificaciones.py │ ├── 0018_respuestaforumariogestion_calificacion_not_null.py │ ├── 0019_add_opcioncalificacion_formulario.py │ ├── 0020_remove_campana_formulario.py │ ├── 0021_sistemaexterno.py │ ├── 0022_contacto_id_externo.py │ ├── 0023_agente_en_sistema_externo.py │ ├── 0024_add_campana_sistema_externo.py │ ├── 0025_sitio_externo.py │ ├── 0026_delete_userapicrm.py │ ├── 0027_renombre_grupos_repetidos.py │ ├── 0028_grupo_verbose.py │ ├── 0029_delete_duracion_llamada.py │ ├── 0030_renombra_BD_repetidos.py │ ├── 0031_elimina_campo_gestion_campana.py │ ├── 0032_cliente_webphone.py │ ├── 0033_elimina_campo_es_venta.py │ ├── 0034_auto_20200120_1816.py │ ├── 0035_auto_20191203_1018.py │ ├── 0036_auto_20191204_0947.py │ ├── 0037_adiciona_campo_announce_holdtime.py │ ├── 0038_queue_ivr_breakdown.py │ ├── 0039_queue_announce_position.py │ ├── 0040_elimina_modulo.py │ ├── 0041_queue_musiconhold_playlist.py │ ├── 0042_corregir_campos_bd_contacto.py │ ├── 0043_elimina_autopause_autopausebusy.py │ ├── 0044_agente_en_contacto_orden.py │ ├── 0045_datos_iniciales_orden_agente_en_contacto.py │ ├── 0046_campana_campo_desactivacion.py │ ├── 0047_delete_autopause_autoattendics.py │ ├── 0048_campana_campos_de_restriccion.py │ ├── 0049_add_campana_outcid_outr.py │ ├── 0050_queue_wait_announce_frequency.py │ ├── 0051_tamano_campana_campos_restriccion.py │ ├── 0052_editar_outcid.py │ ├── 0053_elimina_ringall_queue.py │ ├── 0054_crear_roles_predefinidos.py │ ├── 0055_auditoriacalificacion.py │ ├── 0056_adiciona_campo_modified_calificacion.py │ ├── 0057_inicializa_campo_modified.py │ ├── 0058_valores_constance_redis_a_database.py │ ├── 0059_auditoriacalificacion_revisada.py │ ├── 0060_delete_agenda.py │ ├── 0061_indice_calificacioncliente_fecha.py │ ├── 0062_rename_backlist.py │ ├── 0063_grupo_obligar_calificacion.py │ ├── 0064_opcioncalificacion_ocultar.py │ ├── 0065_cambio_valor_setting_key_server.py │ ├── 0066_adiciona_indices_pendientes.py │ ├── 0067_delete_grabacion.py │ ├── 0068_videocall_habilitada.py │ ├── 0069_regla_incidencia_por_calificacion.py │ ├── 0070_parametroscrm_dialplan_type_option.py │ ├── 0071_auto_20210105_1551.py │ ├── 0072_queue_audio_previo_conexion_llamada.py │ ├── 0073_configuraciondeagentesdecampana.py │ ├── 0074_grupo_call_off_camp.py │ ├── 0075_historicalrespuestaformulariogestion.py │ ├── 0076_contactolistarapida_listasrapidas.py │ ├── 0077_adiciona_speech_campana.py │ ├── 0078_adiciona_acceso_grabaciones_agente_grupo.py │ ├── 0079_adiciona_acceso_dashboard_agente_grupo.py │ ├── 0080_adiciona_positiva_opcion_calificacion.py │ ├── 0081_adiciona_on_hold_grupo.py │ ├── 0082_grupo_limitar_agendas_personales.py │ ├── 0083_grupo_limitar_agendas_personales_en_dias.py │ ├── 0084_grupo_obligar_despausa.py │ ├── 0085_auto_20220203_1445.py │ ├── 0086_grupo_show_console_timers.py │ ├── 0087_grupo_menu_de_opciones.py │ ├── 0088_opcioncalificacion_interaccion_crm.py │ ├── 0089_campana_campo_direccion.py │ ├── 0090_campana_mostrar_did_nombre_ruta_entrante.py │ ├── 0091_calificacioncliente_tipo_agenda.py │ ├── 0092_conjuntos_de_pausas_config.py │ ├── 0093_campana_control_de_duplicados.py │ ├── 0094_campana_prioridad.py │ ├── 0095_sitio_externo_actualizar_validaciones.py │ ├── 0096_agenteensistemaexterno_related_names.py │ ├── 0097_historicalrespuestaformulario_index.py │ ├── 0098_autenticacion_sitio_externo.py │ ├── 0099_campana_campos_bd_obligatorios.py │ ├── 0100_queue_ivr_breakdown_on_delete.py │ ├── 0101_historicalcalificacioncliente_index.py │ ├── 0102_autenticacion_externa_usuario.py │ ├── 0103_whatsapp_configuracion_y_canalidad.py │ ├── 0104_django_upgrades_compatibility.py │ ├── 0105_queue_strategy_ringall.py │ ├── 0106_restringir_llamadas_manuales.py │ ├── 0107_add_tipo_numero_fieldformulario.py │ ├── 0108_add_sitio_externo_fieldformulario.py │ ├── 0109_auto_20250224_1237.py │ ├── 0110_add_telefono_agendacontacto.py │ └── __init__.py ├── models.py ├── parser.py ├── permisos.py ├── services │ ├── __init__.py │ ├── agent │ │ ├── __init__.py │ │ └── presence.py │ ├── asterisk │ │ ├── __init__.py │ │ ├── agent_activity.py │ │ ├── asterisk_ami.py │ │ ├── playlist.py │ │ ├── redis_database.py │ │ ├── regeneracion_asterisk.py │ │ ├── supervisor_activity.py │ │ └── trunk_status.py │ ├── asterisk_service.py │ ├── audio_conversor.py │ ├── authentication │ │ ├── __init__.py │ │ └── ldap.py │ ├── base_de_datos_contactos.py │ ├── black_list.py │ ├── campana_service.py │ ├── campos_formulario.py │ ├── click2call.py │ ├── creacion_queue.py │ ├── estadisticas_campana.py │ ├── exportar_base_datos.py │ ├── grabaciones │ │ └── generacion_zip_grabaciones.py │ ├── kamailio_service.py │ ├── lista_rapida.py │ ├── queue_member_service.py │ ├── redis │ │ ├── call_contact_cache.py │ │ ├── connection.py │ │ └── redis_streams.py │ ├── reporte_agente.py │ ├── reporte_agente_calificacion.py │ ├── reporte_agente_venta.py │ ├── reporte_auditoria_csv.py │ ├── reporte_campana_calificacion.py │ ├── reporte_campana_csv.py │ ├── reporte_campana_pdf.py │ ├── reporte_respuestas_formulario.py │ ├── reporte_resultados_de_base.py │ ├── reporte_resultados_de_base_csv.py │ ├── sistema_externo │ │ ├── __init__.py │ │ └── interaccion_sistema_externo.py │ ├── tts │ │ └── generador.py │ ├── wombat_config.py │ └── wombat_service.py ├── static │ ├── CSS │ │ ├── ext │ │ │ ├── buttons.bootstrap4.min.css │ │ │ ├── buttons.dataTables-1.6.1.min.css │ │ │ ├── jquery.dataTables-1.10.20.min.css │ │ │ └── sweetalert2.min.css │ │ └── fixed-grid.css │ ├── JS │ │ └── ext │ │ │ ├── buttons.bootstrap4.min.js │ │ │ ├── buttons.flash-1.6.1.min.js │ │ │ ├── buttons.html5-1.6.1.min.js │ │ │ ├── dataTables.buttons-1.6.1.min.js │ │ │ ├── dataTables.select.min.js │ │ │ ├── echarts.js │ │ │ ├── jitsi_external_api.js │ │ │ ├── jquery.dataTables-1.10.20.min.js │ │ │ ├── mustache-4.0.1.min.js │ │ │ ├── reconnecting-websocket-iife.js │ │ │ ├── reconnecting-websocket-iife.min.js │ │ │ ├── sweetalert2.min.js │ │ │ ├── vue-echarts@4.0.2.js │ │ │ ├── vue.js │ │ │ ├── vue.min.js │ │ │ └── vuetify.js │ ├── bootstrap-3.3.6 │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ ├── bootstrap.min.css.map │ │ │ └── font-awesome.min.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── fontawesome-webfont.woff2 │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ ├── bootstrap-4.0.0 │ │ ├── css │ │ │ └── bootstrap.min.css │ │ └── js │ │ │ └── bootstrap.bundle.min.js │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── KFOnCniXp96aw8g99URvBg88.woff2 │ │ ├── KFOnCniXp96aw8g99UVvBg88.woff2 │ │ ├── KFOnCniXp96aw8g99UtvBg.woff2 │ │ ├── KFOoCniXp96ayzQe4HRO.woff2 │ │ ├── KFOoCniXp96ayzUe4HRO.woff2 │ │ ├── KFOoCniXp96ayzse4A.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ ├── fa-solid-900.woff2 │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── icomoon.eot │ │ ├── icomoon.svg │ │ ├── icomoon.ttf │ │ ├── icomoon.woff │ │ ├── oml-agent.eot │ │ ├── oml-agent.svg │ │ ├── oml-agent.ttf │ │ ├── oml-agent.woff │ │ ├── oml-icons │ │ ├── oml-icons.svg │ │ ├── oml-icons.ttf │ │ └── oml-icons.woff │ ├── jquery-2.2.4.min.js │ └── ominicontacto │ │ ├── CSS │ │ ├── admin.css │ │ ├── agente-contactos.css │ │ ├── agentes-externos.css │ │ ├── auditoria.css │ │ ├── dashboard.css │ │ ├── ext │ │ │ ├── bootstrap-datetimepicker.min.css │ │ │ ├── daterangepicker.css │ │ │ ├── fa-regular.css │ │ │ ├── fa-solid.css │ │ │ ├── fontawesome.css │ │ │ ├── google-font.css │ │ │ ├── jquery.dataTables.min.css │ │ │ ├── jquery.growl.css │ │ │ ├── select.dataTables.min.css │ │ │ ├── select2.min.css │ │ │ └── simplex.bootstrap.min.css │ │ ├── formulario.css │ │ ├── formulario_contacto.css │ │ ├── googlemap.css │ │ ├── grabaciones.css │ │ ├── images │ │ │ ├── sort_asc.png │ │ │ ├── sort_both.png │ │ │ └── sort_desc.png │ │ ├── listado_calificaciones.css │ │ ├── main.css │ │ ├── oml-agent.css │ │ ├── oml-icons.css │ │ ├── opcion-calificacion.css │ │ ├── phone.css │ │ ├── reservar-liberar-contactos-preview.css │ │ └── webchat.css │ │ ├── Img │ │ ├── Ampliar.png │ │ ├── Phone Flat Icons_590.jpg │ │ ├── calendar3-3.png │ │ ├── calendar3-4.png │ │ ├── calendar3.png │ │ ├── email.png │ │ ├── emailTransp.png │ │ ├── favicon.png │ │ ├── fbchat.png │ │ ├── fbchatTransp.png │ │ ├── fts.png │ │ ├── greendot.png │ │ ├── greydot.png │ │ ├── ic_logo.png │ │ ├── ic_logo_full.png │ │ ├── ic_logo_symbol.png │ │ ├── images.png │ │ ├── imgpsh_fullsize.png │ │ ├── incomingCall.png │ │ ├── logo_symbol.png │ │ ├── lostCall.png │ │ ├── omnileads_logo.png │ │ ├── outgoingCall.png │ │ ├── record-off.svg │ │ ├── record-on.svg │ │ ├── redcross.png │ │ ├── reddot.png │ │ ├── redial.png │ │ ├── reload_green.png │ │ ├── smsTransp.png │ │ ├── webCallTransp.png │ │ ├── webChat.png │ │ ├── webChatTransp.png │ │ └── yellowdot.png │ │ ├── JS │ │ ├── Calendar.js │ │ ├── JQueryWebChat.js │ │ ├── adicionarGruposAgentes.js │ │ ├── agenda_datetime.js │ │ ├── agente │ │ │ ├── Timers.js │ │ │ ├── agenda_agente.js │ │ │ ├── agendas_notifications.js │ │ │ ├── busqueda_grabacion_ex │ │ │ │ └── index.js │ │ │ ├── click2Call.js │ │ │ ├── formularioCalificacion.js │ │ │ ├── googlemap.js │ │ │ ├── interaccionSitioExterno.js │ │ │ ├── main.js │ │ │ ├── make_click2call.js │ │ │ ├── notifications.js │ │ │ ├── omlAPI.js │ │ │ ├── pauseTimer.js │ │ │ ├── phoneJsController.js │ │ │ ├── phoneJsFSM.js │ │ │ ├── phoneJsSip.js │ │ │ ├── phoneJsView.js │ │ │ ├── revisionAuditoria.js │ │ │ └── whatsapp_modals.js │ │ ├── base_datos_contacto.js │ │ ├── base_datos_contacto_ocultos.js │ │ ├── blacklist.js │ │ ├── busqueda_auditorias.js │ │ ├── busqueda_grabacion_ex │ │ │ └── index.js │ │ ├── campanas │ │ │ ├── adicionar_agentes_base.js │ │ │ ├── adicionar_supervisores_base.js │ │ │ ├── base_de_contactos.js │ │ │ ├── bloquear_campos_para_agente.js │ │ │ ├── campana_dialer │ │ │ │ ├── actuacion_vigente_campana.js │ │ │ │ ├── campana_list.js │ │ │ │ ├── create_update_queue.js │ │ │ │ ├── nueva_edita_campana.js │ │ │ │ └── reglas_incidencia.js │ │ │ ├── campana_entrante │ │ │ │ ├── campana_list.js │ │ │ │ ├── llamadas_activas.js │ │ │ │ └── tiempos_llamadas.js │ │ │ ├── campana_manual │ │ │ │ └── campana_list_base.js │ │ │ ├── campana_preview │ │ │ │ ├── asignacion_inicial_contactos.js │ │ │ │ ├── campana_list.js │ │ │ │ └── contactos_asignados.js │ │ │ ├── configuracion_de_agentes_de_campana.js │ │ │ ├── datatables.js │ │ │ ├── formularioNuevaEditaCampana.js │ │ │ ├── opcion_calificacion_base.js │ │ │ └── parametro_crm_sitio_externo_base.js │ │ ├── campanasPreviewAgente.js │ │ ├── campoDireccion.js │ │ ├── componentes │ │ │ ├── core.js │ │ │ ├── estadisticas.js │ │ │ └── graficos.js │ │ ├── config.js │ │ ├── config_datetimepicker.js │ │ ├── constantes.js │ │ ├── contactosList.js │ │ ├── csrf.js │ │ ├── dashboardAgentes.js │ │ ├── destino-personalizado.js │ │ ├── djangoStyle.js │ │ ├── ext │ │ │ ├── autobahn.min.js │ │ │ ├── bootstrap-datetimepicker.min.js │ │ │ ├── bootstrap.min.js │ │ │ ├── daterangepicker.js │ │ │ ├── html5shiv-3.7.0.js │ │ │ ├── jquery.dataTables.min.js │ │ │ ├── jquery.formset.js │ │ │ ├── jquery.growl.js │ │ │ ├── jssip.js │ │ │ ├── jssip.min.js │ │ │ ├── moment-with-locales.min.js │ │ │ ├── moment.min.js │ │ │ ├── pygal-tooltips.js │ │ │ ├── pygal-tooltips.min.js │ │ │ ├── require.js │ │ │ ├── respond-1.4.2.min.js │ │ │ ├── select2.min.js │ │ │ ├── socket.io.js │ │ │ ├── state-machine-min.js │ │ │ └── svg.jquery.js │ │ ├── facebookMessenger.js │ │ ├── formulario │ │ │ ├── formulario_preview.js │ │ │ └── respuesta_formulario_create.js │ │ ├── grupos │ │ │ └── grupo_list.js │ │ ├── idioma.js │ │ ├── interaccion.js │ │ ├── l18n_constantes.js │ │ ├── nueva_edita_base_datos_contacto.js │ │ ├── ordenar_asignacion_contactos.js │ │ ├── ranges-datepicker.js │ │ ├── resend-key.js │ │ ├── seleccionContactosPreview.js │ │ ├── supervision │ │ │ ├── agent_create.js │ │ │ ├── agente_profile_list.js │ │ │ ├── formularioSitioExterno.js │ │ │ ├── grupo.js │ │ │ ├── nuevo_edita_archivo_audio.js │ │ │ ├── omlAPI.js │ │ │ ├── reasignarAgendas.js │ │ │ ├── register_server.js │ │ │ ├── reporte_calificaciones_campana.js │ │ │ ├── userCreateForm.js │ │ │ └── userRoleManagement.js │ │ ├── textMessages.js │ │ ├── utiles.js │ │ ├── vue │ │ │ └── grabaciones.js │ │ └── whatsapp_notifications.js │ │ ├── SCSS │ │ ├── _variables.scss │ │ ├── admin.scss │ │ ├── auditoria.scss │ │ ├── formulario.scss │ │ └── main.scss │ │ ├── ejemplo_blacklist.csv │ │ ├── ejemplo_lista_rapida.csv │ │ ├── example-db.csv │ │ ├── ring │ │ ├── Atria.ogg │ │ ├── Canis Major.ogg │ │ ├── Cassiopeia.ogg │ │ ├── Kuma.mp3 │ │ ├── Kuma.ogg │ │ ├── busy.mp3 │ │ ├── busy.ogg │ │ ├── sonidoentrante.mp3 │ │ ├── tonoallamar.back.mp3 │ │ ├── tonoallamar.back.ogg │ │ ├── tonoallamar.mp3 │ │ ├── tonoallamar.ogg │ │ ├── welcome.mp3 │ │ └── welcome.ogg │ │ └── stylesheets │ │ ├── miCss.css │ │ └── style.css ├── template_backends_jinja2.py ├── templates │ ├── 400.html │ ├── 403.html │ ├── 404.html │ ├── 500.html │ ├── acerca │ │ └── acerca.html │ ├── addons.html │ ├── agenda_contacto │ │ ├── agenda_agente.html │ │ ├── listar_agendas_campana.html │ │ └── update_agenda_contacto.html │ ├── agente │ │ ├── agenda_agente.html │ │ ├── base_agente.html │ │ ├── campanas_preview.html │ │ ├── contacto_create_update_form.html │ │ ├── contacto_list.html │ │ ├── contactos_content.html │ │ ├── contactos_telefonos_repetidos.html │ │ ├── dashboard.html │ │ ├── espera_llamada_multinum.html │ │ ├── frame │ │ │ ├── agenda_contacto │ │ │ │ ├── agenda_detalle.html │ │ │ │ └── create_agenda_contacto.html │ │ │ ├── base_frame.html │ │ │ └── busqueda_grabacion_ex │ │ │ │ ├── _pagination.html │ │ │ │ ├── _table-body.html │ │ │ │ └── index.html │ │ ├── historico_llamadas_del_dia.html │ │ ├── identificar_contacto.html │ │ ├── modals │ │ │ └── whatsapp │ │ │ │ ├── contact_form.html │ │ │ │ ├── conversation_new.html │ │ │ │ ├── disposition_form.html │ │ │ │ ├── index.html │ │ │ │ ├── media_file_form.html │ │ │ │ ├── media_image_form.html │ │ │ │ ├── transfer_chat.html │ │ │ │ └── whatsapp_templates.html │ │ ├── reporte_agente_calificaciones.html │ │ └── update_agent_password.html │ ├── archivo_audio │ │ ├── elimina_archivo_audio.html │ │ ├── lista_archivo_audio.html │ │ └── nuevo_edita_archivo_audio.html │ ├── auditoria │ │ ├── crear_editar_auditoria.html │ │ └── seguridad_auditoria.html │ ├── autenticacion_externa.html │ ├── base.html │ ├── base_create_update_form.html │ ├── base_datos_contacto │ │ ├── base_datos_ocultas.html │ │ ├── contacto_list_bd_contacto.html │ │ ├── define_base_datos_contacto.html │ │ ├── delete_contacto.html │ │ ├── eliminar_base_datos_contacto.html │ │ ├── lista_base_datos_contacto.html │ │ └── nueva_edita_base_datos_contacto.html │ ├── base_form_fields.html │ ├── black_list │ │ ├── black_list.html │ │ ├── contactos │ │ │ └── new.html │ │ ├── delete_black_list.html │ │ └── nueva_edita_black_list.html │ ├── blanco.html │ ├── busqueda_auditorias.html │ ├── busqueda_grabacion_ex │ │ ├── _calificaciones.html │ │ ├── _pagination.html │ │ ├── _table-body.html │ │ └── index.html │ ├── calificacion │ │ └── calificacion_list.html │ ├── cambiar_idioma.html │ ├── campanas │ │ ├── adicionar_agentes_base.html │ │ ├── adicionar_supervisores_base.html │ │ ├── bloquear_campos_para_agente.html │ │ ├── campana_dialer │ │ │ ├── actuacion_vigente_campana.html │ │ │ ├── adicionar_agentes.html │ │ │ ├── adicionar_supervisores.html │ │ │ ├── cambiar_base.html │ │ │ ├── campana_list.html │ │ │ ├── campana_supervisors.html │ │ │ ├── campanas_borradas.html │ │ │ ├── configuracion_whatsapp.html │ │ │ ├── create_update_queue.html │ │ │ ├── delete_campana.html │ │ │ ├── detalle.html │ │ │ ├── detalle_campana.html │ │ │ ├── elimina_actuacion_campana.html │ │ │ ├── lista_template.html │ │ │ ├── nueva_edita_campana.html │ │ │ ├── opcion_calificacion.html │ │ │ ├── parametros_crm_sitio_externo.html │ │ │ ├── reglas_incidencia.html │ │ │ ├── reglas_incidencia_calificacion_delete.html │ │ │ ├── reglas_incidencia_calificacion_list.html │ │ │ ├── sincronizar_lista.html │ │ │ └── template_detalle.html │ │ ├── campana_entrante │ │ │ ├── adicionar_agentes.html │ │ │ ├── adicionar_supervisores.html │ │ │ ├── campana_list.html │ │ │ ├── campanas_borradas.html │ │ │ ├── configuracion_whatsapp.html │ │ │ ├── create_update_queue.html │ │ │ ├── delete_campana.html │ │ │ ├── delete_campana_template.html │ │ │ ├── detalle_campana.html │ │ │ ├── detalle_campana_template.html │ │ │ ├── lista_template.html │ │ │ ├── llamadas_activas.html │ │ │ ├── nueva_edita_campana.html │ │ │ ├── opcion_calificacion.html │ │ │ ├── parametros_crm_sitio_externo.html │ │ │ └── tiempos_llamadas.html │ │ ├── campana_manual │ │ │ ├── adicionar_agentes.html │ │ │ ├── adicionar_supervisores.html │ │ │ ├── campana_list.html │ │ │ ├── campana_list_base.html │ │ │ ├── campanas_borradas.html │ │ │ ├── configuracion_whatsapp.html │ │ │ ├── create_update_queue.html │ │ │ ├── delete_campana.html │ │ │ ├── delete_campana_template.html │ │ │ ├── detalle_campana_template.html │ │ │ ├── lista_template.html │ │ │ ├── nueva_edita_campana.html │ │ │ ├── opcion_calificacion.html │ │ │ └── parametros_crm_sitio_externo.html │ │ ├── campana_preview │ │ │ ├── adicionar_agentes.html │ │ │ ├── adicionar_supervisores.html │ │ │ ├── asignar_contactos.html │ │ │ ├── campana_list.html │ │ │ ├── campana_preview.html │ │ │ ├── campana_preview_update.html │ │ │ ├── campanas_borradas.html │ │ │ ├── configuracion_whatsapp.html │ │ │ ├── contactos_asignados.html │ │ │ ├── delete_campana.html │ │ │ ├── delete_campana_template.html │ │ │ ├── detalle.html │ │ │ ├── detalle_campana_template.html │ │ │ ├── detalle_express.html │ │ │ ├── lista_template.html │ │ │ ├── opcion_calificacion.html │ │ │ ├── ordenar_asignacion_contactos.html │ │ │ └── parametros_crm_sitio_externo.html │ │ ├── configuracion_de_agentes_de_campana.html │ │ ├── configuracion_whatsapp.html │ │ ├── opcion_calificacion_base.html │ │ ├── parametro_crm_sitio_externo_base.html │ │ └── wizard_base.html │ ├── config.html │ ├── conjuntos_de_pausas_list.html │ ├── contactos │ │ ├── busqueda_contacto.html │ │ ├── messages_contacto.html │ │ ├── nuevo_contacto_campana.html │ │ └── seleccion_campana_form.html │ ├── formulario │ │ ├── calificacion_create_update_agente.html │ │ ├── calificacion_create_update_supervisor.html │ │ ├── formulario_list.html │ │ ├── formulario_preview.html │ │ ├── respuesta_formulario_detalle.html │ │ ├── respuesta_formulario_gestion_agente.html │ │ ├── respuesta_formulario_gestion_form.html │ │ └── respuesta_formulario_gestion_supervisor.html │ ├── gestor │ │ └── sidebar_gestion.html │ ├── grupo_agentes.html │ ├── historico_calificaciones.html │ ├── lista_rapida │ │ ├── contactos │ │ │ ├── delete.html │ │ │ ├── edit.html │ │ │ ├── index.html │ │ │ └── new.html │ │ ├── define_lista_rapida.html │ │ ├── delete_lista_rapida.html │ │ ├── listas_rapidas.html │ │ └── nueva_edita_lista_rapida.html │ ├── messages.html │ ├── pausa_list.html │ ├── queue │ │ ├── create_update_queue.html │ │ └── queue_member.html │ ├── regenerar_asterisk.html │ ├── registration │ │ └── login.html │ ├── registro.html │ ├── sistema_externo │ │ └── sistema_externo_list.html │ ├── sitio_externo │ │ ├── sitio_externo_autenticacion_list.html │ │ └── sitio_externo_list.html │ ├── user │ │ ├── cliente_webphone_list.html │ │ ├── delete_user.html │ │ ├── force_password_change.html │ │ ├── user_create_form.html │ │ ├── user_create_update_form.html │ │ ├── user_list.html │ │ └── user_role_management.html │ ├── usuarios_grupos │ │ ├── agente_profile_list.html │ │ ├── delete_grupo.html │ │ ├── grupo_create_update.html │ │ ├── grupo_detalle.html │ │ ├── grupo_list.html │ │ └── supervisor_profile_list.html │ └── webui.html ├── templatetags │ ├── __init__.py │ ├── calificacion_grabacion.py │ ├── custom_messages.py │ └── oml_permissions.py ├── tests │ ├── __init__.py │ ├── asterisk │ │ ├── __init__.py │ │ ├── tests_asterisk_database.py │ │ ├── tests_dialplan_queues_creator.py │ │ └── tests_redis_database.py │ ├── commands │ │ ├── __init__.py │ │ └── tests_inicializar_entorno.py │ ├── factories.py │ ├── import_export.py │ ├── services │ │ ├── __init__.py │ │ └── tests_queue_member_service.py │ ├── test_blacklist.py │ ├── test_consola_agente.py │ ├── test_integracion │ │ ├── __init__.py │ │ ├── integracion_metodos.py │ │ ├── test_all.py │ │ ├── tests_acceso_web.py │ │ ├── tests_audio.py │ │ ├── tests_calificacion.py │ │ ├── tests_consola.py │ │ ├── tests_contacto.py │ │ ├── tests_formulario.py │ │ ├── tests_pausas.py │ │ ├── tests_sitio_externo.py │ │ └── tests_usuarios.py │ ├── test_parser.py │ ├── test_predictor_base_datos_contacto.py │ ├── tests_abm_usuarios.py │ ├── tests_agentes_contactos.py │ ├── tests_asterisk_config_generador_de_partes.py │ ├── tests_audio_conversor.py │ ├── tests_auditorias_de_gestiones.py │ ├── tests_base_datos_campana_agregar_contactos.py │ ├── tests_base_datos_contacto.py │ ├── tests_calificacion.py │ ├── tests_campanas.py │ ├── tests_campanas_supervisores.py │ ├── tests_contactos_preview.py │ ├── tests_creacion_base_datos_service.py │ ├── tests_crear_bd_contacto_desde_csv.py │ ├── tests_filtros_auditorias.py │ ├── tests_gestion_de_agendas.py │ ├── tests_grabaciones.py │ ├── tests_limitar_agendas_personales_grupos.py │ ├── tests_login.py │ ├── tests_models.py │ ├── tests_parametros_crm.py │ ├── tests_registro.py │ ├── tests_reglas_de_incidencia_por_calificacion.py │ ├── tests_reporte_calificaciones_agente.py │ ├── tests_utiles.py │ └── utiles.py ├── urls.py ├── utiles.py ├── version.py ├── views │ ├── __init__.py │ ├── autenticacion_externa.py │ ├── base.py │ ├── grupos.py │ └── instancia.py ├── views_agenda_contacto.py ├── views_agente.py ├── views_archivo_de_audio.py ├── views_auditorias.py ├── views_base_de_datos_contacto.py ├── views_black_list.py ├── views_calificacion.py ├── views_calificacion_cliente.py ├── views_campana.py ├── views_campana_creacion.py ├── views_campana_dialer.py ├── views_campana_dialer_creacion.py ├── views_campana_dialer_template.py ├── views_campana_manual.py ├── views_campana_manual_creacion.py ├── views_campana_preview.py ├── views_campana_reportes.py ├── views_contacto.py ├── views_formulario.py ├── views_grabacion.py ├── views_lista_rapida.py ├── views_queue_member.py ├── views_sistema_externo.py ├── views_sitio_externo.py ├── views_sitio_externo_autenticacion.py ├── views_user_profiles.py └── views_utils.py ├── omnileads_ui ├── .browserslistrc ├── .dockerignore ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── cypress.json ├── dockerfile ├── jest.config.js ├── package-lock.json ├── package.json ├── primevue-sass-theme │ ├── README.md │ ├── theme-base │ │ ├── _colors.scss │ │ ├── _common.scss │ │ ├── _components.scss │ │ ├── _mixins.scss │ │ └── components │ │ │ ├── button │ │ │ ├── _button.scss │ │ │ ├── _speeddial.scss │ │ │ └── _splitbutton.scss │ │ │ ├── data │ │ │ ├── _carousel.scss │ │ │ ├── _datatable.scss │ │ │ ├── _dataview.scss │ │ │ ├── _filter.scss │ │ │ ├── _fullcalendar.scss │ │ │ ├── _orderlist.scss │ │ │ ├── _organizationchart.scss │ │ │ ├── _paginator.scss │ │ │ ├── _picklist.scss │ │ │ ├── _timeline.scss │ │ │ ├── _tree.scss │ │ │ └── _treetable.scss │ │ │ ├── file │ │ │ └── _fileupload.scss │ │ │ ├── input │ │ │ ├── _autocomplete.scss │ │ │ ├── _calendar.scss │ │ │ ├── _cascadeselect.scss │ │ │ ├── _checkbox.scss │ │ │ ├── _chips.scss │ │ │ ├── _colorpicker.scss │ │ │ ├── _dropdown.scss │ │ │ ├── _editor.scss │ │ │ ├── _inputgroup.scss │ │ │ ├── _inputnumber.scss │ │ │ ├── _inputswitch.scss │ │ │ ├── _inputtext.scss │ │ │ ├── _listbox.scss │ │ │ ├── _multiselect.scss │ │ │ ├── _password.scss │ │ │ ├── _radiobutton.scss │ │ │ ├── _rating.scss │ │ │ ├── _selectbutton.scss │ │ │ ├── _slider.scss │ │ │ ├── _togglebutton.scss │ │ │ └── _treeselect.scss │ │ │ ├── menu │ │ │ ├── _breadcrumb.scss │ │ │ ├── _contextmenu.scss │ │ │ ├── _dock.scss │ │ │ ├── _megamenu.scss │ │ │ ├── _menu.scss │ │ │ ├── _menubar.scss │ │ │ ├── _panelmenu.scss │ │ │ ├── _steps.scss │ │ │ ├── _tabmenu.scss │ │ │ └── _tieredmenu.scss │ │ │ ├── messages │ │ │ ├── _inlinemessage.scss │ │ │ ├── _message.scss │ │ │ └── _toast.scss │ │ │ ├── misc │ │ │ ├── _avatar.scss │ │ │ ├── _badge.scss │ │ │ ├── _blockui.scss │ │ │ ├── _chip.scss │ │ │ ├── _inplace.scss │ │ │ ├── _progressbar.scss │ │ │ ├── _progressspinner.scss │ │ │ ├── _scrolltop.scss │ │ │ ├── _skeleton.scss │ │ │ ├── _tag.scss │ │ │ └── _terminal.scss │ │ │ ├── multimedia │ │ │ ├── _galleria.scss │ │ │ └── _image.scss │ │ │ ├── overlay │ │ │ ├── _confirmpopup.scss │ │ │ ├── _dialog.scss │ │ │ ├── _overlaypanel.scss │ │ │ ├── _sidebar.scss │ │ │ └── _tooltip.scss │ │ │ └── panel │ │ │ ├── _accordion.scss │ │ │ ├── _card.scss │ │ │ ├── _divider.scss │ │ │ ├── _fieldset.scss │ │ │ ├── _panel.scss │ │ │ ├── _scrollpanel.scss │ │ │ ├── _splitter.scss │ │ │ ├── _tabview.scss │ │ │ └── _toolbar.scss │ └── themes │ │ ├── current │ │ ├── _overrides.scss │ │ ├── _variables.scss │ │ └── theme.scss │ │ └── saga │ │ ├── _extensions.scss │ │ ├── _variables.scss │ │ ├── saga-blue │ │ ├── _extensions.scss │ │ ├── _fonts.scss │ │ ├── _variables.scss │ │ └── theme.scss │ │ ├── saga-dark-pink │ │ ├── _extensions.scss │ │ ├── _fonts.scss │ │ ├── _variables.scss │ │ └── theme.scss │ │ ├── saga-green │ │ ├── _extensions.scss │ │ ├── _fonts.scss │ │ ├── _variables.scss │ │ └── theme.scss │ │ ├── saga-orange │ │ ├── _extensions.scss │ │ ├── _fonts.scss │ │ ├── _variables.scss │ │ └── theme.scss │ │ └── saga-purple │ │ ├── _extensions.scss │ │ ├── _fonts.scss │ │ ├── _variables.scss │ │ └── theme.scss ├── public │ ├── favicon.ico │ ├── index.css │ └── index.html ├── src │ ├── App.vue │ ├── api_urls │ │ ├── agent │ │ │ ├── index.js │ │ │ └── whatsapp │ │ │ │ ├── contact_urls.js │ │ │ │ ├── conversation_urls.js │ │ │ │ ├── disposition_chat_urls.js │ │ │ │ └── transfer_urls.js │ │ └── supervisor │ │ │ ├── add_agents_to_campaign_urls.js │ │ │ ├── call_disposition_urls.js │ │ │ ├── external_site_authentication_urls.js │ │ │ ├── external_site_urls.js │ │ │ ├── external_system_urls.js │ │ │ ├── form_urls.js │ │ │ ├── group_of_hour_urls.js │ │ │ ├── inbound_route_urls.js │ │ │ ├── index.js │ │ │ ├── ivr_urls.js │ │ │ ├── outbound_route_urls.js │ │ │ ├── pause_set_urls.js │ │ │ ├── pause_urls.js │ │ │ ├── register_server_urls.js │ │ │ └── whatsapp │ │ │ ├── configuration_campaign_urls.js │ │ │ ├── group_of_message_template_urls.js │ │ │ ├── line_urls.js │ │ │ ├── message_template_urls.js │ │ │ ├── provider_urls.js │ │ │ ├── reports │ │ │ ├── campaign │ │ │ │ └── conversation_report_urls.js │ │ │ └── general_report_urls.js │ │ │ ├── templates_urls.js │ │ │ └── whatsapp_template_urls.js │ ├── assets │ │ ├── logo.png │ │ └── oml_logo.png │ ├── components │ │ ├── agent │ │ │ └── whatsapp │ │ │ │ ├── contact │ │ │ │ ├── Form.vue │ │ │ │ ├── Header.vue │ │ │ │ ├── ModalNewContact.vue │ │ │ │ └── SearchTable.vue │ │ │ │ ├── conversation │ │ │ │ ├── HeaderConversation.vue │ │ │ │ ├── HeaderMediaUploader.vue │ │ │ │ ├── ListMessages.vue │ │ │ │ ├── Message.vue │ │ │ │ ├── TextBox.vue │ │ │ │ └── new │ │ │ │ │ ├── Form.vue │ │ │ │ │ ├── ModalTemplateParams.vue │ │ │ │ │ └── ParamsForm.vue │ │ │ │ ├── disposition_chat │ │ │ │ ├── Form.vue │ │ │ │ ├── Header.vue │ │ │ │ ├── Historial.vue │ │ │ │ └── Tab.vue │ │ │ │ ├── message_transfer │ │ │ │ ├── Form.vue │ │ │ │ └── Header.vue │ │ │ │ ├── messages │ │ │ │ ├── HeaderMessages.vue │ │ │ │ └── ListMessages.vue │ │ │ │ ├── shared │ │ │ │ ├── ConversationInfo.vue │ │ │ │ └── media │ │ │ │ │ └── MediaUploader.vue │ │ │ │ └── templates │ │ │ │ ├── Header.vue │ │ │ │ ├── ModalTemplateParams.vue │ │ │ │ ├── ParamsForm.vue │ │ │ │ └── Table.vue │ │ └── supervisor │ │ │ ├── audit │ │ │ ├── DataTableAuditSupervisor.vue │ │ │ └── FilterAuditSupervisor.vue │ │ │ ├── call_dispositions │ │ │ ├── FormModal.vue │ │ │ └── ListTable.vue │ │ │ ├── campaigns │ │ │ └── agents │ │ │ │ ├── AddAgents.vue │ │ │ │ ├── AddGroupAgents.vue │ │ │ │ └── AgentsCampaignTable.vue │ │ │ ├── external_site_authentications │ │ │ ├── Form.vue │ │ │ ├── ListTable.vue │ │ │ └── ModalDetail.vue │ │ │ ├── external_sites │ │ │ ├── ExternalSitesTable.vue │ │ │ ├── Form.vue │ │ │ └── ModalDetail.vue │ │ │ ├── external_systems │ │ │ ├── AgentsTable.vue │ │ │ ├── ExternalSystemsTable.vue │ │ │ ├── Form.vue │ │ │ └── ModalToAddAgent.vue │ │ │ ├── forms │ │ │ ├── FormFieldsTable.vue │ │ │ ├── FormSteps.vue │ │ │ ├── FormsTable.vue │ │ │ ├── ModalFormField.vue │ │ │ ├── OptionListForm.vue │ │ │ └── form_steps │ │ │ │ ├── Step1.vue │ │ │ │ ├── Step2.vue │ │ │ │ └── Step3.vue │ │ │ ├── group_of_hours │ │ │ ├── Form.vue │ │ │ ├── GroupOfHoursTable.vue │ │ │ ├── ModalToHandleTimeValidation.vue │ │ │ └── TimeValidationsTable.vue │ │ │ ├── inbound_routes │ │ │ ├── Form.vue │ │ │ └── InboundRoutesTable.vue │ │ │ ├── ivrs │ │ │ ├── DestinationOptionModal.vue │ │ │ ├── DestinationOptionsTable.vue │ │ │ ├── Form.vue │ │ │ ├── IVRsTable.vue │ │ │ └── form │ │ │ │ ├── AudioFile.vue │ │ │ │ └── Destination.vue │ │ │ ├── outbound_routes │ │ │ ├── DialPatternsTable.vue │ │ │ ├── Form.vue │ │ │ ├── ModalOutboundRouteDetail.vue │ │ │ ├── ModalToAddDialPattern.vue │ │ │ ├── ModalToAddTrunk.vue │ │ │ ├── OutboundRoutesTable.vue │ │ │ └── SipTrunksTable.vue │ │ │ ├── pause_sets │ │ │ ├── PauseConfigurationsTable.vue │ │ │ ├── PauseSetsTable.vue │ │ │ └── forms │ │ │ │ ├── EditGroup.vue │ │ │ │ ├── EditPause.vue │ │ │ │ ├── NewConfigPause.vue │ │ │ │ └── NewConfigPauseDetail.vue │ │ │ ├── pauses │ │ │ ├── ModalForm.vue │ │ │ └── PausesTable.vue │ │ │ ├── register_server │ │ │ ├── Form.vue │ │ │ └── Info.vue │ │ │ ├── supervision_dashboard │ │ │ ├── DashboardSupervision.vue │ │ │ ├── DashboardSupervisionDetail.vue │ │ │ └── charts │ │ │ │ ├── CampaingActiveChart.vue │ │ │ │ ├── ContactedCallsChart.vue │ │ │ │ ├── StateAgentsChart.vue │ │ │ │ └── StateAgentsChartLine.vue │ │ │ └── whatsapp │ │ │ ├── group_of_message_templates │ │ │ ├── Form.vue │ │ │ ├── Table.vue │ │ │ └── forms │ │ │ │ ├── Form.vue │ │ │ │ ├── ModalToHandleForm.vue │ │ │ │ └── Table.vue │ │ │ ├── lines │ │ │ ├── FormSteps.vue │ │ │ ├── LinesTable.vue │ │ │ ├── form_steps │ │ │ │ ├── Step1.vue │ │ │ │ ├── Step2.vue │ │ │ │ └── Step3.vue │ │ │ └── options_form │ │ │ │ ├── Form.vue │ │ │ │ ├── FormMenuInteractivo.vue │ │ │ │ ├── ModalNewGroupOfHour.vue │ │ │ │ ├── ModalNewMessageTemplate.vue │ │ │ │ └── ModalToHandleOption.vue │ │ │ ├── message_templates │ │ │ ├── Form.vue │ │ │ ├── MessageTemplatesTable.vue │ │ │ ├── ModalToHandleMessageTemplate.vue │ │ │ └── forms │ │ │ │ ├── Audio.vue │ │ │ │ ├── Contact.vue │ │ │ │ ├── File.vue │ │ │ │ ├── Image.vue │ │ │ │ ├── Sticker.vue │ │ │ │ ├── Text.vue │ │ │ │ └── Video.vue │ │ │ ├── providers │ │ │ ├── Form.vue │ │ │ ├── ModalToHandleProvider.vue │ │ │ └── ProvidersTable.vue │ │ │ ├── reports │ │ │ ├── campaign │ │ │ │ └── conversation_report │ │ │ │ │ ├── ConversationDetail.vue │ │ │ │ │ ├── FilterForm.vue │ │ │ │ │ ├── ModalConversationDetail.vue │ │ │ │ │ └── Table.vue │ │ │ └── general │ │ │ │ ├── Dashboard.vue │ │ │ │ ├── FilterForm.vue │ │ │ │ └── graphics │ │ │ │ ├── Bar.vue │ │ │ │ ├── Doughnut.vue │ │ │ │ ├── Line.vue │ │ │ │ └── PolarArea.vue │ │ │ └── whatsapp_templates │ │ │ └── WhatsappTemplatesTable.vue │ ├── globals │ │ ├── agent │ │ │ ├── index.js │ │ │ └── whatsapp │ │ │ │ ├── disposition.js │ │ │ │ └── index.js │ │ ├── index.js │ │ └── supervisor │ │ │ ├── campaign.js │ │ │ ├── ivr.js │ │ │ └── whatsapp │ │ │ ├── index.js │ │ │ ├── line.js │ │ │ ├── message_template.js │ │ │ └── provider.js │ ├── helpers │ │ ├── index.js │ │ ├── ivr_helper.js │ │ ├── supervisor │ │ │ └── whatsapp │ │ │ │ └── message_template.js │ │ ├── sweet_alerts_helper.js │ │ ├── time_format_helper.js │ │ └── whatsapp_helper.js │ ├── hooks │ │ └── apiCall.js │ ├── locales │ │ ├── forms │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── fa.js │ │ │ └── pt_br.js │ │ ├── globals │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── fa.js │ │ │ └── pt_br.js │ │ ├── index.js │ │ ├── locales.en.js │ │ ├── locales.es.js │ │ ├── locales.fa.js │ │ ├── locales.pt_br.js │ │ ├── models │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── fa.js │ │ │ └── pt_br.js │ │ └── views │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── fa.js │ │ │ └── pt_br.js │ ├── main.js │ ├── router │ │ ├── agent │ │ │ ├── index.js │ │ │ └── whatsapp │ │ │ │ ├── contact_routes.js │ │ │ │ ├── conversation_routes.js │ │ │ │ ├── disposition_chat_routes.js │ │ │ │ ├── index.js │ │ │ │ ├── message_transfer_routes.js │ │ │ │ └── template_routes.js │ │ ├── index.js │ │ └── supervisor │ │ │ ├── add_agents_to_campaign_routes.js │ │ │ ├── audit_routes.js │ │ │ ├── call_disposition_routes.js │ │ │ ├── external_site_authentication_routes.js │ │ │ ├── external_site_routes.js │ │ │ ├── external_system_routes.js │ │ │ ├── form_routes.js │ │ │ ├── group_of_hour_routes.js │ │ │ ├── inbound_route_routes.js │ │ │ ├── index.js │ │ │ ├── ivr_routes.js │ │ │ ├── outbound_route_routes.js │ │ │ ├── pause_routes.js │ │ │ ├── pause_set_routes.js │ │ │ ├── register_server_routes.js │ │ │ ├── supervision_dashboard_routes.js │ │ │ └── whatsapp │ │ │ ├── group_of_message_template_routes.js │ │ │ ├── index.js │ │ │ ├── line_routes.js │ │ │ ├── message_template_routes.js │ │ │ ├── provider_routes.js │ │ │ └── reports │ │ │ ├── campaign │ │ │ ├── conversation_report_routes.js │ │ │ └── index.js │ │ │ ├── general_report_routes.js │ │ │ └── index.js │ ├── services │ │ ├── agent │ │ │ ├── index.js │ │ │ └── whatsapp │ │ │ │ ├── contact_service.js │ │ │ │ ├── conversation_service.js │ │ │ │ ├── disposition_chat_service.js │ │ │ │ └── transfer_service.js │ │ ├── base_service.js │ │ └── supervisor │ │ │ ├── agents_campaign_service.js │ │ │ ├── call_disposition_service.js │ │ │ ├── external_site_authentication_service.js │ │ │ ├── external_site_service.js │ │ │ ├── external_system_service.js │ │ │ ├── form_service.js │ │ │ ├── group_of_hour_service.js │ │ │ ├── inbound_route_service.js │ │ │ ├── ivr_service.js │ │ │ ├── outbound_route_service.js │ │ │ ├── pause_service.js │ │ │ ├── pause_set_service.js │ │ │ ├── register_server_service.js │ │ │ └── whatsapp │ │ │ ├── configuration_campaign_service.js │ │ │ ├── group_of_message_template_service.js │ │ │ ├── line_service.js │ │ │ ├── message_template_service.js │ │ │ ├── provider_service.js │ │ │ ├── reports │ │ │ ├── campaign │ │ │ │ └── conversation_report_service.js │ │ │ └── general_report_service.js │ │ │ ├── templates_service.js │ │ │ └── whatsapp_template_service.js │ ├── store │ │ ├── agent │ │ │ ├── index.js │ │ │ └── whatsapp │ │ │ │ ├── contact │ │ │ │ ├── actions.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ │ │ ├── conversation │ │ │ │ ├── actions.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ │ │ ├── disposition_chat │ │ │ │ ├── actions.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ │ │ ├── index.js │ │ │ │ ├── messages │ │ │ │ ├── actions.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ │ │ ├── templates │ │ │ │ ├── actions.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ │ │ └── transfer_chat │ │ │ │ ├── actions.js │ │ │ │ ├── getters.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ ├── index.js │ │ └── supervisor │ │ │ ├── call_disposition │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── external_site │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── external_site_authentication │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── external_system │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── form │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── group_of_hours │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── inbound_routes │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── index.js │ │ │ ├── ivrs │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── outbound_routes │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── pause │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── pause_set │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── register_server │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ └── whatsapp │ │ │ ├── configuration_campaign │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── group_of_message_templates │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── index.js │ │ │ ├── lines │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── message_templates │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── providers │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ │ ├── reports │ │ │ ├── campaign │ │ │ │ ├── conversation_report │ │ │ │ │ ├── actions.js │ │ │ │ │ ├── mutations.js │ │ │ │ │ └── state.js │ │ │ │ └── index.js │ │ │ ├── general_report │ │ │ │ ├── actions.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ │ └── index.js │ │ │ └── whatsapp_templates │ │ │ ├── actions.js │ │ │ ├── mutations.js │ │ │ └── state.js │ ├── utils │ │ ├── index.js │ │ └── routes_generator.js │ ├── views │ │ ├── agent │ │ │ └── whatsapp │ │ │ │ ├── Index.vue │ │ │ │ ├── contact │ │ │ │ └── Index.vue │ │ │ │ ├── conversation │ │ │ │ ├── FileUploader.vue │ │ │ │ ├── ImageUploader.vue │ │ │ │ ├── Index.vue │ │ │ │ └── New.vue │ │ │ │ ├── disposition_chat │ │ │ │ └── Index.vue │ │ │ │ ├── message_transfer │ │ │ │ └── Index.vue │ │ │ │ └── templates │ │ │ │ └── Index.vue │ │ └── supervisor │ │ │ ├── AddAgentsToCampaign.vue │ │ │ ├── AuditSupervisor.vue │ │ │ ├── DashboardSupervision.vue │ │ │ ├── call_dispositions │ │ │ └── Index.vue │ │ │ ├── external_site_authentications │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── external_sites │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── external_systems │ │ │ ├── Detail.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── forms │ │ │ ├── Detail.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── group_of_hours │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── inbound_routes │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── ivrs │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── outbound_routes │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── pause_sets │ │ │ ├── Detail.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── pauses │ │ │ └── Index.vue │ │ │ ├── register_server │ │ │ └── Index.vue │ │ │ └── whatsapp │ │ │ ├── Index.vue │ │ │ ├── group_of_message_templates │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── lines │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ └── New.vue │ │ │ ├── message_templates │ │ │ └── Index.vue │ │ │ ├── providers │ │ │ └── Index.vue │ │ │ ├── reports │ │ │ ├── campaign │ │ │ │ └── conversation_report │ │ │ │ │ └── Index.vue │ │ │ └── general │ │ │ │ └── Index.vue │ │ │ └── whatsapp_templates │ │ │ └── Index.vue │ └── web_sockets │ │ └── whatsapp_consumer.js ├── tests │ ├── e2e │ │ ├── .eslintrc.js │ │ ├── plugins │ │ │ └── index.js │ │ ├── specs │ │ │ └── test.js │ │ └── support │ │ │ ├── commands.js │ │ │ └── index.js │ └── unit │ │ └── example.spec.js └── vue.config.js ├── orquestador_app ├── __init__.py ├── apps.py ├── core │ ├── __init__.py │ ├── apis_urls.py │ ├── argtype.py │ ├── asyncio.py │ ├── check_expired.py │ ├── check_out_of_time.py │ ├── gupshup_code_error.py │ ├── gupshup_send_menssage.py │ ├── inbound_chat_event_management.py │ ├── media_management.py │ ├── notify_agents.py │ ├── outbound_chat_event_management.py │ └── redis.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── listening_whatsapp_events.py ├── urls.py ├── webhook_gupshup.py └── webhook_meta.py ├── png └── omnileads_logo_1.png ├── reciclado_app ├── __init__.py ├── admin.py ├── apps.py ├── forms.py ├── locale │ ├── en │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── es │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ └── django.po │ └── pt_BR │ │ └── LC_MESSAGES │ │ └── django.po ├── migrations │ └── __init__.py ├── models.py ├── resultado_contactacion.py ├── templates │ └── nuevo_reciclado.html ├── tests │ ├── __init__.py │ ├── test_reciclado_preview.py │ └── tests_reciclado.py ├── urls.py └── views.py ├── reportes_app ├── __init__.py ├── actividad_agente_log.py ├── apps.py ├── archivos_de_reporte │ └── __init__.py ├── forms.py ├── locale │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ └── pt_BR │ │ └── LC_MESSAGES │ │ ├── django.po │ │ └── djangojs.po ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ ├── actualizar_reporte_dia_actual_agentes.py │ │ ├── actualizar_reporte_supervisores.py │ │ ├── actualizar_reportes_llamadas_dialers.py │ │ ├── actualizar_reportes_llamadas_entrantes.py │ │ ├── actualizar_reportes_llamadas_salientes.py │ │ ├── reiniciar_estadisticas_calldata.py │ │ └── simular_llamadas.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_create_queue_log_asterisk.py │ ├── 0003_queue_log_insert_trigger.py │ ├── 0004_llamadalog_archivo_grabacion_length.py │ ├── 0005_queue_log_longitud_campos.py │ ├── 0006_new_llamadalog_indexes.py │ ├── 0007_update_queue_log_insert_trigger.py │ ├── 0008_transferenciaaencuestalog.py │ ├── 0009_actividadagentelog_time_autoadd.py │ ├── 0010_update_queue_log_insert_trigger.py │ ├── 0011_analisissentimiento.py │ └── __init__.py ├── models.py ├── reportes │ ├── __init__.py │ ├── reporte_agente_tiempos.py │ ├── reporte_agente_tiempos_csv.py │ ├── reporte_agentes.py │ ├── reporte_estadisticas_agentes.py │ ├── reporte_llamadas.py │ ├── reporte_llamadas_entrantes.py │ ├── reporte_llamadas_salientes.py │ ├── reporte_llamadas_supervision.py │ ├── reporte_llamados_contactados_csv.py │ ├── reporte_resultados.py │ └── reporte_supervisores.py ├── services │ ├── ccv_thread.py │ ├── redis │ │ └── call_data_generation.py │ └── redis_service.py ├── static │ └── reportes_app │ │ └── JS │ │ ├── reporte_agente.js │ │ ├── reporte_grafico_campana.js │ │ ├── reporte_llamadas.js │ │ ├── reporte_resultados_de_base_campana.js │ │ └── reportes_agentes_tiempos.js ├── templates │ ├── calificaciones_campana.html │ ├── reporte_agente.html │ ├── reporte_de_resultados.html │ ├── reporte_grafico_campana.html │ ├── reporte_llamadas.html │ ├── reportes_agentes_tiempos.html │ ├── tbody_fechas_agentes.html │ └── tbody_pausa_fechas_agentes.html ├── templatetags │ ├── __init__.py │ └── util_tags.py ├── tests │ ├── __init__.py │ ├── services │ │ └── redis │ │ │ └── tests_call_data_generation.py │ ├── tests_reporte_llamadas.py │ ├── tests_reporte_llamadas_entrantes.py │ ├── tests_reporte_llamadas_supervision.py │ ├── tests_reporte_resultados.py │ ├── tests_reportes_agentes_tiempos.py │ ├── tests_reportes_campanas.py │ ├── tests_reportes_dashboard_agentes.py │ ├── tests_utiles.py │ └── utiles.py ├── urls.py ├── utiles.py ├── views.py ├── views_campanas_dialer_reportes.py ├── views_campanas_preview_reportes.py ├── views_reportes.py └── views_reportes_agentes.py ├── requirements └── requirements.txt ├── run_uwsgi.sh ├── slowsql ├── __init__.py └── postgresql │ ├── __init__.py │ └── base.py ├── supervision_app ├── __init__.py ├── admin.py ├── apps.py ├── locale │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ ├── django.po │ │ │ └── djangojs.po │ └── pt_BR │ │ └── LC_MESSAGES │ │ ├── django.po │ │ └── djangojs.po ├── migrations │ └── __init__.py ├── models.py ├── services │ ├── redisgears_action_scripts │ │ ├── prepara_agentes_para_stream_redis.py │ │ ├── prepara_supervision_dialers_para_stream_redis.py │ │ ├── prepara_supervision_entrantes_para_stream_redis.py │ │ ├── prepara_supervision_salientes_para_stream_redis.py │ │ ├── registrar_evento_agente_change.py │ │ ├── registrar_evento_supervision_dialers.py │ │ ├── registrar_evento_supervision_entrantes.py │ │ └── registrar_evento_supervision_salientes.py │ └── redisgears_service.py ├── static │ └── supervision_app │ │ ├── CSS │ │ └── supervision.css │ │ ├── JS │ │ ├── campanas_dialers.js │ │ ├── campanas_entrantes.js │ │ ├── campanas_salientes.js │ │ ├── phoneJsController.js │ │ ├── phoneJsView.js │ │ ├── supervision.js │ │ └── supervision_agentes.js │ │ └── images │ │ ├── sort_asc.png │ │ ├── sort_both.png │ │ └── sort_desc.png ├── templates │ ├── supervision_agentes.html │ ├── supervision_campanas_dialers.html │ ├── supervision_campanas_entrantes.html │ └── supervision_campanas_salientes.html ├── tests.py ├── urls.py └── views.py ├── test ├── base_prueba_multinum.csv ├── base_prueba_multinum2.csv ├── ejemplo_lista_rapida.csv ├── planilla-ejemplo-0.csv ├── planilla-ejemplo-0.xls ├── planilla-ejemplo-1.csv ├── planilla-ejemplo-2.csv ├── planilla-ejemplo-3-headers-con-no-ascii-y-espacios.csv ├── planilla-ejemplo-4.csv ├── planilla-ejemplo-5.csv ├── planilla-ejemplo-6.csv ├── planilla-ejemplo-7-celdas-vacias.csv ├── planilla-ejemplo-8-ultima-celda-vacia.csv └── wavs │ ├── 8k16bitpcm.wav │ ├── audio1.wav │ ├── empty.wav │ └── error_audio.mp3 ├── tests ├── __init__.py └── tests.py ├── utiles_globales.py └── whatsapp_app ├── __init__.py ├── api ├── __init__.py ├── urls.py ├── utils.py └── v1 │ ├── calificacion.py │ ├── campana.py │ ├── configuracion_whatsapp_campana.py │ ├── contacto.py │ ├── conversacion.py │ ├── destino.py │ ├── grupo_plantilla_whatsapp.py │ ├── linea.py │ ├── linea_serializers.py │ ├── mensaje.py │ ├── plantilla_mensaje.py │ ├── proveedor.py │ ├── reporte.py │ ├── template.py │ ├── template_whatsapp.py │ └── transfer.py ├── apps.py ├── locale ├── en │ └── LC_MESSAGES │ │ └── django.po ├── es │ └── LC_MESSAGES │ │ └── django.po └── pt_BR │ └── LC_MESSAGES │ └── django.po ├── management ├── __init__.py └── commands │ ├── __init__.py │ └── cerrar_conversaciones_whatsapp.py ├── migrations ├── 0001_initial.py ├── 0002_alter_configuracionwhatsappcampana_grupo_plantilla_whatsapp.py ├── 0003_conversacionwhatsapp_client_alias.py ├── 0004_alter_mensajewhatsapp_conversation.py ├── 0005_conversacionwhatsapp_conversation_disposition.py ├── 0006_conversacionwhatsapp_error_ex.py ├── 0007_auto_20240412_1133.py ├── 0008_add_mensajewhatsapp_file.py ├── 0009_mensajewhatsapp_fail_reason.py ├── 0010_auto_20241119_1338.py ├── 0011_alter_opcionmenuinteractivowhatsapp.py ├── 0012_add_line_menuinteractivo.py ├── 0013_alter_maxlength_menuinteractivo.py ├── 0014_alter_line_fields.py └── __init__.py ├── mixins ├── __init__.py └── auditable.py ├── models.py ├── services ├── gupshup │ └── linea_gupshup.py └── redis │ └── linea.py ├── templates ├── campaigns │ └── report_conversations.html ├── message_template_groups.html ├── message_templates_configuration.html ├── whatsapp_lines_configuration.html ├── whatsapp_providers_configuration.html └── whatsapp_report_general.html ├── tests ├── __init__.py ├── factories.py ├── tests_views_linea.py ├── tests_views_plantilla_agente.py ├── tests_views_proveedor.py └── tests_views_reporte.py ├── urls.py └── views.py /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | omit = 4 | manage.py 5 | /src/pyst2/asterisk/manager.py 6 | */migrations/* 7 | */tests/* 8 | ominicontacto/settings/* 9 | */tests.py 10 | */tests/tests.py 11 | */__init__.py 12 | 13 | [report] 14 | ignore_errors = True 15 | 16 | [html] 17 | directory = /tmp/oml-coverity -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | ominicontacto_app/static/JS/ext/*.js 2 | omnileads_ui/** -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | ignore = 3 | W503 4 | W504 5 | max-line-length = 100 6 | exclude = 7 | .git, 8 | src/* 9 | ominicontacto/settings/* 10 | ominicontacto_app/asterisk_config_generador_de_partes.py 11 | ominicontacto_app/version.py 12 | configuracion_telefonia_app/migrations/* 13 | ominicontacto_app/migrations/* 14 | reportes_app/migrations/* 15 | oml_settings_local.py 16 | supervision_app/services/redisgears_action_scripts 17 | whatsapp_app/migrations/* 18 | omnileads_ui/* 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | install/docker/devenv/.env 2 | install/docker/devenv/vagrant/.env 3 | install/docker/prodenv/.env 4 | install/onpremise/deploy/vagrant/deploy/host_node/.env 5 | install/onpremise/deploy/ansible/first_boot_installer.sh 6 | install/onpremise/build/builder/.env 7 | install/docker/devenv/media_root 8 | *.vagrant 9 | /docs/_build 10 | .idea/ 11 | *.pyc 12 | *.mo 13 | *~ 14 | /.coverage 15 | atom-sftp-sync.json 16 | deployment-config.json 17 | -------------------------------------------------------------------------------- /.omnileads_version: -------------------------------------------------------------------------------- 1 | 250516.01 2 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pycqa/flake8 3 | rev: 7.1.1 4 | hooks: 5 | - id: flake8 6 | -------------------------------------------------------------------------------- /ReleaseNotes.md: -------------------------------------------------------------------------------- 1 | # Release Notes 2 | 2025-05-15 3 | 4 | ## Added 5 | 6 | No features added in this release 7 | 8 | ## Changed 9 | 10 | - oml-3027 Optimized whatsapp reports 11 | 12 | ## Fixed 13 | 14 | - oml-3026 Fix Whatsapp general report dates filter. 15 | - oml-3031 Fix whatsapp messages style. 16 | - Add global protection for unhandled exception on background-tasks 17 | - Add error handling on search-recordings bgtasks 18 | 19 | ## Removed 20 | 21 | No removals in this release. 22 | -------------------------------------------------------------------------------- /api_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/__init__.py -------------------------------------------------------------------------------- /api_app/admin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/admin.py -------------------------------------------------------------------------------- /api_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/migrations/__init__.py -------------------------------------------------------------------------------- /api_app/serializers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/serializers/__init__.py -------------------------------------------------------------------------------- /api_app/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/tests/__init__.py -------------------------------------------------------------------------------- /api_app/tests/campaign/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/tests/campaign/__init__.py -------------------------------------------------------------------------------- /api_app/tests/campaign/agents/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/tests/campaign/agents/__init__.py -------------------------------------------------------------------------------- /api_app/tests/pause_sets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/tests/pause_sets/__init__.py -------------------------------------------------------------------------------- /api_app/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class HttpResponseStatus(str, Enum): 5 | SUCCESS: str = 'SUCCESS' 6 | ERROR: str = 'ERROR' 7 | 8 | 9 | def get_response_data(status=HttpResponseStatus.ERROR, data=None, message=None, errors=None): 10 | return { 11 | 'status': status, 12 | 'data': data, 13 | 'message': message, 14 | 'errors': errors 15 | } 16 | -------------------------------------------------------------------------------- /api_app/views/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/api_app/views/__init__.py -------------------------------------------------------------------------------- /build/docker/ci-images/Dockerfile-callrecs-converter: -------------------------------------------------------------------------------- 1 | # para usarlo individualmente, 'docker pull alejandrozf/docker-stuff:postgres-plpython-template1' 2 | FROM python:3.10.4-slim-bullseye 3 | 4 | ENV LANG en_US.utf8 5 | ENV NOTVISIBLE "in users profile" 6 | 7 | RUN apt update \ 8 | && apt install -y curl sox lame awscli \ 9 | && apt autoremove -y \ 10 | && apt clean -y \ 11 | && apt purge -y \ 12 | && rm -rf /var/lib/apt/lists/* 13 | 14 | COPY converter.sh /usr/local/bin 15 | 16 | CMD [""] 17 | -------------------------------------------------------------------------------- /build/docker/ci-images/Dockerfile-postgres: -------------------------------------------------------------------------------- 1 | # para usarlo individualmente, 'docker pull alejandrozf/docker-stuff:postgres-plpython-template1' 2 | FROM postgres:11 3 | 4 | RUN apt-get update 5 | RUN apt-get -y install python-pip postgresql-plperl-11 6 | 7 | RUN apt-get clean && \ 8 | rm -rf /var/cache/apt/* /var/lib/apt/lists/* 9 | 10 | RUN pip install flake8 11 | 12 | COPY install_language.sh /docker-entrypoint-initdb.d 13 | 14 | ENTRYPOINT ["/docker-entrypoint.sh"] 15 | 16 | EXPOSE 5432 17 | CMD ["postgres"] 18 | -------------------------------------------------------------------------------- /build/docker/ci-images/Readme.md: -------------------------------------------------------------------------------- 1 | For build the Dockerfile-python-flake8 image just do: 2 | 3 | $ cp ../../../requirements/requirements.txt . 4 | 5 | $ docker build -t -f Dockerfile-python-flake8 . -------------------------------------------------------------------------------- /build/docker/ci-images/install_language.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | PGUSER=$POSTGRES_USER psql -d template1 -c "CREATE EXTENSION plperl" 3 | -------------------------------------------------------------------------------- /build/oml_uwsgi.ini: -------------------------------------------------------------------------------- 1 | [uwsgi] 2 | module=ominicontacto.wsgi:application 3 | env=DJANGO_SETTINGS_MODULE=ominicontacto.settings.production 4 | uid=omnileads 5 | gid=omnileads 6 | master=true 7 | enable-threads=true 8 | die-on-term =true 9 | thunder-lock=true 10 | static-map=/static=/opt/omnileads/static 11 | python-path=/opt/omnileads/ominicontacto 12 | harakiri=600 13 | socket-timeout=600 14 | vacuum=false 15 | buffer-size=32768 16 | http-buffer-size=32768 17 | -------------------------------------------------------------------------------- /build/scripts/django_commands.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | COMMAND="python3 ${INSTALL_PREFIX}ominicontacto/manage.py" 4 | 5 | OMNIAPP_USER=${OMNIAPP_USER:-"omnileads"} 6 | OMNIAPP_GROUP=${OMNIAPP_GROUP:-${OMNIAPP_USER}} 7 | 8 | set -e 9 | 10 | echo "Run ********** django commands" 11 | echo "Run django command migrate" 12 | $COMMAND migrate --noinput 13 | $COMMAND createsuperuser --noinput --username=admin --email=admin@example.com || true 14 | echo "Run django command populate_history" 15 | $COMMAND populate_history 16 | echo "Run adicionar_perfil_supervisor_admin" 17 | $COMMAND adicionar_perfil_supervisor_admin 18 | -------------------------------------------------------------------------------- /build/scripts/django_migrations.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | COMMAND="python3 ${INSTALL_PREFIX}ominicontacto/manage.py" 4 | 5 | OMNIAPP_USER=${OMNIAPP_USER:-"omnileads"} 6 | OMNIAPP_GROUP=${OMNIAPP_GROUP:-${OMNIAPP_USER}} 7 | 8 | set -e 9 | 10 | echo "Run django command migrate" 11 | $COMMAND migrate --noinput 12 | echo "Run actualizar_permisos" 13 | $COMMAND actualizar_permisos 14 | -------------------------------------------------------------------------------- /build/scripts/init_cronos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | COMMAND="python3 ${INSTALL_PREFIX}ominicontacto/manage.py" 4 | 5 | if [ ! -f /etc/localtime ]; then 6 | ln -s /usr/share/zoneinfo/$TZ /etc/localtime 7 | fi 8 | 9 | $COMMAND regenerar_asterisk 10 | 11 | chown -R omnileads:omnileads ${INSTALL_PREFIX} 12 | 13 | echo "write crontab omnileads" 14 | touch /var/spool/cron/crontabs/omnileads 15 | cat > /var/spool/cron/crontabs/omnileads << EOF 16 | SHELL=/bin/bash 17 | * * * * * flock -n /opt/omnileads/actualizar_campanas_preview.lock /usr/local/bin/python3 /opt/omnileads/ominicontacto/manage.py actualizar_campanas_preview > /dev/stdout 18 | 0 1 * * * flock -n /opt/omnileads/callrec_converter.lock /opt/omnileads/bin/callrec_converter.sh > /dev/stdout 19 | EOF 20 | 21 | exec crond -b -------------------------------------------------------------------------------- /build/scripts/init_daphne.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | echo "Init OMniLeads Daphne server" 6 | echo "Clean omlcron crontabs" 7 | cat /dev/null > /var/spool/cron/crontabs/root 8 | echo "Iniciando Daphne ASGI" 9 | 10 | if [[ $DJANGO_HOSTNAME == "app" ]]; then 11 | DJANGO_HOSTNAME=0.0.0.0 12 | fi 13 | exec /usr/local/bin/daphne -p ${DAPHNE_PORT} -b ${DJANGO_HOSTNAME} --proxy-headers --verbosity=3 ominicontacto.asgi:application -------------------------------------------------------------------------------- /build/scripts/init_devenv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | COMMAND="python3 ${INSTALL_PREFIX}ominicontacto/manage.py" 4 | 5 | $COMMAND migrate --noinput 6 | $COMMAND createsuperuser --noinput --username=admin --email=admin@example.com || true 7 | $COMMAND populate_history 8 | $COMMAND compilemessages 9 | echo 'yes' | $COMMAND collectstatic 10 | $COMMAND collectstatic_js_reverse 11 | $COMMAND compress --force 12 | 13 | $COMMAND regenerar_asterisk 14 | $COMMAND actualizar_permisos 15 | $COMMAND adicionar_perfil_supervisor_admin 16 | 17 | echo "Iniciando Django Server" 18 | exec $COMMAND runserver 0.0.0.0:8099 -------------------------------------------------------------------------------- /build/scripts/init_worker_bgtasks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | COMMAND="python3 ${INSTALL_PREFIX}ominicontacto/manage.py" 4 | 5 | set -e 6 | 7 | echo "******** OMniLeads Background Tasks Worker ********" 8 | echo "Run django command compilemessages" 9 | $COMMAND compilemessages 10 | 11 | echo "Background Tasks Worker" 12 | exec $COMMAND runworker background-tasks 13 | -------------------------------------------------------------------------------- /configuracion_telefonia_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/__init__.py -------------------------------------------------------------------------------- /configuracion_telefonia_app/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/management/__init__.py -------------------------------------------------------------------------------- /configuracion_telefonia_app/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/management/commands/__init__.py -------------------------------------------------------------------------------- /configuracion_telefonia_app/migrations/0003_attr_hangup_dest_entrante.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2018-11-26 14:17 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('configuracion_telefonia_app', '0002_hangup'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='destinoentrante', 17 | name='tipo', 18 | field=models.PositiveIntegerField(choices=[(1, 'Campa\xf1a entrante'), (2, 'Validaci\xf3n de fecha/hora'), (3, 'IVR'), (5, 'HangUp')]), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /configuracion_telefonia_app/migrations/0009_troncalsip_tecnologia.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-11-13 20:45 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('configuracion_telefonia_app', '0008_adiciona_destino_personalizado'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='troncalsip', 17 | name='tecnologia', 18 | field=models.PositiveIntegerField(choices=[(0, 'chansip'), (1, 'pjsip')], default=0), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /configuracion_telefonia_app/migrations/0013_crea_amdconf_inicial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-01-19 21:10 2 | 3 | from django.db import migrations 4 | 5 | def adicionar_configuracion_inicial_amd(apps, schema_editor): 6 | """ 7 | Adiciona la instancia que guarda la configuración AMD del sistema 8 | """ 9 | AmdConf = apps.get_model("configuracion_telefonia_app", "AmdConf") 10 | 11 | AmdConf.objects.get_or_create(pk=1) 12 | 13 | class Migration(migrations.Migration): 14 | 15 | dependencies = [ 16 | ('configuracion_telefonia_app', '0012_amdconf'), 17 | ] 18 | 19 | operations = [ 20 | migrations.RunPython(adicionar_configuracion_inicial_amd, reverse_code=migrations.RunPython.noop), 21 | ] 22 | -------------------------------------------------------------------------------- /configuracion_telefonia_app/migrations/0017_patrondediscado_prepend_regex.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-10-07 19:54 2 | 3 | import django.core.validators 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('configuracion_telefonia_app', '0016_audiosasteriskconf'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='patrondediscado', 16 | name='prepend', 17 | field=models.CharField( 18 | blank=True, max_length=32, null=True, 19 | validators=[django.core.validators.RegexValidator('^(#|\\d)+$')]), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /configuracion_telefonia_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/migrations/__init__.py -------------------------------------------------------------------------------- /configuracion_telefonia_app/services/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/services/__init__.py -------------------------------------------------------------------------------- /configuracion_telefonia_app/static/configuracion_telefonia_app/CSS/troncales.css: -------------------------------------------------------------------------------- 1 | #template-buttons { 2 | margin-bottom: 5px; 3 | } 4 | -------------------------------------------------------------------------------- /configuracion_telefonia_app/static/configuracion_telefonia_app/img/wait.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/static/configuracion_telefonia_app/img/wait.gif -------------------------------------------------------------------------------- /configuracion_telefonia_app/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/tests/__init__.py -------------------------------------------------------------------------------- /configuracion_telefonia_app/views/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/configuracion_telefonia_app/views/__init__.py -------------------------------------------------------------------------------- /coverage.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | coverage run manage.py test --settings=ominicontacto.settings.tests 4 | coverage html --title="Coverage for Omnileads" 5 | -------------------------------------------------------------------------------- /notification_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/notification_app/__init__.py -------------------------------------------------------------------------------- /notification_app/message/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/notification_app/message/__init__.py -------------------------------------------------------------------------------- /notification_app/message/jinja2/message/emsg/_base.text.j2: -------------------------------------------------------------------------------- 1 | {% block content %}{% endblock %} 2 | 3 | {% block signature %}{% endblock %} 4 | {% block footer %}{% endblock %} 5 | -------------------------------------------------------------------------------- /notification_app/message/jinja2/message/emsg/user.created/body.text.j2: -------------------------------------------------------------------------------- 1 | {% extends "message/emsg/_base.text.j2" %} 2 | 3 | {% block content %} 4 | {{ _("Estimado") }} {{ user.name or user.username }}, 5 | 6 | {{ _("Se ha creado exitosamente su cuenta:") }} 7 | 8 | - {{ _("Nombre de usuario") }}: {{ user.username }} 9 | - {{ _("Contraseña") }}: {{ user.password }} 10 | - {{ _("URL de Acceso") }}: {{ urls["login"] }} 11 | 12 | {{ _("Durante el ingreso, se le pedirá que setee su contraseña nuevamente.") }} 13 | {% endblock %} 14 | 15 | {% block signature %} 16 | {{ _("Cualquier duda, contáctese con su Administrador") }} 17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /notification_app/message/jinja2/message/emsg/user.created/subject.text.j2: -------------------------------------------------------------------------------- 1 | {{ _("Cuenta creada exitosamente") }} 2 | -------------------------------------------------------------------------------- /notification_app/message/jinja2/message/emsg/user.password-updated/body.text.j2: -------------------------------------------------------------------------------- 1 | {% extends "message/emsg/_base.text.j2" %} 2 | 3 | {% block content %} 4 | {{ _("Estimado") }} {{ user.name or user.username }}, 5 | 6 | {{ _("Su password ha sido reseteado exitosamente:") }} 7 | 8 | - {{ _("Nombre de usuario") }}: {{ user.username }} 9 | - {{ _("Contraseña") }}: {{ user.password }} 10 | - {{ _("URL de Acceso") }}: {{ urls["login"] }} 11 | 12 | {{ _("Durante el ingreso, asegúrese de cambiar la contraseña nuevamente.") }} 13 | {% endblock %} 14 | 15 | {% block signature %} 16 | {{ _("Cualquier duda, contáctese con su Administrador") }} 17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /notification_app/message/jinja2/message/emsg/user.password-updated/subject.text.j2: -------------------------------------------------------------------------------- 1 | {{ _("Contraseña actualizada exitosamente") }} 2 | -------------------------------------------------------------------------------- /notification_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/notification_app/migrations/__init__.py -------------------------------------------------------------------------------- /ominicontacto/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/bgtasks/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from .consumers import BackgroundTasksConsumerClient 3 | from .consumers import BackgroundTasksConsumerWorker 4 | 5 | __all__ = [ 6 | "BackgroundTasksConsumerClient", 7 | "BackgroundTasksConsumerWorker", 8 | ] 9 | -------------------------------------------------------------------------------- /ominicontacto_app/forms/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/forms/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/management/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/management/commands/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/middleware/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/middleware/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0003_queue_dial_timeout.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2018-11-12 14:49 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0002_calificacion_especial_reagenda'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='queue', 17 | name='dial_timeout', 18 | field=models.PositiveIntegerField(blank=True, default=25, null=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0004_contacto_es_originario.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2018-11-22 19:06 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0003_queue_dial_timeout'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='contacto', 17 | name='es_originario', 18 | field=models.BooleanField(default=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0005_agenteencontacto_es_originario.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2018-11-23 22:29 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0004_contacto_es_originario'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='agenteencontacto', 17 | name='es_originario', 18 | field=models.BooleanField(default=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0007_campana_mostrar_nombre.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2018-11-29 16:36 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0006_queue_destino'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='campana', 17 | name='mostrar_nombre', 18 | field=models.BooleanField(default=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0008_formulario_oculto.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2018-12-26 17:48 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0007_campana_mostrar_nombre'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='formulario', 17 | name='oculto', 18 | field=models.BooleanField(default=False), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0014_renombra_uid_modelos_grabacion.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-02-19 13:04 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0013_add_callid_calificacion'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RenameField( 16 | model_name='grabacion', 17 | old_name='uid', 18 | new_name='callid', 19 | ), 20 | migrations.RenameField( 21 | model_name='grabacionmarca', 22 | old_name='uid', 23 | new_name='callid', 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0015_rename_metadatacliente_respuestaformulariogestion.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-03-20 19:29 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0014_renombra_uid_modelos_grabacion'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RenameModel('MetadataCliente', 'RespuestaFormularioGestion') 16 | ] 17 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0020_remove_campana_formulario.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-03-20 13:50 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0019_add_opcioncalificacion_formulario'), 12 | ] 13 | 14 | operations = [ 15 | # Por último elimino el campo formulario en el modelo de campaña 16 | migrations.RemoveField( 17 | model_name='campana', 18 | name='formulario', 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0021_sistemaexterno.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-05-03 16:09 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0020_remove_campana_formulario'), 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name='SistemaExterno', 17 | fields=[ 18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 19 | ('nombre', models.CharField(max_length=128, unique=True)), 20 | ], 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0022_contacto_id_externo.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-05-06 20:24 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0021_sistemaexterno'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='contacto', 17 | name='id_externo', 18 | field=models.CharField(max_length=128, null=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0026_delete_userapicrm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-06-06 18:02 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0025_sitio_externo'), 12 | ] 13 | 14 | operations = [ 15 | migrations.DeleteModel( 16 | name='UserApiCrm', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0029_delete_duracion_llamada.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-06-18 20:31 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0028_grupo_verbose'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='duraciondellamada', 17 | name='agente', 18 | ), 19 | migrations.DeleteModel( 20 | name='DuracionDeLlamada', 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0031_elimina_campo_gestion_campana.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-06-27 17:49 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0030_renombra_BD_repetidos'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='campana', 17 | name='gestion', 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0033_elimina_campo_es_venta.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2019-07-01 14:38 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0032_cliente_webphone'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='calificacioncliente', 17 | name='es_venta', 18 | ), 19 | migrations.RemoveField( 20 | model_name='historicalcalificacioncliente', 21 | name='es_venta', 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0036_auto_20191204_0947.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2019-12-04 12:47 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('ominicontacto_app', '0035_auto_20191203_1018'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='actuacionvigente', 16 | name='campana', 17 | field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='ominicontacto_app.Campana'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0037_adiciona_campo_announce_holdtime.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.7 on 2020-01-24 15:54 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('ominicontacto_app', '0036_auto_20191204_0947'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='queue', 17 | name='announce_holdtime', 18 | field=models.CharField(choices=[('yes', 'S\xed'), ('no', 'No'), ('once', 'Una sola vez')], default='no', max_length=128), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0039_queue_announce_position.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-01-30 15:37 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0038_queue_ivr_breakdown'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='queue', 15 | name='announce_position', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0040_elimina_modulo.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-02-14 19:19 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0039_queue_announce_position'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='agenteprofile', 15 | name='modulos', 16 | ), 17 | migrations.DeleteModel( 18 | name='Modulo', 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0043_elimina_autopause_autopausebusy.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-03-19 17:14 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0042_corregir_campos_bd_contacto'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='queue', 15 | name='autopause', 16 | ), 17 | migrations.RemoveField( 18 | model_name='queue', 19 | name='autopausebusy', 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0044_agente_en_contacto_orden.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-04-17 20:59 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0043_elimina_autopause_autopausebusy'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='agenteencontacto', 15 | options={'ordering': ['orden']}, 16 | ), 17 | migrations.AddField( 18 | model_name='agenteencontacto', 19 | name='orden', 20 | field=models.IntegerField(default=1), 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0046_campana_campo_desactivacion.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-04-29 12:57 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0045_datos_iniciales_orden_agente_en_contacto'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='campana', 15 | name='campo_desactivacion', 16 | field=models.CharField(blank=True, max_length=128, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0047_delete_autopause_autoattendics.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-05-05 18:04 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0046_campana_campo_desactivacion'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='grupo', 15 | name='auto_attend_ics', 16 | ), 17 | migrations.RemoveField( 18 | model_name='grupo', 19 | name='auto_pause', 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0048_campana_campos_de_restriccion.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-04-30 19:30 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0047_delete_autopause_autoattendics'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='campana', 15 | name='campos_bd_no_editables', 16 | field=models.CharField(default='', max_length=512), 17 | ), 18 | migrations.AddField( 19 | model_name='campana', 20 | name='campos_bd_ocultos', 21 | field=models.CharField(default='', max_length=512), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0050_queue_wait_announce_frequency.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-05-08 14:30 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0049_add_campana_outcid_outr'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='queue', 15 | name='wait_announce_frequency', 16 | field=models.BigIntegerField(blank=True, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0051_tamano_campana_campos_restriccion.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-05-26 14:37 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0050_queue_wait_announce_frequency'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='campana', 15 | name='campos_bd_no_editables', 16 | field=models.CharField(default='', max_length=2052), 17 | ), 18 | migrations.AlterField( 19 | model_name='campana', 20 | name='campos_bd_ocultos', 21 | field=models.CharField(default='', max_length=2052), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0052_editar_outcid.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-05-21 20:52 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0051_tamano_campana_campos_restriccion'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='campana', 15 | name='outcid', 16 | field=models.CharField(blank=True, max_length=128, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0053_elimina_ringall_queue.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-05-26 17:39 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0052_editar_outcid'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='queue', 15 | name='strategy', 16 | field=models.CharField(choices=[('rrordered', 'Rrordered'), ('leastrecent', 'Leastrecent'), ('fewestcalls', 'Fewestcalls'), ('random', 'Random'), ('rrmemory', 'Rremory')], max_length=128, verbose_name='Estrategia de distribucion'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0059_auditoriacalificacion_revisada.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-06-30 15:18 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0058_valores_constance_redis_a_database'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='auditoriacalificacion', 15 | name='revisada', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0060_delete_agenda.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-07-03 03:31 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0059_auditoriacalificacion_revisada'), 10 | ] 11 | 12 | operations = [ 13 | migrations.DeleteModel( 14 | name='Agenda', 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0061_indice_calificacioncliente_fecha.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-09-07 18:59 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0060_delete_agenda'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='calificacioncliente', 15 | options={}, 16 | ), 17 | migrations.AddIndex( 18 | model_name='calificacioncliente', 19 | index=models.Index(fields=['fecha'], name='ominicontac_fecha_4f98a8_idx'), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0063_grupo_obligar_calificacion.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-10-02 13:45 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0062_rename_backlist'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='grupo', 15 | name='obligar_calificacion', 16 | field=models.BooleanField(default=False, verbose_name='Forzar calificación'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0064_opcioncalificacion_ocultar.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-09-02 14:58 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0063_grupo_obligar_calificacion'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='opcioncalificacion', 15 | name='oculta', 16 | field=models.BooleanField(default=False, verbose_name='Ocultar'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0067_delete_grabacion.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-09-03 12:12 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0066_adiciona_indices_pendientes'), 10 | ] 11 | 12 | operations = [ 13 | migrations.DeleteModel( 14 | name='Grabacion', 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0068_videocall_habilitada.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-11-13 15:24 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0067_delete_grabacion'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelManagers( 14 | name='queue', 15 | managers=[ 16 | ], 17 | ), 18 | migrations.AddField( 19 | model_name='campana', 20 | name='videocall_habilitada', 21 | field=models.BooleanField(default=False), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0070_parametroscrm_dialplan_type_option.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2020-12-18 18:10 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0069_regla_incidencia_por_calificacion'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='parametroscrm', 15 | name='tipo', 16 | field=models.PositiveIntegerField(choices=[ 17 | (1, 'Dato de Campaña'), 18 | (2, 'Dato de Contacto'), 19 | (3, 'Dato de Llamada'), 20 | (4, 'Fijo'), 21 | (5, 'Dato de Dialplan')]), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0071_auto_20210105_1551.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-01-05 18:51 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0070_parametroscrm_dialplan_type_option'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='mensajeenviado', 15 | name='agente', 16 | ), 17 | migrations.DeleteModel( 18 | name='MensajeRecibido', 19 | ), 20 | migrations.DeleteModel( 21 | name='MensajeEnviado', 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0072_queue_audio_previo_conexion_llamada.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-01-18 20:35 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('ominicontacto_app', '0071_auto_20210105_1551'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='queue', 16 | name='audio_previo_conexion_llamada', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='queues_anuncio_entrada', to='ominicontacto_app.ArchivoDeAudio'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0074_grupo_call_off_camp.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-02-23 19:44 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0073_configuraciondeagentesdecampana'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='grupo', 15 | name='call_off_camp', 16 | field=models.BooleanField(default=False, verbose_name='Llamada fuera de campaña'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0077_adiciona_speech_campana.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-04-08 23:03 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0076_contactolistarapida_listasrapidas'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='campana', 15 | name='speech', 16 | field=models.TextField(blank=True, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0078_adiciona_acceso_grabaciones_agente_grupo.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-04-20 06:45 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0077_adiciona_speech_campana'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='grupo', 15 | name='acceso_grabaciones_agente', 16 | field=models.BooleanField(default=True, verbose_name='Acceso grabaciones agentes'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0079_adiciona_acceso_dashboard_agente_grupo.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-06-21 21:16 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0078_adiciona_acceso_grabaciones_agente_grupo'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='grupo', 15 | name='acceso_dashboard_agente', 16 | field=models.BooleanField(default=True, verbose_name='Acceso dashboard agentes'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0080_adiciona_positiva_opcion_calificacion.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-07-08 23:23 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0079_adiciona_acceso_dashboard_agente_grupo'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='opcioncalificacion', 15 | name='positiva', 16 | field=models.BooleanField(default=False, verbose_name='Positiva'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0081_adiciona_on_hold_grupo.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2021-07-28 17:55 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0080_adiciona_positiva_opcion_calificacion'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='grupo', 15 | name='on_hold', 16 | field=models.BooleanField(default=True, verbose_name='On-Hold'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0084_grupo_obligar_despausa.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-01-11 00:33 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0083_grupo_limitar_agendas_personales_en_dias'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='grupo', 15 | name='obligar_despausa', 16 | field=models.BooleanField(default=False, verbose_name='Forzar Despausa'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0086_grupo_show_console_timers.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-02-23 16:08 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0085_auto_20220203_1445'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='grupo', 15 | name='show_console_timers', 16 | field=models.BooleanField(default=True, verbose_name='Ver temporizadores en consola'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0089_campana_campo_direccion.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-02-25 18:37 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0088_opcioncalificacion_interaccion_crm'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='campana', 15 | name='campo_direccion', 16 | field=models.CharField(blank=True, max_length=128, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0090_campana_mostrar_did_nombre_ruta_entrante.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-03-11 22:29 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0089_campana_campo_direccion'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='campana', 15 | name='mostrar_did', 16 | field=models.BooleanField(default=False), 17 | ), 18 | migrations.AddField( 19 | model_name='campana', 20 | name='mostrar_nombre_ruta_entrante', 21 | field=models.BooleanField(default=False), 22 | ), 23 | 24 | ] 25 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0093_campana_control_de_duplicados.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-04-18 20:41 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0092_conjuntos_de_pausas_config'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='campana', 15 | name='control_de_duplicados', 16 | field=models.PositiveIntegerField(choices=[(1, 'Evitar duplicados'), (2, 'Permitir duplicados')], default=2), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0094_campana_prioridad.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-04-26 17:55 2 | 3 | import django.core.validators 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('ominicontacto_app', '0093_campana_control_de_duplicados'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='campana', 16 | name='prioridad', 17 | field=models.PositiveIntegerField( 18 | default=10, validators=[ 19 | django.core.validators.MinValueValidator(1), 20 | django.core.validators.MaxValueValidator(100)]), 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0095_sitio_externo_actualizar_validaciones.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-05-26 16:34 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0094_campana_prioridad'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='sitioexterno', 15 | name='nombre', 16 | field=models.CharField(max_length=128, unique=True), 17 | ), 18 | migrations.AlterField( 19 | model_name='sitioexterno', 20 | name='url', 21 | field=models.URLField(max_length=250), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0097_historicalrespuestaformulario_index.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-07-14 10:10 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0096_agenteensistemaexterno_related_names'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddIndex( 14 | model_name='historicalrespuestaformulariogestion', 15 | index=models.Index(fields=['history_change_reason'], 16 | name='histresp_hist_chg_reason_idx') 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0099_campana_campos_bd_obligatorios.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-11-01 16:11 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0098_autenticacion_sitio_externo'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='campana', 15 | name='campos_bd_obligatorios', 16 | field=models.CharField(default='', max_length=2052), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0101_historicalcalificacioncliente_index.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2022-07-14 10:10 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0100_queue_ivr_breakdown_on_delete'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddIndex( 14 | model_name='historicalcalificacioncliente', 15 | index=models.Index(fields=['modified'], 16 | name='histcalifcli_hist_modified_idx') 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/0110_add_telefono_agendacontacto.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2025-03-11 08:58 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ominicontacto_app', '0109_auto_20250224_1237'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='agendacontacto', 15 | name='telefono', 16 | field=models.CharField(default='', max_length=128), 17 | preserve_default=False, 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /ominicontacto_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/migrations/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/services/__init__.py: -------------------------------------------------------------------------------- 1 | __author__ = 'Former User' 2 | -------------------------------------------------------------------------------- /ominicontacto_app/services/agent/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/services/agent/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/services/asterisk/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/services/asterisk/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/services/authentication/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/services/authentication/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/services/sistema_externo/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/services/sistema_externo/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/bootstrap-3.3.6/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/bootstrap-3.3.6/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/KFOnCniXp96aw8g99URvBg88.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/KFOnCniXp96aw8g99URvBg88.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/KFOnCniXp96aw8g99UVvBg88.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/KFOnCniXp96aw8g99UVvBg88.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/KFOnCniXp96aw8g99UtvBg.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/KFOnCniXp96aw8g99UtvBg.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/KFOoCniXp96ayzQe4HRO.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/KFOoCniXp96ayzQe4HRO.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/KFOoCniXp96ayzUe4HRO.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/KFOoCniXp96ayzUe4HRO.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/KFOoCniXp96ayzse4A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/KFOoCniXp96ayzse4A.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-regular-400.eot -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-regular-400.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-solid-900.eot -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-solid-900.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/icomoon.eot -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/icomoon.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/icomoon.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/oml-agent.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/oml-agent.eot -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/oml-agent.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/oml-agent.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/oml-agent.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/oml-agent.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/oml-icons: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/oml-icons -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/oml-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/oml-icons.ttf -------------------------------------------------------------------------------- /ominicontacto_app/static/fonts/oml-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/fonts/oml-icons.woff -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/agente-contactos.css: -------------------------------------------------------------------------------- 1 | #contactos { 2 | margin-top:25px; 3 | } 4 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/agentes-externos.css: -------------------------------------------------------------------------------- 1 | .agentes { 2 | margin-top: 28px; 3 | } 4 | 5 | .fieldFormset { 6 | margin: 15px; 7 | } 8 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/dashboard.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/CSS/dashboard.css -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/formulario.css: -------------------------------------------------------------------------------- 1 | /*---Color que SI hay que modificar para los rebrands*/ 2 | /* Color para :hover, :focus,etc */ 3 | /* ---Color que no hay que modificar para los rebrands---*/ 4 | /* Gris oscuro */ 5 | /* Gris claro */ 6 | /* Gris muy clarito */ 7 | /* naranja clarito */ 8 | #text_line { 9 | text-decoration-color: #f71883; 10 | text-decoration-line: underline; 11 | text-underline-position: under; 12 | padding-bottom: 10px; 13 | } 14 | 15 | #align_box { 16 | padding-top: 20px; 17 | } 18 | 19 | #destino { 20 | margin-bottom: 0; 21 | } 22 | 23 | #destino h3 { 24 | text-decoration: underline; 25 | } 26 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/formulario_contacto.css: -------------------------------------------------------------------------------- 1 | #id_observaciones{ 2 | height: 180px; 3 | border: 1px solid #ced4da; 4 | border-radius: .25rem; 5 | width: 100%; 6 | } 7 | 8 | #id_opcion_calificacion{ 9 | width: 100%; 10 | padding: .375rem .75rem; 11 | font-size: 1rem; 12 | background-color: #fff; 13 | border: 1px solid #ced4da; 14 | border-radius: .25rem; 15 | transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; 16 | } -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/googlemap.css: -------------------------------------------------------------------------------- 1 | .mapouter{ 2 | position:relative; 3 | height:300px; 4 | width:550px; 5 | border:1px; 6 | } 7 | 8 | .gmap_canvas { 9 | overflow:hidden; 10 | background:none!important; 11 | height:295px; 12 | width:540px; 13 | } -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/grabaciones.css: -------------------------------------------------------------------------------- 1 | [aria-expanded="false"] .fa-chevron-circle-up, 2 | [aria-expanded="true"] .fa-chevron-circle-down { 3 | display: none; 4 | } 5 | 6 | .grab { 7 | opacity: 100% !important; 8 | background-color: #ECEEEA; 9 | } -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/CSS/images/sort_asc.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/CSS/images/sort_both.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/CSS/images/sort_desc.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/listado_calificaciones.css: -------------------------------------------------------------------------------- 1 | [aria-expanded="false"] .fa-chevron-circle-up, 2 | [aria-expanded="true"] .fa-chevron-circle-down { 3 | display: none; 4 | } 5 | 6 | .grab { 7 | opacity: 100% !important; 8 | background-color: #ECEEEA; 9 | } -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/opcion-calificacion.css: -------------------------------------------------------------------------------- 1 | .fieldsFormset { 2 | margin: 5px; 3 | } 4 | 5 | .deleteFormset { 6 | margin: 10px; 7 | } 8 | 9 | .addFormset { 10 | margin-bottom: 5px; 11 | } 12 | 13 | #gruposAgentes { 14 | margin-bottom: 10px; 15 | } 16 | 17 | th { 18 | padding-right: 50px !important; 19 | } 20 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/reservar-liberar-contactos-preview.css: -------------------------------------------------------------------------------- 1 | #alignTableContacto{ 2 | margin-top: 30px; 3 | padding-left: 0; 4 | } 5 | #alertContacto, #alertAgente{ 6 | color: red; 7 | } 8 | .select-checkbox{ 9 | width: 2px; 10 | } 11 | .filter_agent{ 12 | display: flex; 13 | } -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/CSS/webchat.css: -------------------------------------------------------------------------------- 1 | .chatWindow { 2 | height: 410px; 3 | width: 394px; 4 | overflow-y: scroll; 5 | background-color: yellowgreen; 6 | opacity: 0.75; 7 | border-radius: 5px; 8 | } 9 | 10 | .chatWindowFb { 11 | height: 410px; 12 | width: 394px; 13 | overflow-y: scroll; 14 | background-color: #D8D8D8; 15 | opacity: 0.75; 16 | border-radius: 5px; 17 | } 18 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/Ampliar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/Ampliar.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/Phone Flat Icons_590.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/Phone Flat Icons_590.jpg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/calendar3-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/calendar3-3.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/calendar3-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/calendar3-4.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/calendar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/calendar3.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/email.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/emailTransp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/emailTransp.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/favicon.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/fbchat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/fbchat.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/fbchatTransp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/fbchatTransp.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/fts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/fts.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/greendot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/greendot.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/greydot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/greydot.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/ic_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/ic_logo.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/ic_logo_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/ic_logo_full.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/ic_logo_symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/ic_logo_symbol.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/images.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/imgpsh_fullsize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/imgpsh_fullsize.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/incomingCall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/incomingCall.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/logo_symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/logo_symbol.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/lostCall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/lostCall.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/omnileads_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/omnileads_logo.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/outgoingCall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/outgoingCall.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/redcross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/redcross.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/reddot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/reddot.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/redial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/redial.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/reload_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/reload_green.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/smsTransp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/smsTransp.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/webCallTransp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/webCallTransp.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/webChat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/webChat.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/webChatTransp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/webChatTransp.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/Img/yellowdot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/Img/yellowdot.png -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/JS/campanas/datatables.js: -------------------------------------------------------------------------------- 1 | 2 | function tableToDataTable(columns) { 3 | $('table.table').each(function(){ 4 | try { 5 | $(this).DataTable({ 6 | paging: false, 7 | searching: false, 8 | columns, 9 | order: [[0, 'desc']] 10 | }); 11 | } catch (error) { /**/ } 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/JS/constantes.js: -------------------------------------------------------------------------------- 1 | // tipos de campañas 2 | var MANUAL = "1"; 3 | var DIALER = "2"; 4 | var ENTRANTE = "3"; 5 | var PREVIEW = "4"; 6 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/JS/l18n_constantes.js: -------------------------------------------------------------------------------- 1 | var AGREGAR_CAMPO = gettext("Agregar campo"); 2 | var REMOVER_CAMPO = gettext("Remover"); 3 | var SIN_ACCION = gettext("Sin Acción"); 4 | var GESTION = gettext("Gestión"); 5 | var AGREGAR_PARAMETRO = gettext("Agregar parámetro"); 6 | var AGREGAR_AGENTE = gettext("Agregar agente"); 7 | var AGREGAR_REGLA = gettext("Agregar regla"); 8 | var AGREGAR_PATRON_DISCADO = gettext("Agregar patron de discado"); 9 | var AGREGAR_TRONCAL = gettext("Agregar troncal"); 10 | var AGREGAR_DESTINO = gettext("Agregar destino"); 11 | var AGREGAR_VALIDACION = gettext("Agregar validación"); 12 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/JS/vue/grabaciones.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line no-undef 2 | var app = new Vue({ 3 | // eslint-disable-next-line quotes 4 | delimiters: ["[[", "]]"], 5 | el: '#app', 6 | data: { 7 | titulo: 'el titulo mio', 8 | otro: 'otro' 9 | } 10 | }); -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/SCSS/_variables.scss: -------------------------------------------------------------------------------- 1 | /*---Color que SI hay que modificar para los rebrands*/ 2 | $primary-color: #f71883; 3 | $primary-light-color: #fa4da0; 4 | $secondary-color: #89468b; /* Color para :hover, :focus,etc */ 5 | 6 | /* ---Color que no hay que modificar para los rebrands---*/ 7 | $dark-grey: #333333; /* Gris oscuro */ 8 | $grey: #6A716A; /* Gris claro */ 9 | $light-grey: #E5E7E3; /* Gris muy clarito */ 10 | 11 | $warning-agenda: #FF9A3C; /* naranja clarito */ -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/SCSS/formulario.scss: -------------------------------------------------------------------------------- 1 | @import 'variables'; 2 | 3 | #text_line { 4 | text-decoration-color: $primary-color; 5 | text-decoration-line: underline; 6 | text-underline-position: under; 7 | padding-bottom: 10px; 8 | } 9 | 10 | #align_box { 11 | padding-top: 20px; 12 | } 13 | 14 | #destino { 15 | margin-bottom: 0; 16 | } 17 | 18 | #destino h3{ 19 | text-decoration: underline; 20 | } -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ejemplo_blacklist.csv: -------------------------------------------------------------------------------- 1 | Telefono 2 | 453345443 3 | 324241412 4 | 343422223 5 | 743532323 6 | 345345353 7 | 343535355 8 | 355445354 9 | 345353453 10 | 354533333 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ejemplo_lista_rapida.csv: -------------------------------------------------------------------------------- 1 | Nombre,Telefono 2 | alex,453345443 3 | oliver,324241412 4 | lara,343422223 5 | elena,743532323 6 | pablo,345345353 7 | belen,343535355 8 | Florencia,355445354 9 | Carlos,345353453 10 | Micaela,354533333 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/example-db.csv: -------------------------------------------------------------------------------- 1 | telefono,name,surname,id_contact 2 | 4553101,Terence,McKenna,30000001 3 | 4553102,Timothy,Leary,30000002 4 | 4553103,Albert,Hoffman,30000003 5 | 4553104,Aldous,Huxley,30000004 6 | 4553105,Herman,Hesse,30000005 7 | 5553101,Jorge Luis,Borges,30000006 8 | 5553102,Jiddu,Krishnamurti,30000007 9 | 5553103,Herman,Hesse,30000008 10 | 5553104,Aleister,Crowley,30000009 11 | 5553105,Facundo,Cabral,30000010 12 | 6553101,Atahualpa,Yupanqui,30000011 13 | 6553102,Carl Gustav, Jung,30000012 14 | 6553103,Isaac,Luria,30000013 15 | 6553104,Robert Anton,Wilson,30000014 16 | -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/Atria.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/Atria.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/Canis Major.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/Canis Major.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/Cassiopeia.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/Cassiopeia.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/Kuma.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/Kuma.mp3 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/Kuma.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/Kuma.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/busy.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/busy.mp3 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/busy.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/busy.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/sonidoentrante.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/sonidoentrante.mp3 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/tonoallamar.back.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/tonoallamar.back.mp3 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/tonoallamar.back.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/tonoallamar.back.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/tonoallamar.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/tonoallamar.mp3 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/tonoallamar.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/tonoallamar.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/welcome.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/welcome.mp3 -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/ring/welcome.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/static/ominicontacto/ring/welcome.ogg -------------------------------------------------------------------------------- /ominicontacto_app/static/ominicontacto/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /ominicontacto_app/templates/agente/frame/busqueda_grabacion_ex/_pagination.html: -------------------------------------------------------------------------------- 1 | {% if paginator.object_list %} 2 | {% for page in paginator %} 3 |
  • 4 | 5 |
  • 6 | {% endfor %} 7 | {% endif %} 8 | -------------------------------------------------------------------------------- /ominicontacto_app/templates/agente/modals/whatsapp/index.html: -------------------------------------------------------------------------------- 1 | {% include "agente/modals/whatsapp/transfer_chat.html" %} 2 | {% include "agente/modals/whatsapp/whatsapp_templates.html" %} 3 | {% include "agente/modals/whatsapp/disposition_form.html" %} 4 | {% include "agente/modals/whatsapp/media_image_form.html" %} 5 | {% include "agente/modals/whatsapp/media_file_form.html" %} 6 | {% include "agente/modals/whatsapp/contact_form.html" %} 7 | {% include "agente/modals/whatsapp/conversation_new.html" %} -------------------------------------------------------------------------------- /ominicontacto_app/templates/busqueda_grabacion_ex/_pagination.html: -------------------------------------------------------------------------------- 1 | {% if paginator.object_list %} 2 | {% for page in paginator %} 3 |
  • 4 | 5 |
  • 6 | {% endfor %} 7 | {% endif %} 8 | -------------------------------------------------------------------------------- /ominicontacto_app/templates/grupo_agentes.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 |
    4 |
    5 |
    6 |
    7 | {% trans 'Agregar grupo de agentes' %} 8 |
    9 |
    10 | {{ grupos_form.as_table }} 11 | {% trans 'Agregar grupo' %} 12 |
    13 |
    14 |
    15 |
    16 | -------------------------------------------------------------------------------- /ominicontacto_app/templates/webui.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 | 9 | 20 | {% endblock content %} 21 | -------------------------------------------------------------------------------- /ominicontacto_app/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/templatetags/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/tests/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/tests/asterisk/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/tests/asterisk/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/tests/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/tests/commands/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/tests/services/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/tests/services/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/tests/test_integracion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/tests/test_integracion/__init__.py -------------------------------------------------------------------------------- /ominicontacto_app/views/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/ominicontacto_app/views/__init__.py -------------------------------------------------------------------------------- /omnileads_ui/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead -------------------------------------------------------------------------------- /omnileads_ui/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.DS_Store 2 | 3 | .env.local 4 | .vscode 5 | dist 6 | node_modules 7 | -------------------------------------------------------------------------------- /omnileads_ui/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 4 4 | trim_trailing_whitespace = true 5 | insert_final_newline = true -------------------------------------------------------------------------------- /omnileads_ui/.eslintignore: -------------------------------------------------------------------------------- 1 | # /node_modules/* and /bower_components/* in the project root are ignored by default 2 | # Ignore built files except build/index.js 3 | 4 | build/* 5 | dist/* 6 | bundle.js 7 | .*/* 8 | .* -------------------------------------------------------------------------------- /omnileads_ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # Test 6 | /tests/e2e/videos/ 7 | /tests/e2e/screenshots/ 8 | 9 | # local env files 10 | .env.local 11 | .env.*.local 12 | 13 | # Log files 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | pnpm-debug.log* 18 | 19 | # Editor directories and files 20 | .idea 21 | .vscode 22 | *.suo 23 | *.ntvs* 24 | *.njsproj 25 | *.sln 26 | *.sw? 27 | -------------------------------------------------------------------------------- /omnileads_ui/README.md: -------------------------------------------------------------------------------- 1 | # supervision 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). -------------------------------------------------------------------------------- /omnileads_ui/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginsFile": "tests/e2e/plugins/index.js" 3 | } -------------------------------------------------------------------------------- /omnileads_ui/dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine AS dev 2 | ENV NODE_OPTIONS=--openssl-legacy-provider 3 | RUN apk add make g++ python3 && ln -sf python3 /usr/bin/python 4 | WORKDIR /opt/webui-omnileads 5 | COPY package.json . 6 | COPY package-lock.json . 7 | RUN npm ci 8 | COPY . . 9 | RUN echo 'VUE_APP_PUBLIC_PATH=/webui-omnileads/' >> .env.local 10 | CMD ["npm", "run", "serve", "--", "--host=0.0.0.0", "--port=80", "--skip-plugins=@vue/cli-plugin-eslint"] 11 | -------------------------------------------------------------------------------- /omnileads_ui/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: '@vue/cli-plugin-unit-jest', 3 | transform: { 4 | '^.+\\.vue$': 'vue-jest' 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/README.md: -------------------------------------------------------------------------------- 1 | 2 | This is how we configure the primevue theme generation and loading. 3 | 4 | ``` sh 5 | cd omnileads_ui 6 | sass --no-source-map primevue-sass-theme/themes/saga/saga-dark-pink/theme.scss:public/primevue/3.12.0/resources/themes/saga-dark-pink.css 7 | 8 | cd public/primevue 9 | ln -s ./3.12.0/resources/themes/saga-dark-pink.css theme.css 10 | ``` 11 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/_colors.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | @if variable-exists(colors) { 3 | @each $name, $color in $colors { 4 | @for $i from 0 through 5 { 5 | @if ($i == 0) { 6 | --#{$name}-50:#{tint($color, (5 - $i) * 19%)}; 7 | } 8 | @else { 9 | --#{$name}-#{$i * 100}:#{tint($color, (5 - $i) * 19%)}; 10 | } 11 | } 12 | 13 | @for $i from 1 through 4 { 14 | --#{$name}-#{($i + 5) * 100}:#{shade($color, $i * 15%)}; 15 | } 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/input/_colorpicker.scss: -------------------------------------------------------------------------------- 1 | .p-colorpicker-preview { 2 | width: $colorPickerPreviewWidth; 3 | height: $colorPickerPreviewHeight; 4 | } 5 | 6 | .p-colorpicker-panel { 7 | background: $colorPickerBg; 8 | border: $colorPickerBorder; 9 | 10 | .p-colorpicker-color-handle, 11 | .p-colorpicker-hue-handle { 12 | border-color: $colorPickerHandleColor; 13 | } 14 | } 15 | 16 | .p-colorpicker-overlay-panel { 17 | box-shadow: $inputOverlayShadow; 18 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/input/_inputnumber.scss: -------------------------------------------------------------------------------- 1 | .p-inputnumber { 2 | &.p-invalid.p-component > .p-inputtext { 3 | @include invalid-input(); 4 | } 5 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/misc/_avatar.scss: -------------------------------------------------------------------------------- 1 | .p-avatar { 2 | background-color: $avatarBg; 3 | border-radius: $borderRadius; 4 | 5 | &.p-avatar-lg { 6 | width: 3rem; 7 | height: 3rem; 8 | font-size: 1.5rem; 9 | 10 | .p-avatar-icon { 11 | font-size: 1.5rem; 12 | } 13 | } 14 | 15 | &.p-avatar-xl { 16 | width: 4rem; 17 | height: 4rem; 18 | font-size: 2rem; 19 | 20 | .p-avatar-icon { 21 | font-size: 2rem; 22 | } 23 | } 24 | } 25 | 26 | .p-avatar-group { 27 | .p-avatar { 28 | border: 2px solid $panelContentBg; 29 | } 30 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/misc/_blockui.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/omnileads_ui/primevue-sass-theme/theme-base/components/misc/_blockui.scss -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/misc/_inplace.scss: -------------------------------------------------------------------------------- 1 | .p-inplace { 2 | .p-inplace-display { 3 | padding: $inplacePadding; 4 | border-radius: $borderRadius; 5 | transition: $formElementTransition; 6 | 7 | &:not(.p-disabled):hover { 8 | background: $inplaceHoverBg; 9 | color: $inplaceTextHoverColor; 10 | } 11 | 12 | &:focus { 13 | @include focused(); 14 | } 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/misc/_progressbar.scss: -------------------------------------------------------------------------------- 1 | .p-progressbar { 2 | border: $progressBarBorder; 3 | height: $progressBarHeight; 4 | background: $progressBarBg; 5 | border-radius: $borderRadius; 6 | 7 | .p-progressbar-value { 8 | border: 0 none; 9 | margin: 0; 10 | background: $progressBarValueBg; 11 | } 12 | 13 | .p-progressbar-label { 14 | color: $progressBarValueTextColor; 15 | line-height: $progressBarHeight; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/misc/_scrolltop.scss: -------------------------------------------------------------------------------- 1 | .p-scrolltop { 2 | width: $scrollTopWidth; 3 | height: $scrollTopHeight; 4 | border-radius: $scrollTopBorderRadius; 5 | box-shadow: $inputOverlayShadow; 6 | transition: $actionIconTransition; 7 | 8 | &.p-link { 9 | background: $scrollTopBg; 10 | 11 | &:hover { 12 | background: $scrollTopHoverBg; 13 | } 14 | } 15 | 16 | .p-scrolltop-icon { 17 | font-size: $scrollTopFontSize; 18 | color: $scrollTopTextColor; 19 | } 20 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/misc/_skeleton.scss: -------------------------------------------------------------------------------- 1 | .p-skeleton { 2 | background-color: $skeletonBg; 3 | border-radius: $borderRadius; 4 | 5 | &:after { 6 | background: linear-gradient(90deg, rgba(255, 255, 255, 0), $skeletonAnimationBg, rgba(255, 255, 255, 0)); 7 | } 8 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/misc/_terminal.scss: -------------------------------------------------------------------------------- 1 | .p-terminal { 2 | background: $panelContentBg; 3 | color: $panelContentTextColor; 4 | border: $panelContentBorder; 5 | padding: $panelContentPadding; 6 | 7 | .p-terminal-input { 8 | font-size: $fontSize; 9 | font-family: $fontFamily; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/overlay/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .p-sidebar { 2 | background: $overlayContentBg; 3 | color: $panelContentTextColor; 4 | border: $overlayContentBorder; 5 | box-shadow: $overlayContainerShadow; 6 | 7 | .p-sidebar-header { 8 | padding: $panelHeaderPadding; 9 | 10 | .p-sidebar-close, 11 | .p-sidebar-icon { 12 | @include action-icon(); 13 | } 14 | 15 | & + .p-sidebar-content { 16 | padding-top: 0; 17 | } 18 | } 19 | 20 | .p-sidebar-content { 21 | padding: $panelContentPadding; 22 | } 23 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/panel/_scrollpanel.scss: -------------------------------------------------------------------------------- 1 | .p-scrollpanel { 2 | .p-scrollpanel-bar { 3 | background: $scrollPanelTrackBg; 4 | border: $scrollPanelTrackBorder; 5 | } 6 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/panel/_splitter.scss: -------------------------------------------------------------------------------- 1 | .p-splitter { 2 | border: $panelContentBorder; 3 | background: $panelContentBg; 4 | border-radius: $borderRadius; 5 | color: $panelContentTextColor; 6 | 7 | .p-splitter-gutter { 8 | transition: $actionIconTransition; 9 | background: $splitterGutterBg; 10 | 11 | .p-splitter-gutter-handle { 12 | background: $splitterGutterHandleBg; 13 | } 14 | } 15 | 16 | .p-splitter-gutter-resizing { 17 | background: $splitterGutterHandleBg; 18 | } 19 | } -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/theme-base/components/panel/_toolbar.scss: -------------------------------------------------------------------------------- 1 | .p-toolbar { 2 | background: $panelHeaderBg; 3 | border: $panelHeaderBorder; 4 | padding: $panelHeaderPadding; 5 | border-radius: $borderRadius; 6 | 7 | .p-toolbar-separator { 8 | margin: 0 $inlineSpacing; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/current/_variables.scss: -------------------------------------------------------------------------------- 1 | $primaryColor: #F71883 !default; 2 | $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default; 3 | $primaryDarkColor: scale-color($primaryColor, $lightness: -10%) !default; 4 | $primaryDarkerColor: scale-color($primaryColor, $lightness: -20%) !default; 5 | $primaryTextColor: #ffffff !default; 6 | 7 | $highlightBg: #F3E5F5 !default; 8 | $highlightTextColor: #495057 !default; 9 | $highlightFocusBg: rgba($primaryColor, .24) !default; 10 | 11 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/current/theme.scss: -------------------------------------------------------------------------------- 1 | 2 | @import './_overrides'; 3 | @import './_variables'; 4 | @import '../saga/_variables'; 5 | @import '../../theme-base/_components'; 6 | @import '../saga/_extensions'; 7 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/_extensions.scss: -------------------------------------------------------------------------------- 1 | .p-carousel { 2 | .p-carousel-indicators .p-carousel-indicator.p-highlight button { 3 | background-color: $primaryColor; 4 | } 5 | } 6 | 7 | .p-galleria { 8 | .p-galleria-indicators .p-galleria-indicator.p-highlight button { 9 | background-color: $primaryColor; 10 | } 11 | } 12 | 13 | .p-datatable { 14 | .p-datatable-tbody { 15 | > tr { 16 | &.p-datatable-dragpoint-top > td { 17 | box-shadow: inset 0 2px 0 0 $primaryColor; 18 | } 19 | 20 | &.p-datatable-dragpoint-bottom > td { 21 | box-shadow: inset 0 -2px 0 0 $primaryColor; 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-blue/_extensions.scss: -------------------------------------------------------------------------------- 1 | /* Customizations to the designer theme should be defined here */ 2 | @import '../extensions'; -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-blue/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Configuration for the font-face of the theme, defaults to the system font so left as blank -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-blue/_variables.scss: -------------------------------------------------------------------------------- 1 | $primaryColor: #2196F3 !default; 2 | $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default; 3 | $primaryDarkColor: scale-color($primaryColor, $lightness: -10%) !default; 4 | $primaryDarkerColor: scale-color($primaryColor, $lightness: -20%) !default; 5 | $primaryTextColor: #ffffff !default; 6 | 7 | $highlightBg: #E3F2FD !default; 8 | $highlightTextColor: #495057 !default; 9 | $highlightFocusBg: rgba($primaryColor, .24) !default; 10 | 11 | @import '../_variables'; 12 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-blue/theme.scss: -------------------------------------------------------------------------------- 1 | @import './variables'; 2 | @import './_fonts'; 3 | @import '../../../theme-base/_components'; 4 | @import './_extensions'; 5 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-dark-pink/_extensions.scss: -------------------------------------------------------------------------------- 1 | /* Customizations to the designer theme should be defined here */ 2 | @import '../extensions'; -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-dark-pink/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Configuration for the font-face of the theme, defaults to the system font so left as blank -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-dark-pink/_variables.scss: -------------------------------------------------------------------------------- 1 | $primaryColor: #F71883 !default; 2 | $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default; 3 | $primaryDarkColor: scale-color($primaryColor, $lightness: -10%) !default; 4 | $primaryDarkerColor: scale-color($primaryColor, $lightness: -20%) !default; 5 | $primaryTextColor: #ffffff !default; 6 | 7 | $highlightBg: #F3E5F5 !default; 8 | $highlightTextColor: #495057 !default; 9 | $highlightFocusBg: rgba($primaryColor, .24) !default; 10 | 11 | @import '../_variables'; 12 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-dark-pink/theme.scss: -------------------------------------------------------------------------------- 1 | @import './variables'; 2 | @import './_fonts'; 3 | @import '../../../theme-base/_components'; 4 | @import './_extensions'; 5 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-green/_extensions.scss: -------------------------------------------------------------------------------- 1 | /* Customizations to the designer theme should be defined here */ 2 | @import '../extensions'; -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-green/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Configuration for the font-face of the theme, defaults to the system font so left as blank -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-green/_variables.scss: -------------------------------------------------------------------------------- 1 | $primaryColor: #4CAF50 !default; 2 | $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default; 3 | $primaryDarkColor: scale-color($primaryColor, $lightness: -10%) !default; 4 | $primaryDarkerColor: scale-color($primaryColor, $lightness: -20%) !default; 5 | $primaryTextColor: #ffffff !default; 6 | 7 | $highlightBg: #E8F5E9 !default; 8 | $highlightTextColor: #495057 !default; 9 | $highlightFocusBg: rgba($primaryColor, .24) !default; 10 | 11 | @import '../_variables'; 12 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-green/theme.scss: -------------------------------------------------------------------------------- 1 | @import './variables'; 2 | @import './_fonts'; 3 | @import '../../../theme-base/_components'; 4 | @import './_extensions'; 5 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-orange/_extensions.scss: -------------------------------------------------------------------------------- 1 | /* Customizations to the designer theme should be defined here */ 2 | @import '../extensions'; -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-orange/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Configuration for the font-face of the theme, defaults to the system font so left as blank -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-orange/_variables.scss: -------------------------------------------------------------------------------- 1 | $primaryColor: #FFC107 !default; 2 | $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default; 3 | $primaryDarkColor: scale-color($primaryColor, $lightness: -10%) !default; 4 | $primaryDarkerColor: scale-color($primaryColor, $lightness: -20%) !default; 5 | $primaryTextColor: #212529 !default; 6 | 7 | $highlightBg: #FFF3E0 !default; 8 | $highlightTextColor: #495057 !default; 9 | $highlightFocusBg: #ebe0ce !default; 10 | 11 | @import '../_variables'; 12 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-orange/theme.scss: -------------------------------------------------------------------------------- 1 | @import './variables'; 2 | @import './_fonts'; 3 | @import '../../../theme-base/_components'; 4 | @import './_extensions'; 5 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-purple/_extensions.scss: -------------------------------------------------------------------------------- 1 | /* Customizations to the designer theme should be defined here */ 2 | @import '../extensions'; -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-purple/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Configuration for the font-face of the theme, defaults to the system font so left as blank -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-purple/_variables.scss: -------------------------------------------------------------------------------- 1 | $primaryColor: #9C27B0 !default; 2 | $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default; 3 | $primaryDarkColor: scale-color($primaryColor, $lightness: -10%) !default; 4 | $primaryDarkerColor: scale-color($primaryColor, $lightness: -20%) !default; 5 | $primaryTextColor: #ffffff !default; 6 | 7 | $highlightBg: #F3E5F5 !default; 8 | $highlightTextColor: #495057 !default; 9 | $highlightFocusBg: rgba($primaryColor, .24) !default; 10 | 11 | @import '../_variables'; 12 | -------------------------------------------------------------------------------- /omnileads_ui/primevue-sass-theme/themes/saga/saga-purple/theme.scss: -------------------------------------------------------------------------------- 1 | @import './variables'; 2 | @import './_fonts'; 3 | @import '../../../theme-base/_components'; 4 | @import './_extensions'; 5 | -------------------------------------------------------------------------------- /omnileads_ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/omnileads_ui/public/favicon.ico -------------------------------------------------------------------------------- /omnileads_ui/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <%= htmlWebpackPlugin.options.title %> 10 | 11 | 12 | 15 |
    16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/agent/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/omnileads_ui/src/api_urls/agent/index.js -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/agent/whatsapp/contact_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | ContactList: (campaignId) => `/api/v1/whatsapp/contact/${campaignId}`, 3 | ContactCreateFromConversation: (campaignId, conversationId) => `/api/v1/whatsapp/contact/${campaignId}/create_contact_from_conversation/${conversationId}`, 4 | ContactCreate: (campaignId) => `/api/v1/whatsapp/contact/${campaignId}`, 5 | ContactUpdate: (campaignId, contactId) => `/api/v1/whatsapp/contact/${campaignId}/${contactId}`, 6 | ContactCampaignDBFields: (campaignId) => `/api/v1/whatsapp/contact/${campaignId}/db_fields`, 7 | ContactSearch: (campaignId) => `/api/v1/whatsapp/contact/${campaignId}/search` 8 | }; 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/agent/whatsapp/disposition_chat_urls.js: -------------------------------------------------------------------------------- 1 | const BASE_ROUTE = '/api/v1/whatsapp/disposition_chat'; 2 | 3 | export default { 4 | DispositionChatDetail: (id) => `${BASE_ROUTE}/${id}`, 5 | DispositionChatUpdate: (id) => `${BASE_ROUTE}/${id}`, 6 | DispositionChatCreate: () => `${BASE_ROUTE}`, 7 | DispositionChatHistory: (id) => `${BASE_ROUTE}/${id}/history`, 8 | DispositionChatOptions: (campaignId) => `${BASE_ROUTE}/options/${campaignId}` 9 | }; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/agent/whatsapp/transfer_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | agentList: (campaingId) => `/api/v1/whatsapp/transfer/${campaingId}/agents`, 3 | transferToagent: () => `/api/v1/whatsapp/transfer/to_agent` 4 | }; 5 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/add_agents_to_campaign_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | CampaignAgents: (idCampaign) => `/api/v1/campaign/${idCampaign}/agents`, 3 | ActiveAgents: '/api/v1/active_agents', 4 | UpdateAgentsCampaign: '/api/v1/campaign/agents_update/' 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/call_disposition_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/call_dispositions', 3 | Create: '/api/v1/call_dispositions/create/', 4 | Detail: (id) => `/api/v1/call_dispositions/${id}`, 5 | Update: (id) => `/api/v1/call_dispositions/${id}/update/`, 6 | Delete: (id) => `/api/v1/call_dispositions/${id}/delete` 7 | }; 8 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/external_site_authentication_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/external_site_authentications', 3 | Create: '/api/v1/external_site_authentications/create/', 4 | Test: '/api/v1/external_site_authentications/test/', 5 | Detail: (id) => `/api/v1/external_site_authentications/${id}`, 6 | Update: (id) => `/api/v1/external_site_authentications/${id}/update/`, 7 | Delete: (id) => `/api/v1/external_site_authentications/${id}/delete` 8 | }; 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/external_site_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/external_sites', 3 | Create: '/api/v1/external_sites/create/', 4 | Detail: (id) => `/api/v1/external_sites/${id}`, 5 | Update: (id) => `/api/v1/external_sites/${id}/update/`, 6 | Delete: (id) => `/api/v1/external_sites/${id}/delete`, 7 | Hide: (id) => `/api/v1/external_sites/${id}/hide/`, 8 | Show: (id) => `/api/v1/external_sites/${id}/show/` 9 | }; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/external_system_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/external_systems', 3 | Create: '/api/v1/external_systems/create/', 4 | Detail: (id) => `/api/v1/external_systems/${id}`, 5 | Update: (id) => `/api/v1/external_systems/${id}/update/`, 6 | Delete: (id) => `/api/v1/external_systems/${id}/delete`, 7 | AgentsExternalSystemList: '/api/v1/agents_external_system' 8 | }; 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/form_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/forms', 3 | Create: '/api/v1/forms/create/', 4 | Detail: (id) => `/api/v1/forms/${id}`, 5 | Delete: (id) => `/api/v1/forms/${id}/delete`, 6 | Update: (id) => `/api/v1/forms/${id}/update/`, 7 | Hide: (id) => `/api/v1/forms/${id}/hide/`, 8 | Show: (id) => `/api/v1/forms/${id}/show/` 9 | }; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/group_of_hour_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/group_of_hours', 3 | Create: '/api/v1/group_of_hours/create/', 4 | Detail: (id) => `/api/v1/group_of_hours/${id}`, 5 | Delete: (id) => `/api/v1/group_of_hours/${id}/delete`, 6 | Update: (id) => `/api/v1/group_of_hours/${id}/update/` 7 | }; 8 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/inbound_route_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/inbound_routes', 3 | Create: '/api/v1/inbound_routes/create/', 4 | Detail: (id) => `/api/v1/inbound_routes/${id}`, 5 | Delete: (id) => `/api/v1/inbound_routes/${id}/delete`, 6 | Update: (id) => `/api/v1/inbound_routes/${id}/update/`, 7 | InboundRouteDestinationsByType: '/api/v1/inbound_routes/destinations_by_type', 8 | Languages: '/api/v1/languages/list' 9 | }; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | DashboardSupervision: '/api/v1/dashboard_supervision', 3 | AuditSupervisor: '/api/v1/audit_supervisor/' 4 | }; 5 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/ivr_urls.js: -------------------------------------------------------------------------------- 1 | import { getRestRoutesByModule } from '@/utils/routes_generator'; 2 | 3 | export default { 4 | ...getRestRoutesByModule('ivrs'), 5 | IVRAudioOptions: '/api/v1/ivrs/audio_options/', 6 | IVRDestinations: '/api/v1/ivrs/destination_types/' 7 | }; 8 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/outbound_route_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/outbound_routes', 3 | Create: '/api/v1/outbound_routes/create/', 4 | Detail: (id) => `/api/v1/outbound_routes/${id}`, 5 | Delete: (id) => `/api/v1/outbound_routes/${id}/delete`, 6 | Update: (id) => `/api/v1/outbound_routes/${id}/update/`, 7 | OutboundRouteOrphanTrunks: (id) => `/api/v1/outbound_routes/${id}/orphan_trunks`, 8 | OutboundRouteSipTrunks: '/api/v1/outbound_routes/sip_trunks', 9 | OutboundRouteReorder: '/api/v1/outbound_routes/reorder/' 10 | }; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/pause_set_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/pause_sets', 3 | Create: '/api/v1/pause_sets/create/', 4 | Detail: (id) => `/api/v1/pause_sets/${id}`, 5 | Update: (id) => `/api/v1/pause_sets/${id}/update/`, 6 | Delete: (id) => `/api/v1/pause_sets/${id}/delete`, 7 | ActivePauses: '/api/v1/pause_sets/pause_options', 8 | PauseConfigCreate: '/api/v1/pause_config/create/', 9 | PauseConfigUpdate: (id) => `/api/v1/pause_config/${id}/update/`, 10 | PauseConfigDelete: (id) => `/api/v1/pause_config/${id}/delete` 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/pause_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | List: '/api/v1/pauses', 3 | Create: '/api/v1/pauses/create/', 4 | Reactivate: (id) => `/api/v1/pauses/${id}/reactivate/`, 5 | Delete: (id) => `/api/v1/pauses/${id}/delete`, 6 | Update: (id) => `/api/v1/pauses/${id}/update/`, 7 | Detail: (id) => `/api/v1/pauses/${id}` 8 | }; 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/register_server_urls.js: -------------------------------------------------------------------------------- 1 | export default { 2 | Create: '/api/v1/register_server/create/', 3 | RegisterInfo: '/api/v1/register_server/', 4 | ResendKey: '/api/v1/reenviar_key_registro/' 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/configuration_campaign_urls.js: -------------------------------------------------------------------------------- 1 | import { getRestWhatsappRoutesByModule } from '@/utils/routes_generator'; 2 | 3 | export default { 4 | ...getRestWhatsappRoutesByModule('configuration_whatsapp') 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/group_of_message_template_urls.js: -------------------------------------------------------------------------------- 1 | import { getRestWhatsappRoutesByModule } from '@/utils/routes_generator'; 2 | 3 | export default { 4 | ...getRestWhatsappRoutesByModule('group_plantilla_whatsapp') 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/line_urls.js: -------------------------------------------------------------------------------- 1 | import { getRestWhatsappRoutesByModule } from '@/utils/routes_generator'; 2 | 3 | export default { 4 | ...getRestWhatsappRoutesByModule('line'), 5 | Campaigns: '/api/v1/whatsapp/campaing' 6 | }; 7 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/message_template_urls.js: -------------------------------------------------------------------------------- 1 | import { getRestWhatsappRoutesByModule } from '@/utils/routes_generator'; 2 | 3 | export default { 4 | ...getRestWhatsappRoutesByModule('templates_message') 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/provider_urls.js: -------------------------------------------------------------------------------- 1 | import { getRestWhatsappRoutesByModule } from '@/utils/routes_generator'; 2 | 3 | export default { 4 | ...getRestWhatsappRoutesByModule('provider') 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/reports/campaign/conversation_report_urls.js: -------------------------------------------------------------------------------- 1 | const BASE_ROUTE = '/api/v1/whatsapp/chat'; 2 | 3 | export default { 4 | SupWhatsReportCampaignConversations: (campaignId = null) => 5 | `${BASE_ROUTE}/${campaignId}/filter_chats`, 6 | SupWhatsReportCampaignAgents: (campaignId) => 7 | `/api/v1/campaign/${campaignId}/agents/` 8 | }; 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/reports/general_report_urls.js: -------------------------------------------------------------------------------- 1 | const BASE_ROUTE = '/api/v1/whatsapp'; 2 | 3 | export default { 4 | SupWhatsReportGeneral: () => `${BASE_ROUTE}/reports/` 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/templates_urls.js: -------------------------------------------------------------------------------- 1 | const BASE_WHATSAPP_URL = '/api/v1/whatsapp'; 2 | 3 | export default { 4 | Templates: (campaignId, lineId = null) => { 5 | if (lineId !== null) { 6 | return `${BASE_WHATSAPP_URL}/templates/${campaignId}?line_id=${lineId}`; 7 | } 8 | return `${BASE_WHATSAPP_URL}/templates/${campaignId}`; 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/api_urls/supervisor/whatsapp/whatsapp_template_urls.js: -------------------------------------------------------------------------------- 1 | import { getRestWhatsappRoutesByModule } from '@/utils/routes_generator'; 2 | 3 | export default { 4 | ...getRestWhatsappRoutesByModule('templates_whatsapp'), 5 | SyncUp: (id) => `/api/v1/whatsapp/templates_whatsapp/sincronizar_templates/${id}`, 6 | StatusChange: (templateId, lineId) => `/api/v1/whatsapp/templates_whatsapp/${templateId}/status_change/${lineId}` 7 | }; 8 | -------------------------------------------------------------------------------- /omnileads_ui/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/omnileads_ui/src/assets/logo.png -------------------------------------------------------------------------------- /omnileads_ui/src/assets/oml_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/omnileads_ui/src/assets/oml_logo.png -------------------------------------------------------------------------------- /omnileads_ui/src/globals/agent/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/omnileads_ui/src/globals/agent/index.js -------------------------------------------------------------------------------- /omnileads_ui/src/globals/agent/whatsapp/disposition.js: -------------------------------------------------------------------------------- 1 | export const FORM_TYPES = { 2 | OPT1: 0, // No action 3 | OPT2: 1, // Management 4 | OPT3: 2 // Schedule 5 | }; 6 | 7 | export const FIELD_TYPES = { 8 | OPT1: 1, // Text 9 | OPT2: 2, // Date 10 | OPT3: 3, // List 11 | OPT4: 4, // Text box 12 | OPT5: 5, // Number 13 | OPT6: 6 // Dynamic List 14 | }; 15 | 16 | export const FIELD_TYPE_NUMBER = { 17 | OPT1: 1, // INTEGER 18 | OPT2: 2 // DECIMAL 19 | }; 20 | -------------------------------------------------------------------------------- /omnileads_ui/src/globals/index.js: -------------------------------------------------------------------------------- 1 | export const CONFIRM_BTN_COLOR = '#4CAF50'; 2 | export const CANCEL_BTN_COLOR = '#D32F2F'; 3 | export const HTTP_STATUS = { 4 | SUCCESS: 'SUCCESS', 5 | ERROR: 'ERROR', 6 | WARNING: 'WARNING' 7 | }; 8 | export const COLORS = { 9 | WHATSAPP: { 10 | TealGreen: '#128C7E', 11 | TealGreenDark: '#075E54', 12 | LightGreen: '#25D366' 13 | } 14 | }; 15 | 16 | export const CAMPAIGN_TYPES = { 17 | MANUAL: 1, 18 | DIALER: 2, 19 | ENTRANTE: 3, 20 | PREVIEW: 4 21 | }; 22 | -------------------------------------------------------------------------------- /omnileads_ui/src/globals/supervisor/campaign.js: -------------------------------------------------------------------------------- 1 | export const CAMPAIGN_TYPES = { 2 | MANUAL: 1, 3 | DIALER: 2, 4 | INBOUND: 3, 5 | PREVIEW: 4 6 | }; 7 | -------------------------------------------------------------------------------- /omnileads_ui/src/globals/supervisor/ivr.js: -------------------------------------------------------------------------------- 1 | // Audio selected 2 | export const MAIN_AUDIO = 1; 3 | export const TIME_OUT_AUDIO = 2; 4 | export const INVALID_AUDIO = 3; 5 | // Fixed destinations 6 | export const TIME_OUT_DEST = 1; 7 | export const INVALID_DEST = 2; 8 | // Destination Types 9 | export const CAMPAIGN = 1; 10 | export const VALIDATION_DATE = 2; 11 | export const IVR = 3; 12 | export const HANGUP = 5; 13 | export const ID_CLIENT = 9; 14 | export const CUSTOM_DST = 7; 15 | export const AGENT = 11; 16 | // Audio Type 17 | export const INTERNAL_AUDIO = 1; 18 | export const EXTERNAL_AUDIO = 2; 19 | // Regex DTMF 20 | export const DTMF_REGEX = new RegExp('^[0-9|-|#|*]$'); 21 | -------------------------------------------------------------------------------- /omnileads_ui/src/globals/supervisor/whatsapp/index.js: -------------------------------------------------------------------------------- 1 | export const WHATSAPP_URL_NAME = 'supervisor_whatsapp'; 2 | export const WHATSAPP_REPORTS_URL_NAME = `${WHATSAPP_URL_NAME}_report`; 3 | export const TEMPLATE_TYPES = { 4 | MESSAGE: 0, 5 | WHATSAPP: 1 6 | }; 7 | -------------------------------------------------------------------------------- /omnileads_ui/src/globals/supervisor/whatsapp/line.js: -------------------------------------------------------------------------------- 1 | export const DESTINATION_FORM_TYPES = { 2 | CAMPAIGN: 1, 3 | INTERACTIVE: 10 4 | }; 5 | 6 | export const DESTINATION_OPTION_TYPES = { 7 | CAMPAIGN: 1, 8 | INTERACTIVE: 10 9 | }; 10 | 11 | export const DESTINATION_TYPES_BACK = { 12 | CAMPAIGN: 1, 13 | INTERACTIVE: 10 14 | }; 15 | -------------------------------------------------------------------------------- /omnileads_ui/src/globals/supervisor/whatsapp/message_template.js: -------------------------------------------------------------------------------- 1 | export const TEMPLATE_TYPES = { 2 | TEXT: 0, 3 | IMAGE: 1, 4 | FILE: 2, 5 | AUDIO: 3, 6 | VIDEO: 4, 7 | STICKER: 5, 8 | INTERACTIVE_LIST: 6, 9 | QUICK_REPLY_TEXT: 7, 10 | QUICK_REPLY_IMAGE: 8, 11 | QUICK_REPLY_FILE: 9, 12 | LOCATION: 10, 13 | CONTACT: 11 14 | }; 15 | -------------------------------------------------------------------------------- /omnileads_ui/src/globals/supervisor/whatsapp/provider.js: -------------------------------------------------------------------------------- 1 | export const PROVIDER_TYPES = { 2 | TWILIO: 0, 3 | META: 1, 4 | GUPSHUP: 2 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/locales/index.js: -------------------------------------------------------------------------------- 1 | import es from './locales.es'; 2 | import en from './locales.en'; 3 | import fa from './locales.fa'; 4 | import pt from './locales.pt_br'; 5 | 6 | export default { 7 | es, 8 | en, 9 | fa, 10 | 'en-US': en, 11 | 'pt-br': pt 12 | }; 13 | -------------------------------------------------------------------------------- /omnileads_ui/src/locales/locales.en.js: -------------------------------------------------------------------------------- 1 | import globals from './globals/en'; 2 | import forms from './forms/en'; 3 | import models from './models/en'; 4 | import views from './views/en'; 5 | 6 | export default { 7 | globals, 8 | forms, 9 | models, 10 | views 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/locales/locales.es.js: -------------------------------------------------------------------------------- 1 | import globals from './globals/es'; 2 | import forms from './forms/es'; 3 | import models from './models/es'; 4 | import views from './views/es'; 5 | 6 | export default { 7 | globals, 8 | forms, 9 | models, 10 | views 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/locales/locales.fa.js: -------------------------------------------------------------------------------- 1 | import globals from './globals/fa'; 2 | import forms from './forms/fa'; 3 | import models from './models/fa'; 4 | import views from './views/fa'; 5 | 6 | export default { 7 | globals, 8 | forms, 9 | models, 10 | views 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/locales/locales.pt_br.js: -------------------------------------------------------------------------------- 1 | import globals from './globals/pt_br'; 2 | import forms from './forms/pt_br'; 3 | import models from './models/pt_br'; 4 | import views from './views/pt_br'; 5 | 6 | export default { 7 | globals, 8 | forms, 9 | models, 10 | views 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/agent/index.js: -------------------------------------------------------------------------------- 1 | import WhatsappAgentRoutes from './whatsapp'; 2 | 3 | export const agentRoutes = [ 4 | ...WhatsappAgentRoutes 5 | ]; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/agent/whatsapp/contact_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/agent/whatsapp/contact/Index'; 2 | import { WHATSAPP_URL_NAME } from '@/globals/agent/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_URL_NAME}_contact_form.html`, 7 | name: `${WHATSAPP_URL_NAME}_contact_form`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/agent/whatsapp/disposition_chat_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/agent/whatsapp/disposition_chat/Index'; 2 | import { WHATSAPP_URL_NAME } from '@/globals/agent/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_URL_NAME}_disposition_chat.html`, 7 | name: `${WHATSAPP_URL_NAME}_disposition_chat`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/agent/whatsapp/message_transfer_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/agent/whatsapp/message_transfer/Index'; 2 | import { WHATSAPP_URL_NAME } from '@/globals/agent/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_URL_NAME}_message_transfer.html`, 7 | name: `${WHATSAPP_URL_NAME}_message_transfer`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/agent/whatsapp/template_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/agent/whatsapp/templates/Index'; 2 | import { WHATSAPP_URL_NAME } from '@/globals/agent/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_URL_NAME}_templates.html`, 7 | name: `${WHATSAPP_URL_NAME}_templates`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from 'vue-router'; 2 | import { supervisorRoutes } from './supervisor'; 3 | import { agentRoutes } from './agent'; 4 | 5 | const routes = [ 6 | ...supervisorRoutes, 7 | ...agentRoutes 8 | ]; 9 | 10 | const router = createRouter({ 11 | history: createWebHistory(process.env.VUE_APP_PUBLIC_PATH || '/static/omnileads-frontend/'), 12 | routes 13 | }); 14 | 15 | export default router; 16 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/add_agents_to_campaign_routes.js: -------------------------------------------------------------------------------- 1 | import AddAgentsToCampaign from '@/views/supervisor/AddAgentsToCampaign'; 2 | 3 | export default [ 4 | { 5 | path: '/supervisor_add_agents_to_campaign.html', 6 | name: 'supervisor_add_agents_to_campaign', 7 | component: AddAgentsToCampaign 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/audit_routes.js: -------------------------------------------------------------------------------- 1 | import AuditSupervisor from '@/views/supervisor/AuditSupervisor'; 2 | 3 | export default [ 4 | { 5 | path: '/supervisor_security_audit.html', 6 | name: 'supervisor_security_audit', 7 | component: AuditSupervisor 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/call_disposition_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/call_dispositions/Index'; 2 | 3 | export default [ 4 | { 5 | path: '/supervisor_call_dispositions.html', 6 | name: 'supervisor_call_dispositions', 7 | component: Index 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/external_site_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/external_sites/Index'; 2 | import New from '@/views/supervisor/external_sites/New'; 3 | import Edit from '@/views/supervisor/external_sites/Edit'; 4 | 5 | export default [ 6 | { 7 | path: '/supervisor_external_sites.html', 8 | name: 'supervisor_external_sites', 9 | component: Index 10 | }, 11 | { 12 | path: '/supervisor_external_sites/new', 13 | name: 'supervisor_external_sites_new', 14 | component: New 15 | }, 16 | { 17 | path: '/supervisor_external_sites/:id/update', 18 | name: 'supervisor_external_sites_update', 19 | component: Edit 20 | } 21 | ]; 22 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/group_of_hour_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/group_of_hours/Index'; 2 | import New from '@/views/supervisor/group_of_hours/New'; 3 | import Edit from '@/views/supervisor/group_of_hours/Edit'; 4 | 5 | export default [ 6 | { 7 | path: '/supervisor_group_of_hours.html', 8 | name: 'supervisor_group_of_hours', 9 | component: Index 10 | }, 11 | { 12 | path: '/supervisor_group_of_hours/new', 13 | name: 'supervisor_group_of_hours_new', 14 | component: New 15 | }, 16 | { 17 | path: '/supervisor_group_of_hours/:id/edit', 18 | name: 'supervisor_group_of_hours_edit', 19 | component: Edit 20 | } 21 | ]; 22 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/inbound_route_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/inbound_routes/Index'; 2 | import New from '@/views/supervisor/inbound_routes/New'; 3 | import Edit from '@/views/supervisor/inbound_routes/Edit'; 4 | 5 | export default [ 6 | { 7 | path: '/supervisor_inbound_routes.html', 8 | name: 'supervisor_inbound_routes', 9 | component: Index 10 | }, 11 | { 12 | path: '/supervisor_inbound_routes/new', 13 | name: 'supervisor_inbound_routes_new', 14 | component: New 15 | }, 16 | { 17 | path: '/supervisor_inbound_routes/:id/edit', 18 | name: 'supervisor_inbound_routes_edit', 19 | component: Edit 20 | } 21 | ]; 22 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/ivr_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/ivrs/Index'; 2 | import New from '@/views/supervisor/ivrs/New'; 3 | import Edit from '@/views/supervisor/ivrs/Edit'; 4 | 5 | export default [ 6 | { 7 | path: '/supervisor_ivrs.html', 8 | name: 'supervisor_ivrs', 9 | component: Index 10 | }, 11 | { 12 | path: '/supervisor_ivrs/new', 13 | name: 'supervisor_ivrs_new', 14 | component: New 15 | }, 16 | { 17 | path: '/supervisor_ivrs/:id/edit', 18 | name: 'supervisor_ivrs_edit', 19 | component: Edit 20 | } 21 | ]; 22 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/outbound_route_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/outbound_routes/Index'; 2 | import New from '@/views/supervisor/outbound_routes/New'; 3 | import Edit from '@/views/supervisor/outbound_routes/Edit'; 4 | 5 | export default [ 6 | { 7 | path: '/supervisor_outbound_routes.html', 8 | name: 'supervisor_outbound_routes', 9 | component: Index 10 | }, 11 | { 12 | path: '/supervisor_outbound_routes/new', 13 | name: 'supervisor_outbound_routes_new', 14 | component: New 15 | }, 16 | { 17 | path: '/supervisor_outbound_routes/:id/edit', 18 | name: 'supervisor_outbound_routes_edit', 19 | component: Edit 20 | } 21 | ]; 22 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/pause_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/pauses/Index'; 2 | 3 | export default [ 4 | { 5 | path: '/supervisor_pauses.html', 6 | name: 'supervisor_pauses', 7 | component: Index 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/pause_set_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/pause_sets/Index'; 2 | import Detail from '@/views/supervisor/pause_sets/Detail'; 3 | import New from '@/views/supervisor/pause_sets/New'; 4 | 5 | export default [ 6 | { 7 | path: '/supervisor_pause_sets.html', 8 | name: 'supervisor_pause_sets', 9 | component: Index 10 | }, 11 | { 12 | path: '/supervisor_pause_sets/new', 13 | name: 'supervisor_pause_sets_new', 14 | component: New 15 | }, 16 | { 17 | path: '/supervisor_pause_sets/:id', 18 | name: 'supervisor_pause_sets_detail', 19 | component: Detail 20 | } 21 | ]; 22 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/register_server_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/register_server/Index'; 2 | 3 | export default [ 4 | { 5 | path: '/supervisor_register_server.html', 6 | name: 'supervisor_register_server', 7 | component: Index 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/supervision_dashboard_routes.js: -------------------------------------------------------------------------------- 1 | import DashboardSupervision from '@/views/supervisor/DashboardSupervision'; 2 | 3 | export default [ 4 | { 5 | path: '/supervisor_supervision_dashboard.html', 6 | name: 'supervisor_supervision_dashboard', 7 | component: DashboardSupervision 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/whatsapp/message_template_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/whatsapp/message_templates/Index'; 2 | import { WHATSAPP_URL_NAME } from '@/globals/supervisor/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_URL_NAME}_message_templates.html`, 7 | name: `${WHATSAPP_URL_NAME}_message_templates`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/whatsapp/provider_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/whatsapp/providers/Index'; 2 | import { WHATSAPP_URL_NAME } from '@/globals/supervisor/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_URL_NAME}_providers.html`, 7 | name: `${WHATSAPP_URL_NAME}_providers`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/whatsapp/reports/campaign/conversation_report_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/whatsapp/reports/campaign/conversation_report/Index'; 2 | import { WHATSAPP_REPORTS_URL_NAME } from '@/globals/supervisor/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_REPORTS_URL_NAME}_campaign_conversations.html`, 7 | name: `${WHATSAPP_REPORTS_URL_NAME}_campaign_conversations`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/whatsapp/reports/campaign/index.js: -------------------------------------------------------------------------------- 1 | import SupWhatsReportCampaignConversationRoutes from './conversation_report_routes'; 2 | 3 | export default [ 4 | ...SupWhatsReportCampaignConversationRoutes 5 | ]; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/whatsapp/reports/general_report_routes.js: -------------------------------------------------------------------------------- 1 | import Index from '@/views/supervisor/whatsapp/reports/general/Index'; 2 | import { WHATSAPP_REPORTS_URL_NAME } from '@/globals/supervisor/whatsapp'; 3 | 4 | export default [ 5 | { 6 | path: `/${WHATSAPP_REPORTS_URL_NAME}_general.html`, 7 | name: `${WHATSAPP_REPORTS_URL_NAME}_general`, 8 | component: Index 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/router/supervisor/whatsapp/reports/index.js: -------------------------------------------------------------------------------- 1 | import SupWhatsReportCampaignRoutes from './campaign'; 2 | import SupWhatsReportGeneralRoutes from './general_report_routes'; 3 | 4 | export default [ 5 | ...SupWhatsReportCampaignRoutes, 6 | ...SupWhatsReportGeneralRoutes 7 | ]; 8 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/agent/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/omnileads_ui/src/services/agent/index.js -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/call_disposition_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/call_disposition_urls'; 2 | import { BaseService } from './../base_service'; 3 | 4 | export default class CallDispositionService extends BaseService { 5 | constructor () { 6 | super(urls, 'Calificacion'); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/external_site_authentication_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/external_site_authentication_urls'; 2 | import { HTTP, BaseService } from './../base_service'; 3 | 4 | export default class ExternalSiteAuthenticationService extends BaseService { 5 | constructor () { 6 | super(urls, 'Autenticacion de Sitio Externo'); 7 | } 8 | 9 | async test (data) { 10 | try { 11 | this.setPayload(HTTP.POST, JSON.stringify(data)); 12 | const resp = await fetch(urls.Test, this.payload); 13 | return await resp.json(); 14 | } catch (error) { 15 | console.error(error); 16 | return {}; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/external_system_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/external_system_urls'; 2 | import { BaseService } from './../base_service'; 3 | 4 | export default class ExternalSystemService extends BaseService { 5 | constructor () { 6 | super(urls, 'Sistema Externo'); 7 | } 8 | 9 | async getAgents () { 10 | try { 11 | const resp = await fetch(urls.AgentsExternalSystemList, this.payload); 12 | return await resp.json(); 13 | } catch (error) { 14 | console.error('Error al obtener agentes'); 15 | console.error(error); 16 | return {}; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/group_of_hour_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/group_of_hour_urls'; 2 | import { BaseService } from './../base_service'; 3 | 4 | export default class GroupOfHourService extends BaseService { 5 | constructor () { 6 | super(urls, 'Grupo Horario'); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/whatsapp/configuration_campaign_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/whatsapp/configuration_campaign_urls'; 2 | import { BaseService } from '@/services/base_service'; 3 | 4 | export default class WhatsappConfigurationCampaignService extends BaseService { 5 | constructor () { 6 | super(urls, 'Whatsapp Configuracion Campaign'); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/whatsapp/group_of_message_template_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/whatsapp/group_of_message_template_urls'; 2 | import { BaseService } from '@/services/base_service'; 3 | 4 | export default class GroupOfMessageTemplateService extends BaseService { 5 | constructor () { 6 | super(urls, 'Grupo de plantillas de mensaje'); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/whatsapp/line_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/whatsapp/line_urls'; 2 | import { BaseService } from '@/services/base_service'; 3 | 4 | export default class LineService extends BaseService { 5 | constructor () { 6 | super(urls, 'Linea de WhatsApp'); 7 | } 8 | 9 | async getCampaigns () { 10 | try { 11 | const resp = await fetch(this.urls.Campaigns, this.payload); 12 | return await resp.json(); 13 | } catch (error) { 14 | console.error(`Error al obtener < Campanas >`); 15 | return []; 16 | } finally { 17 | this.initPayload(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/whatsapp/message_template_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/whatsapp/message_template_urls'; 2 | import { BaseService } from '@/services/base_service'; 3 | 4 | export default class MessageTemplateService extends BaseService { 5 | constructor () { 6 | super(urls, 'Plantillas de Mensaje'); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/services/supervisor/whatsapp/provider_service.js: -------------------------------------------------------------------------------- 1 | import urls from '@/api_urls/supervisor/whatsapp/provider_urls'; 2 | import { BaseService } from '@/services/base_service'; 3 | 4 | export default class ProviderService extends BaseService { 5 | constructor () { 6 | super(urls, 'Proveedor WhatsApp'); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/index.js: -------------------------------------------------------------------------------- 1 | import { 2 | AgentWhatsappActions, 3 | AgentWhatsappMutations, 4 | AgentWhatsappState, 5 | AgentWhatsappGetters 6 | } from './whatsapp'; 7 | 8 | export const agentState = { 9 | ...AgentWhatsappState 10 | }; 11 | 12 | export const agentMutations = { 13 | ...AgentWhatsappMutations 14 | }; 15 | 16 | export const agentActions = { 17 | ...AgentWhatsappActions 18 | }; 19 | 20 | export const agentGetters = { 21 | ...AgentWhatsappGetters 22 | }; 23 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/contact/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | agtWhatsContactDBFields: [], 3 | agtWhatsContactList: [], 4 | agtWhatsContactSearchResults: [], 5 | newContact: [] 6 | }; 7 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/disposition_chat/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | agtWhatsDispositionChatOptions: [], 3 | agtWhatsDispositionChatDetail: { 4 | id: null, 5 | contact: null, 6 | agent: null, 7 | comments: '', 8 | form_response: null, 9 | disposition_data: null 10 | }, 11 | agtWhatsDispositionChatHistory: [], 12 | agtWhatsDispositionChatFormToCreate: true 13 | }; 14 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/messages/actions.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-unused-vars */ 2 | export default { 3 | agtWhatSendMessageStatus ({ commit }, info = null) { 4 | try { 5 | commit('agtWhatSendMessageStatus', info); 6 | } catch (error) { 7 | console.error('===> ERROR al actualizar el status del mensaje'); 8 | console.error(error); 9 | commit('agtWhatSendMessageStatus', null); 10 | } 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/messages/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | agtWhatSendMessageStatus (state, info = null) { 3 | if (info) { 4 | state.agtWhatsCoversationMessages.forEach((message) => { 5 | if (message.id === info.message_id) { 6 | message.status = info.status; 7 | message.fail_reason = info.fail_reason; 8 | } 9 | }); 10 | } 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/templates/actions.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-unused-vars */ 2 | 3 | export default {}; 4 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/templates/mutations.js: -------------------------------------------------------------------------------- 1 | export default {}; 2 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/templates/state.js: -------------------------------------------------------------------------------- 1 | export default {}; 2 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/transfer_chat/getters.js: -------------------------------------------------------------------------------- 1 | export default { 2 | getAgtWhatsTransferChatForm (state) { 3 | return state.agtWhatsTransferChatForm; 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/transfer_chat/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | agtWhatsTransferChatInitData (state, data) { 3 | state.agtWhatsTransferChatForm = { 4 | to: data?.to, 5 | conversationId: data?.conversationId 6 | }; 7 | }, 8 | agtWhatsTransferChatInitAgents (state, data) { 9 | state.agtWhatsTransferChatAgents = data; 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/agent/whatsapp/transfer_chat/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | agtWhatsTransferChatAgents: [], 3 | agtWhatsTransferChatForm: { 4 | to: null, 5 | conversationId: null 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex'; 2 | import { supervisorActions, supervisorGetters, supervisorMutations, supervisorState } from './supervisor'; 3 | import { agentActions, agentMutations, agentState, agentGetters } from './agent'; 4 | 5 | export default createStore({ 6 | state: { 7 | ...supervisorState, 8 | ...agentState 9 | }, 10 | mutations: { 11 | ...supervisorMutations, 12 | ...agentMutations 13 | }, 14 | actions: { 15 | ...supervisorActions, 16 | ...agentActions 17 | }, 18 | modules: { 19 | }, 20 | getters: { 21 | ...supervisorGetters, 22 | ...agentGetters 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/call_disposition/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initCallDispositions (state, callDispositions) { 3 | state.callDispositions = callDispositions; 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/call_disposition/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | callDispositions: [] 3 | }; 4 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/external_site/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initExternalSites (state, sites) { 3 | state.externalSites = sites; 4 | }, 5 | initExternalSiteDetail (state, site) { 6 | state.externalSiteDetail = site; 7 | }, 8 | initExternalSitesDynamicList(state, sites) { 9 | console.log('----', sites) 10 | state.externalSitesDynamicList = sites.filter(item => item.disparador === 5); 11 | } 12 | 13 | }; 14 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/external_site/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | externalSites: [], 3 | externalSitesDynamicList: [], 4 | externalSiteDetail: {} 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/external_site_authentication/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | externalSiteAuthentications: [], 3 | externalSiteAuthentication: { 4 | id: null, 5 | nombre: null, 6 | url: '', 7 | username: '', 8 | password: '', 9 | campo_token: 'token', 10 | campo_duracion: '', 11 | duracion: 0, 12 | token: null, 13 | expiracion_token: null, 14 | ssl_estricto: false 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/external_system/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initExternalSystems (state, externalSystems) { 3 | state.externalSystems = externalSystems; 4 | }, 5 | initAgentsExternalSystems (state, agents) { 6 | state.agentsExternalSystem = agents; 7 | }, 8 | initExternalSystemDetail (state, externalSystem) { 9 | state.externalSystemDetail = externalSystem; 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/external_system/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | externalSystems: [], 3 | externalSystemDetail: { 4 | nombre: '', 5 | agentes: [] 6 | }, 7 | newExternalSystem: { 8 | nombre: '', 9 | agentes: [] 10 | }, 11 | agentsExternalSystem: [] 12 | }; 13 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/form/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | forms: [], 3 | formDetail: { 4 | nombre: '', 5 | descripcion: '', 6 | campos: [], 7 | oculto: false 8 | }, 9 | newForm: { 10 | id: null, 11 | nombre: '', 12 | descripcion: '', 13 | campos: [] 14 | }, 15 | newFormField: { 16 | id: null, 17 | nombre_campo: '', 18 | orden: null, 19 | tipo: null, 20 | tipo_numero: null, 21 | cifras_significativas: null, 22 | values_select: null, 23 | is_required: false 24 | }, 25 | isFormToCreate: true, 26 | optionListValues: [] 27 | }; 28 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/inbound_routes/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | inboundRoutes: [], 3 | destinations: [], 4 | languages: [], 5 | inboundRouteDetail: {}, 6 | inboundRouteForm: { 7 | id: null, 8 | nombre: '', 9 | telefono: '', 10 | prefijo_caller_id: '', 11 | idioma: null, 12 | destino: null, 13 | tipo_destino: null 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/outbound_routes/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | outboundRoutes: [], 3 | outboundRoute: { 4 | id: null, 5 | nombre: '', 6 | ring_time: 25, 7 | dial_options: 'Tt', 8 | troncales: [], 9 | patrones_de_discado: [] 10 | }, 11 | dialPattern: { 12 | id: null, 13 | prepend: null, 14 | prefix: null, 15 | match_pattern: null 16 | }, 17 | trunk: { 18 | id: null, 19 | troncal: null 20 | }, 21 | sipTrunks: [], 22 | orphanTrunks: [] 23 | }; 24 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/pause/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initPauses (state, pauses) { 3 | state.pauses = pauses; 4 | }, 5 | initPauseDetail (state, pause) { 6 | state.pauseDetail = pause; 7 | }, 8 | initPauseForm (state, pause) { 9 | if (pause === null) { 10 | state.pauseForm = { 11 | id: null, 12 | nombre: '', 13 | tipo: '', 14 | eliminada: false 15 | }; 16 | } else { 17 | state.pauseForm = { 18 | id: pause.id, 19 | nombre: pause.nombre, 20 | tipo: pause.tipo, 21 | eliminada: pause.eliminada 22 | }; 23 | } 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/pause/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | pauses: [], 3 | pauseDetail: {}, 4 | pauseForm: { 5 | id: null, 6 | nombre: '', 7 | tipo: '', 8 | eliminada: false 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/pause_set/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initGroups (state, groups) { 3 | state.groups = groups; 4 | }, 5 | initPauseSets (state, pauseSets) { 6 | state.pauseSets = pauseSets; 7 | }, 8 | initPauseSetDetail (state, pauseSetDetail) { 9 | state.pauseSetDetail = pauseSetDetail; 10 | }, 11 | initActivePauses (state, pauses) { 12 | state.activePauses = pauses; 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/pause_set/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | pauseSets: [], 3 | pauseSetDetail: {}, 4 | activePauses: [] 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/register_server/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initRegisterServer (state, { registered = false, registerServer = null, adminName = '', isAdmin = false }) { 3 | state.registerServer = { 4 | name: registerServer ? registerServer.client : '', 5 | email: registerServer ? registerServer.email : '', 6 | password: registerServer ? registerServer.password : '', 7 | phone: registerServer ? registerServer.phone : '' 8 | }; 9 | state.registerServerStatus = registered; 10 | state.registerServerAdminName = adminName; 11 | state.registerServerIsAdmin = isAdmin; 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/register_server/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | registerServer: { 3 | name: '', 4 | email: '', 5 | password: '', 6 | phone: '' 7 | }, 8 | registerServerStatus: false, 9 | registerServerIsAdmin: false, 10 | registerServerAdminName: '' 11 | }; 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/configuration_campaign/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initSupCampaignTemplates (state, templates) { 3 | state.supCampaignTemplates = templates; 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/configuration_campaign/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | supCampaignTemplates: [] 3 | }; 4 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/group_of_message_templates/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | supWhatsappGroupOfMessageTemplates: [], 3 | supWhatsappGroupOfMessageTemplate: { 4 | id: null, 5 | nombre: '', 6 | plantillas: [] 7 | }, 8 | supMessageTemplatesOfGroup: [] 9 | }; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/message_templates/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | supWhatsappMessageTemplates: [], 3 | supWhatsappMessageTemplate: { 4 | id: null, 5 | nombre: '', 6 | tipo: null, 7 | configuracion: null 8 | }, 9 | supWhatsappMessageTemplateFormFields: null 10 | }; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/providers/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | supWhatsappProviders: [], 3 | supWhatsappProvider: { 4 | id: null, 5 | nombre: '', 6 | tipo_proveedor: null, 7 | configuracion: null 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/reports/campaign/conversation_report/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initSupWhatsReportCampaignConversations (state, conversations) { 3 | state.supWhatsReportCampaignConversations = conversations; 4 | }, 5 | initSupWhatsReportCampaignAgents (state, agents) { 6 | state.supWhatsReportCampaignAgents = agents.map((agent) => { 7 | return { 8 | value: agent.agent_id, 9 | name: agent.agent_full_name 10 | }; 11 | }); 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/reports/campaign/conversation_report/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | supWhatsReportCampaignConversations: [], 3 | supWhatsReportCampaignAgents: [], 4 | supWhatsReportCampaignConversation: { 5 | id: null, 6 | nombre: '', 7 | tipo_proveedor: null, 8 | configuracion: null 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/reports/campaign/index.js: -------------------------------------------------------------------------------- 1 | import ConversationReportState from './conversation_report/state'; 2 | import ConversationReportMutations from './conversation_report/mutations'; 3 | import ConversationReportActions from './conversation_report/actions'; 4 | 5 | export const SupervisorWhatsappCampaignReportState = { 6 | ...ConversationReportState 7 | }; 8 | 9 | export const SupervisorWhatsappCampaignReportMutations = { 10 | ...ConversationReportMutations 11 | }; 12 | 13 | export const SupervisorWhatsappCampaignReportActions = { 14 | ...ConversationReportActions 15 | }; 16 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/reports/general_report/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | supWhatsReportGeneral: { 3 | sent_messages: 0, 4 | received_messages: 0, 5 | interactions_started: 0, 6 | attended_chats: 0, 7 | not_attended_chats: 0, 8 | inbound_chats_attended: 0, 9 | inbound_chats_not_attended: 0, 10 | inbound_chats_expired: 0, 11 | outbound_chats_attended: 0, 12 | outbound_chats_not_attended: 0, 13 | outbound_chats_expired: 0, 14 | outbound_chats_failed: 0 15 | }, 16 | supWhatsReportGeneralColors: { 17 | rgbColors: [], 18 | rgbaColors: [] 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/whatsapp_templates/actions.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-unused-vars */ 2 | import WhatsappTemplateService from '@/services/supervisor/whatsapp/whatsapp_template_service'; 3 | const service = new WhatsappTemplateService(); 4 | 5 | export default { 6 | async initSupWhatsappTemplates ({ commit }) { 7 | const { status, data } = await service.list(); 8 | commit('initSupWhatsappTemplates', status === 'SUCCESS' ? data : []); 9 | }, 10 | async sycnupWhatsappTemplates ({ commit }, lineId) { 11 | return await service.sycnUp(lineId); 12 | }, 13 | async whatsappTemplateStatusChange ({ commit }, { templateId, lineId }) { 14 | return await service.changeStatus({ templateId, lineId }); 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/whatsapp_templates/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | initSupWhatsappTemplates (state, templates) { 3 | state.supWhatsappTemplates = templates; 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /omnileads_ui/src/store/supervisor/whatsapp/whatsapp_templates/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | supWhatsappTemplates: [] 3 | }; 4 | -------------------------------------------------------------------------------- /omnileads_ui/src/views/agent/whatsapp/conversation/FileUploader.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /omnileads_ui/src/views/agent/whatsapp/conversation/ImageUploader.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /omnileads_ui/src/views/supervisor/DashboardSupervision.vue: -------------------------------------------------------------------------------- 1 | 4 | 12 | -------------------------------------------------------------------------------- /omnileads_ui/src/views/supervisor/whatsapp/Index.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /omnileads_ui/tests/e2e/.eslintrc.js: -------------------------------------------------------------------------------- 1 | // module.exports = { 2 | // plugins: [ 3 | // 'cypress' 4 | // ], 5 | // env: { 6 | // mocha: true, 7 | // 'cypress/globals': true 8 | // }, 9 | // rules: { 10 | // strict: 'off' 11 | // } 12 | // } 13 | 14 | 15 | // Add this in package.json 16 | // "@vue/cli-plugin-e2e-cypress": "~4.5.0", -------------------------------------------------------------------------------- /omnileads_ui/tests/e2e/specs/test.js: -------------------------------------------------------------------------------- 1 | // https://docs.cypress.io/api/introduction/api.html 2 | 3 | // describe('My First Test', () => { 4 | // it('Visits the app root url', () => { 5 | // cy.visit('/') 6 | // cy.contains('h1', 'Welcome to Your Vue.js App') 7 | // }) 8 | // }) 9 | -------------------------------------------------------------------------------- /omnileads_ui/tests/unit/example.spec.js: -------------------------------------------------------------------------------- 1 | // import { shallowMount } from '@vue/test-utils' 2 | // import HelloWorld from '@/components/HelloWorld.vue' 3 | 4 | // describe('HelloWorld.vue', () => { 5 | // it('renders props.msg when passed', () => { 6 | // const msg = 'new message' 7 | // const wrapper = shallowMount(HelloWorld, { 8 | // props: { msg } 9 | // }) 10 | // expect(wrapper.text()).toMatch(msg) 11 | // }) 12 | // }) 13 | -------------------------------------------------------------------------------- /orquestador_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/orquestador_app/__init__.py -------------------------------------------------------------------------------- /orquestador_app/core/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/orquestador_app/core/__init__.py -------------------------------------------------------------------------------- /orquestador_app/core/gupshup_code_error.py: -------------------------------------------------------------------------------- 1 | GUPSHUP_CODE_ERROR = (472, 480, 1002, 1021, 1026, 1028, ) 2 | -------------------------------------------------------------------------------- /orquestador_app/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/orquestador_app/management/__init__.py -------------------------------------------------------------------------------- /orquestador_app/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/orquestador_app/management/commands/__init__.py -------------------------------------------------------------------------------- /png/omnileads_logo_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/png/omnileads_logo_1.png -------------------------------------------------------------------------------- /reciclado_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reciclado_app/__init__.py -------------------------------------------------------------------------------- /reciclado_app/admin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reciclado_app/admin.py -------------------------------------------------------------------------------- /reciclado_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reciclado_app/migrations/__init__.py -------------------------------------------------------------------------------- /reciclado_app/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reciclado_app/models.py -------------------------------------------------------------------------------- /reciclado_app/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reciclado_app/tests/__init__.py -------------------------------------------------------------------------------- /reportes_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/__init__.py -------------------------------------------------------------------------------- /reportes_app/archivos_de_reporte/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/archivos_de_reporte/__init__.py -------------------------------------------------------------------------------- /reportes_app/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/management/__init__.py -------------------------------------------------------------------------------- /reportes_app/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/management/commands/__init__.py -------------------------------------------------------------------------------- /reportes_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/migrations/__init__.py -------------------------------------------------------------------------------- /reportes_app/reportes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/reportes/__init__.py -------------------------------------------------------------------------------- /reportes_app/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/templatetags/__init__.py -------------------------------------------------------------------------------- /reportes_app/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/reportes_app/tests/__init__.py -------------------------------------------------------------------------------- /slowsql/postgresql/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/slowsql/postgresql/__init__.py -------------------------------------------------------------------------------- /slowsql/postgresql/base.py: -------------------------------------------------------------------------------- 1 | from django.db.backends.postgresql import base 2 | 3 | 4 | class DatabaseWrapper(base.DatabaseWrapper): 5 | 6 | def __init__(self, *args, **kwargs): 7 | super().__init__(*args, **kwargs) 8 | self.force_debug_cursor = True 9 | -------------------------------------------------------------------------------- /supervision_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/supervision_app/__init__.py -------------------------------------------------------------------------------- /supervision_app/admin.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (C) 2018 Freetech Solutions 3 | 4 | # This file is part of OMniLeads 5 | 6 | # This program is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU Lesser General Public License version 3, as published by 8 | # the Free Software Foundation. 9 | 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU Lesser General Public License for more details. 14 | 15 | # You should have received a copy of the GNU Lesser General Public License 16 | # along with this program. If not, see http://www.gnu.org/licenses/. 17 | # 18 | -------------------------------------------------------------------------------- /supervision_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/supervision_app/migrations/__init__.py -------------------------------------------------------------------------------- /supervision_app/models.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (C) 2018 Freetech Solutions 3 | 4 | # This file is part of OMniLeads 5 | 6 | # This program is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU Lesser General Public License version 3, as published by 8 | # the Free Software Foundation. 9 | 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU Lesser General Public License for more details. 14 | 15 | # You should have received a copy of the GNU Lesser General Public License 16 | # along with this program. If not, see http://www.gnu.org/licenses/. 17 | # 18 | -------------------------------------------------------------------------------- /supervision_app/services/redisgears_action_scripts/registrar_evento_agente_change.py: -------------------------------------------------------------------------------- 1 | 2 | def process_event(x): 3 | STREAM_LENGHT = %d 4 | value = x['value'] 5 | try: 6 | streams = value['STREAMS'].split(',') 7 | except: 8 | streams = [] 9 | for stream in streams: 10 | if execute('exists', stream) == 1: 11 | execute('XADD', stream, 'MAXLEN', '~', STREAM_LENGHT, '*', 'value', value) 12 | 13 | 14 | GearsBuilder(desc='sup_agent') \ 15 | .foreach(process_event) \ 16 | .register('OML:AGENT:*', keyTypes=['hash'], mode='sync') 17 | -------------------------------------------------------------------------------- /supervision_app/static/supervision_app/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/supervision_app/static/supervision_app/images/sort_asc.png -------------------------------------------------------------------------------- /supervision_app/static/supervision_app/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/supervision_app/static/supervision_app/images/sort_both.png -------------------------------------------------------------------------------- /supervision_app/static/supervision_app/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/supervision_app/static/supervision_app/images/sort_desc.png -------------------------------------------------------------------------------- /supervision_app/tests.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (C) 2018 Freetech Solutions 3 | 4 | # This file is part of OMniLeads 5 | 6 | # This program is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU Lesser General Public License version 3, as published by 8 | # the Free Software Foundation. 9 | 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU Lesser General Public License for more details. 14 | 15 | # You should have received a copy of the GNU Lesser General Public License 16 | # along with this program. If not, see http://www.gnu.org/licenses/. 17 | # 18 | -------------------------------------------------------------------------------- /test/base_prueba_multinum.csv: -------------------------------------------------------------------------------- 1 | columna1, phone, columna2, cell, columna3, home 2 | asd, 351351351, zxc, 351351352, bnm1, 351987001 3 | asp, 351351353, zxc, 351351354, bnm2, 351987002 4 | aso, 351351355, zxc, 351351356, bnm3, 351987003 5 | asi, 351351357, zxc, 351351358, bnm4, 351987004 6 | asu, 351351359, zxc, 351351350, bnm5, 351987005 7 | -------------------------------------------------------------------------------- /test/base_prueba_multinum2.csv: -------------------------------------------------------------------------------- 1 | columna1, phone, columna2, cell, columna3, home 2 | bsd, 351351311, wxc, 351351312, enm1, 351987011 3 | bsp, 351351313, wxc, 351351314, enm2, 351987012 4 | bso, 351351315, wxc, 351351316, enm3, 351987013 5 | bsi, 351351317, wxc, 351351318, enm4, 351987014 6 | bsu, 351351319, wxc, 351351310, enm5, 351987015 7 | -------------------------------------------------------------------------------- /test/ejemplo_lista_rapida.csv: -------------------------------------------------------------------------------- 1 | Nombre,Telefono 2 | alex,453345443 3 | oliver,324241412 4 | lara,343422223 5 | elena,743532323 6 | pablo,345345353 7 | belen,343535355 8 | Florencia,355445354 9 | Carlos,345353453 10 | Micaela,354533333 -------------------------------------------------------------------------------- /test/planilla-ejemplo-0.csv: -------------------------------------------------------------------------------- 1 | telefono,Nombre,Fecha,Hora 2 | 3543009865,lkasdjlfkaf,10/10/2014,12:00 3 | 111534509230,dkasjflkja,10/10/2014,12:00 4 | 2830173491,alsdkjfieasdf,10/10/2014,12:00 5 | 3560127341,kahvuahdsfasdfa,fecha,hora 6 | -------------------------------------------------------------------------------- /test/planilla-ejemplo-0.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/test/planilla-ejemplo-0.xls -------------------------------------------------------------------------------- /test/planilla-ejemplo-1.csv: -------------------------------------------------------------------------------- 1 | telefono,nombre,celular 2 | 3543009865,lkasdjlfkaf,0351156219387 3 | 111534509230,dkasjflkja,0351156982639 4 | 2830173491,alsdkjfieasdf,3516983419 5 | 3560127341,kahvuahdsfasdfa,2954638961 6 | -------------------------------------------------------------------------------- /test/planilla-ejemplo-2.csv: -------------------------------------------------------------------------------- 1 | telefono 2 | 35430098657 3 | 11153450923 4 | 28301734914 5 | 35601273413 6 | -------------------------------------------------------------------------------- /test/planilla-ejemplo-3-headers-con-no-ascii-y-espacios.csv: -------------------------------------------------------------------------------- 1 | telefono,Nombre de él o ella,Fecha,Hora 2 | 354303459865,bla ble bli blo,10/10/2014,12:00 3 | 111534509230,blablabablablab,10/10/2014,12:00 4 | 283453013491,blabla ; bla bl,10/10/2014,12:00 5 | -------------------------------------------------------------------------------- /test/planilla-ejemplo-4.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/test/planilla-ejemplo-4.csv -------------------------------------------------------------------------------- /test/planilla-ejemplo-5.csv: -------------------------------------------------------------------------------- 1 | 35430098657|test|15|ftsender 2 | 11153450923|test|15|ftsender 3 | 28301734914|test|15|ftsender 4 | 35601273413|test|15|ftsender 5 | -------------------------------------------------------------------------------- /test/planilla-ejemplo-6.csv: -------------------------------------------------------------------------------- 1 | telefono,Nombre 2 | 375849371648,Macaraná 3 | 957327493493,佐藤 4 | -------------------------------------------------------------------------------- /test/planilla-ejemplo-7-celdas-vacias.csv: -------------------------------------------------------------------------------- 1 | telefono,Nombre de él o ella,Fecha,Hora 2 | 354303459865,,10/10/2014,12:00 3 | 111534509230,,10/10/2014,12:00 4 | 283453013491,,10/10/2014,12:00 5 | -------------------------------------------------------------------------------- /test/planilla-ejemplo-8-ultima-celda-vacia.csv: -------------------------------------------------------------------------------- 1 | telefono,Nombre de él o ella,Fecha,Hora,Sitaucion 2 | 354303459865,,10/10/2014,12:00, 3 | 111534509230,,10/10/2014,12:00, 4 | 283453013491,,10/10/2014,12:00, 5 | -------------------------------------------------------------------------------- /test/wavs/8k16bitpcm.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/test/wavs/8k16bitpcm.wav -------------------------------------------------------------------------------- /test/wavs/audio1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/test/wavs/audio1.wav -------------------------------------------------------------------------------- /test/wavs/empty.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/test/wavs/empty.wav -------------------------------------------------------------------------------- /test/wavs/error_audio.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/test/wavs/error_audio.mp3 -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/tests/__init__.py -------------------------------------------------------------------------------- /whatsapp_app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/whatsapp_app/__init__.py -------------------------------------------------------------------------------- /whatsapp_app/api/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (C) 2018 Freetech Solutions 3 | 4 | from rest_framework import routers 5 | 6 | 7 | class ViewSetRouter(routers.SimpleRouter): 8 | 9 | def register(self, prefix, viewset, base_name=None): 10 | if base_name is None: 11 | base_name = viewset.__module__.rsplit(".", 1)[1].replace("_", "-") 12 | super(ViewSetRouter, self).register(prefix, viewset, base_name) 13 | -------------------------------------------------------------------------------- /whatsapp_app/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/whatsapp_app/management/__init__.py -------------------------------------------------------------------------------- /whatsapp_app/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/whatsapp_app/management/commands/__init__.py -------------------------------------------------------------------------------- /whatsapp_app/migrations/0002_alter_configuracionwhatsappcampana_grupo_plantilla_whatsapp.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2024-02-07 19:24 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('whatsapp_app', '0001_initial'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='configuracionwhatsappcampana', 16 | name='grupo_plantilla_whatsapp', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='configuracionwhatsapp', to='whatsapp_app.grupoplantillamensaje'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /whatsapp_app/migrations/0003_conversacionwhatsapp_client_alias.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2024-02-19 13:39 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('whatsapp_app', '0002_alter_configuracionwhatsappcampana_grupo_plantilla_whatsapp'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='conversacionwhatsapp', 15 | name='client_alias', 16 | field=models.CharField(max_length=100, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /whatsapp_app/migrations/0004_alter_mensajewhatsapp_conversation.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2024-02-20 10:18 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('whatsapp_app', '0003_conversacionwhatsapp_client_alias'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='mensajewhatsapp', 16 | name='conversation', 17 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='mensajes', to='whatsapp_app.conversacionwhatsapp'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /whatsapp_app/migrations/0005_conversacionwhatsapp_conversation_disposition.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2024-02-26 13:25 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('whatsapp_app', '0004_alter_mensajewhatsapp_conversation'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='conversacionwhatsapp', 16 | name='conversation_disposition', 17 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='conversaciones', to='ominicontacto_app.historicalcalificacioncliente'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /whatsapp_app/migrations/0006_conversacionwhatsapp_error_ex.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2024-03-18 15:42 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('whatsapp_app', '0005_conversacionwhatsapp_conversation_disposition'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='conversacionwhatsapp', 15 | name='error_ex', 16 | field=models.JSONField(default=dict), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /whatsapp_app/migrations/0009_mensajewhatsapp_fail_reason.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2024-08-29 11:39 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('whatsapp_app', '0008_add_mensajewhatsapp_file'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='mensajewhatsapp', 15 | name='fail_reason', 16 | field=models.CharField(blank=True, max_length=100, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /whatsapp_app/migrations/0011_alter_opcionmenuinteractivowhatsapp.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.19 on 2024-12-10 15:57 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('whatsapp_app', '0010_auto_20241119_1338'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='opcionmenuinteractivowhatsapp', 15 | name='descripcion', 16 | field=models.CharField(blank=True, max_length=100, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /whatsapp_app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/whatsapp_app/migrations/__init__.py -------------------------------------------------------------------------------- /whatsapp_app/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alejandrozf/ominicontacto/47a98447f254846acdc6c041c57350cab82b8be8/whatsapp_app/tests/__init__.py --------------------------------------------------------------------------------