Últimos artículos
Estas son las últimas entradas en el blog.
De todo un poco para solucionar los problemas diarios de un administrador de IT y DBA
Estas son las últimas entradas en el blog.
De todo un poco para solucionar los problemas diarios de un administrador de IT y DBA
Los switch HP 1910 o HP1920 traen una consola resumida. Te enseñare como habilitar la consola extendida.
El primer paso es que ingreses por TELNET al switch con el usuario que tengas. Seguido a esto debes ingresar el siguiente comando:
_cmdline-mode on
<HP 1920G Switch>_cmdline-mode on All commands can be displayed and executed. Continue? [Y/N]y Please input password:********************** Warning: Now you enter an all-command mode for developer's testing, some commands may affect operation by wrong use, please carefully use it with our engineer's direction.
Los posibles passwords son:
Estos pasos son obligatorios de hacer cada vez que ingreses, y de la misma forma el password no se puede cambiar, ya que están por código en el firmware.
Otro dato interesante es Jinhua y su relación con HP:
Normalmente cuando trabajamos configurando nuestros switch es habitual que realicemos los procesos directamente por consola y no por las GUI WEB que traen instaladas. Sin embargo las ediciones S de HP no traen de forma nativa habilitada dicha opción. En esta oportunidad les contaré un pequeño truco para habilitarlos.
El primer paso es ingresar por la interface web y descargar el backup de la configuración activa. Para ello debemos ingresar en:
Maintenance \ Backup and Update Manager y descargar la configuración activa de inicio (startup configuration)
Luego modificamos la misma con un editor de texto y agregamos justo antes de configure. La siguiente línea:
ip telnet server enable
Seguido a este subimos la nueva configuración y reiniciamos nuestro switch. Ahora podemos ingresar por TELNET.
Ya estamos en condiciones de habilitar el SSH. Para ello debemos colocar en una sesión por TELNET los siguientes comandos:
enable
configure
crypto key generate rsa
crypto key generate dsa
exit
ip ssh server enable
ip ssh protocol 2
write memory confirm
quit
Si quisiéramos deshabilitar el TELNET:
enable
no ip telnet server enable
write memory confirm
quit
Espero que les sirva
Existen diversas formas de obtener indicadores del servicio prestado. Sin embargo la mejor retroactividad es la que puede brindarte tu propio cliente. Para ello muchas veces es necesario implementar una encuesta de calidad que permite sondear diferentes aspectos del servicio brindado.
En esta oportunidad se trabajo bajo la siguiente plataforma:
El proceso para armarla la misma consiste en:
Primero que nada vamos a entender como funciona:
En la primer parte se define las variables a usar y la conexión a la BD MYSQL:
;----------------------- INICIO DE PARAMETROS DE ENCUESTA ; 2099 IVR Encuesta ; Inicio exten => 2099,1,Answer ; Atiendo ;exten => 2099,n,Wait(1) ; Espero 1 Segundo para darle tiempo al SIP exten => 2099,n(begin),Set(TIMEOUT(digit)=3) ; Defino parametros de tiempo exten => 2099,n,Set(TIMEOUT(response)=3) ; Defino Parametros de tiempo ;exten => 2099,n,Set(CHANNEL(hangup_handler_push)=hangup-sql,2099,1); SubRutina de Guardar en Base :: cuando el cliente corta no se puede detectar, se descarta exten => 2099,n,MYSQL(Connect connid 172.15.15.15 usuario clave base_datos) ; Me conecto a la Base de Datos ; Asignacion de Variables exten => 2099,n,Set(MSGN=custom/ivr-n) ; Cargo el Mensaje de Num de Expediente exten => 2099,n,Set(MSG0=custom/ivr-0) ; Cargo el Mensaje de Bienvenida exten => 2099,n,Set(MSG1=custom/ivr-1) ; Cargo la Pregunta 1 exten => 2099,n,Set(MSG2=custom/ivr-2) ; Cargo la Pregunta 2 exten => 2099,n,Set(MSG3=custom/ivr-3) ; Cargo la Pregunta 3 exten => 2099,n,Set(MSG4=custom/ivr-4) ; Cargo la Pregunta 4 exten => 2099,n,Set(MSG5=custom/ivr-5) ; Cargo la Pregunta 5 exten => 2099,n,Set(MSG6=custom/ivr-6) ; Cargo la Pregunta 6 exten => 2099,n,Set(MSGError0=custom/ivr-error0) ; Cargo el error 0 exten => 2099,n,Set(MSGError1=custom/ivr-error1) ; Cargo el error 1 exten => 2099,n,Set(MSGError2=custom/ivr-error2) ; Cargo el error 2 exten => 2099,n,Set(MSGEnd=custom/ivr-end) ; Cargo el Fin de la Encuesta
Luego viene la parte en donde le pregunto al personal interno el ID inicial para almacenar
;-------------- PREGUNTA N de ID --------------------------------- ;Empiezo con la Pregunta del Numero de ID exten => 2099,n(pregN),Playback(${MSGN}) ; Reproduzco la Pregunta Num de ID exten => 2099,n,Goto(2099,pregNresp) ; voy a esperar la respuesta ;Esperando Respuesta1 exten => 2099,n(pregNresp),Read(NUMBEREXP,,5,1) ; Leo lo que marca el personal Interno: Num de ID exten => 2099,n,GotoIf($["${NUMBEREXP}" = ""]?pregN); Si la respuesta es nula entonces Pregunto de Nuevo Num de Expediente ;exten => 2099,n,SayNumber(${NUMBEREXP},f) exten => 2099,n(pregNconf),Read(NUMBER,,1,1) ; Leo lo que marca el operador: 1 correcto, 0 correguir exten => 2099,n,GotoIf($[${NUMBER} = 0]?pregN:intro); Si la respuesta es 0 voy a la pregunta 1
Seguido y validado lo anterior le reproduzco la bienvenida al cliente:
; -------------- INTRO ------------------------------------- ; Mensaje explicando el funcionamiento de la encuesta exten => 2099,n(intro),Playback(beep) ; Reproduzco un Beep exten => 2099,n,Set(PREFIJO="2019") ; Asigno un prefijo personalizado. Ej: El año ;exten => 2099,n,Set(NUMBEREXP=$[${PREFIJO}~~${NUMBEREXP}]) exten => 2099,n,Wait(3) ; Espero 3 Segundos exten => 2099,n,Playback(${MSG0}) ; Reproduzco la intro exten => 2099,n,Wait(1) exten => 2099,n,MYSQL(Query consulta0 ${connid} insert into encuestas(ID,IDCRM,Personal,Fecha1,Fecha2,Activo) values (1,${NUMBEREXP},"Mauro",NOW(),NOW(),1)) ; Inserto la$
Luego debería seguir con las «N» preguntas que pueda tener configurado. Y al final reproducir un mensaje de FIN.
Esto es una idea de cómo se puede implementar.
En los siguientes artículos que iré creando resumiremos el uso de las siguientes funciones analíticas incorporadas a partir de SQL Server 2012
Estas son:
A partir de la versión 2012 de SQL Server se incorporaron entre otras cosas dos funciones nuevas, que permiten acceder a la fila anterior, o posterior de una consulta.
Algo que anteriormente era imposible, y tocaba solucionar con Tablas Pivot, o usando Self Join
Primero entendamos que hace cada una:
LAG: devuelve el valor (de una columna especificada) que estuvo en la fila anterior.
LEAD: devuelve el valor (de una columna especificada) que estuvo en la fila siguiente.
Mas info:
https://docs.microsoft.com/en-us/sql/t-sql/functions/lag-transact-sql
https://docs.microsoft.com/en-us/sql/t-sql/functions/lag-transact-sql
Como siempre con un pequeño ejemplo acompañado de su código y sus capturas veremos como trabajar con campos con valores «NULL»
IF EXISTS(SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('myTable')) BEGIN; DROP TABLE [myTable]; END; GO CREATE TABLE [myTable] ( [myTableID] INTEGER NOT NULL IDENTITY(1, 1), [nombre] VARCHAR(255) NULL, [zona] VARCHAR(MAX) NULL, PRIMARY KEY ([myTableID]) ); GO INSERT INTO myTable([nombre],[zona]) VALUES('Levi','MZA'),('Lars','MZA'),('Lee','CBA'),('Tarik',NULL),('Herman',NULL),('Allen',NULL),('George',NULL),('Ciaran',NULL),('Eagan',NULL),('Drake',NULL);
Esto nos creará una tabla con la siguiente información:
select * from myTable
select * from myTable where zona=NULL --Versus select * from myTable where zona IS NULL
Este pequeño ejemplo demuestra como filtrar los NULL mediante el operador IS
El segundo ejemplo es como debemos filtrar los campos con valores NULL
Para terminar con el ejemplo, si tuviésemos que buscar los registros cuyo columna ZONA no contiene valores nulos (NOT NULL). Para ello podríamos realizar lo siguiente:
select * from myTable where zona is NOT NULL
IT CallCenters
Desarrollo de aplicaciones web y mobile