Auditar callfiles mediante triggers

De Vocalcom.latam Wiki
Saltar a: navegación, buscar

Generalmente el cliente puede reportar que el discador no esta funcionando segun las espectativas, mayormente puede indicar que los callbacks no se estan realizando en las fechas previstas, o bien que registros que fueron cerrados vuelven a ser llamados. Una vez descartados analisis de configuracion, actividades de reciclado sobre la callfile desde la herramienta rastreados registros en odcalls, descartados triggers en las callfiles o en procesos externos a la herramienta que actualizan la callfile; como ultimo recurso y para ver efectivamente como es el ciclo de vida de un registro reportado como error dentro de la callfile, se puede analizar con un trigger "de auditoria". Basicamente, estos triggers tienen como fin registrar todas las modificaciones realizadas en la callfile, tanto como quien los realizo y desde donde. La idea es poder identificar quien hace que el registro se vuelva a llamar, si es que en algun momento estuvo cerrado.

Se recomienda como ultimo recurso y de uso supervisado, una vez finalizado el analisis deben ser desactivados ya que el crecimiento excesivo de las tablas de logueo puede penalizar el rendimiento de la callfile misma, siendo este metodo contraproducente a nuestros fines.

Este metodo contara de dos elementos SQL, por un lado el trigger que se aplicara sobre la callfile seleccionada a analizar y por otro lado una tabla que registrará todos los estados (dos filas por cada cambio de estado).

El ejemplo es para una callfile de v4, para v5 deberan considerarse las nuevas columnas.

Tener en cuenta que hay que reemplazar TABLA_LOG, TABLA_CALLFILE y NOMBRE_CALLFILE para que tengan relacion con las tablas reales en la plataforma.


Creacion de la tabla:

CREATE TABLE [dbo].[TABLA_LOG](
	[TIME] [datetime] NULL,
	[QUIEN][nvarchar](128) NULL,
	[DESDE][nvarchar](128) NULL,
	[TIPO] [nvarchar](10) NULL,
	[INDICE] [int] NOT NULL,
	[PRIORITE] [int] NOT NULL,
	[DATE] [varchar](8) NULL,
	[HEURE] [varchar](4) NULL,
	[VERSOP] [int] NULL,
	[RAPPEL] [varchar](13) NULL,
	[TV] [varchar](62) NULL,
	[ID_TV] [int] NULL,
	[STATUSGROUP] [int] NULL,
	[STATUS] [int] NULL,
	[LIB_STATUS] [nvarchar](400) NULL,
	[DETAIL] [int] NULL,
	[LIB_DETAIL] [nvarchar](400) NULL,
	[HISTORIQUE] [varchar](254) NULL,
	[TEL1] [varchar](60) NULL,
	[ERRN1] [int] NULL,
	[TEL2] [varchar](60) NULL,
	[ERRN2] [int] NULL,
	[TEL3] [varchar](60) NULL,
	[ERRN3] [int] NULL,
	[TEL4] [varchar](60) NULL,
	[ERRN4] [int] NULL,
	[TEL5] [varchar](60) NULL,
	[ERRN5] [int] NULL,
	[TEL6] [varchar](60) NULL,
	[ERRN6] [int] NULL,
	[TEL7] [varchar](60) NULL,
	[ERRN7] [int] NULL,
	[TEL8] [varchar](60) NULL,
	[ERRN8] [int] NULL,
	[TEL9] [varchar](60) NULL,
	[ERRN9] [int] NULL,
	[TEL10] [varchar](60) NULL,
	[ERRN10] [int] NULL,
	[TEL] [varchar](60) NULL,
	[NBAPPELS] [int] NOT NULL,
	[DUREE] [int] NOT NULL,
	[NIVABS] [int] NOT NULL,
	[MEMORAPPEL] [varchar](13) NULL,
	[MEMOVERSOP] [int] NULL,
	[TZBEGIN] [varchar](4) NULL,
	[TZEND] [varchar](4) NULL,
	[DATAMEMO] [nvarchar](100) NULL,
	[INTERNAL] [int] NOT NULL,
	[RETRYLATER] [int] NOT NULL,
	[MIXUP] [int] NULL,
	[PROFIL_RECORD] [bigint] NOT NULL,
	[QUOTA_RECORD] [bigint] NOT NULL,
	[LNG_WAV] [varchar](255) NULL
) ON [PRIMARY]

GO

Creacion del trigger:

create TRIGGER [dbo].[Log_CallFile_NOMBRE_CALLFILE]
ON [dbo].[TABLA_CALLFILE]
AFTER UPDATE
AS


INSERT INTO TABLA_LOG (						[TIME],
											[QUIEN],
											[DESDE],
											[TIPO],
											[INDICE],
											[PRIORITE],
											[DATE],
											[HEURE],
											[VERSOP],
											[RAPPEL],
											[TV],
											[ID_TV],
											[STATUSGROUP],
											[STATUS],
											[LIB_STATUS],
											[DETAIL],
											[LIB_DETAIL],
											[HISTORIQUE],
											[TEL1],
											[ERRN1],
											[TEL2],
											[ERRN2],
											[TEL3],
											[ERRN3],
											[TEL4],
											[ERRN4],
											[TEL5],
											[ERRN5],
											[TEL6],
											[ERRN6],
											[TEL7],
											[ERRN7],
											[TEL8],
											[ERRN8],
											[TEL9],
											[ERRN9],
											[TEL10],
											[ERRN10],
											[TEL],
											[NBAPPELS],
											[DUREE],
											[NIVABS],
											[MEMORAPPEL],
											[MEMOVERSOP],
											[TZBEGIN],
											[TZEND],
											[DATAMEMO],
											[INTERNAL],
											[RETRYLATER],
											[MIXUP],
											[PROFIL_RECORD],
											[QUOTA_RECORD],
											[LNG_WAV])
SELECT 	GETDATE(),
		SUSER_NAME(),
		HOST_NAME(),
		'DELETED',
		[INDICE],
		[PRIORITE],
		[DATE],
		[HEURE],
		[VERSOP],
		[RAPPEL],
		[TV],
		[ID_TV],
		[STATUSGROUP],
		[STATUS],
		[LIB_STATUS],
		[DETAIL],
		[LIB_DETAIL],
		[HISTORIQUE],
		[TEL1],
		[ERRN1],
		[TEL2],
		[ERRN2],
		[TEL3],
		[ERRN3],
		[TEL4],
		[ERRN4],
		[TEL5],
		[ERRN5],
		[TEL6],
		[ERRN6],
		[TEL7],
		[ERRN7],
		[TEL8],
		[ERRN8],
		[TEL9],
		[ERRN9],
		[TEL10],
		[ERRN10],
		[TEL],
		[NBAPPELS],
		[DUREE],
		[NIVABS],
		[MEMORAPPEL],
		[MEMOVERSOP],
		[TZBEGIN],
		[TZEND],
		[DATAMEMO],
		[INTERNAL],
		[RETRYLATER],
		[MIXUP],
		[PROFIL_RECORD],
		[QUOTA_RECORD],
		[LNG_WAV]
FROM DELETED



INSERT INTO TABLA_LOG (						[TIME],
											[QUIEN],
											[DESDE],
											[TIPO],
											[INDICE],
											[PRIORITE],
											[DATE],
											[HEURE],
											[VERSOP],
											[RAPPEL],
											[TV],
											[ID_TV],
											[STATUSGROUP],
											[STATUS],
											[LIB_STATUS],
											[DETAIL],
											[LIB_DETAIL],
											[HISTORIQUE],
											[TEL1],
											[ERRN1],
											[TEL2],
											[ERRN2],
											[TEL3],
											[ERRN3],
											[TEL4],
											[ERRN4],
											[TEL5],
											[ERRN5],
											[TEL6],
											[ERRN6],
											[TEL7],
											[ERRN7],
											[TEL8],
											[ERRN8],
											[TEL9],
											[ERRN9],
											[TEL10],
											[ERRN10],
											[TEL],
											[NBAPPELS],
											[DUREE],
											[NIVABS],
											[MEMORAPPEL],
											[MEMOVERSOP],
											[TZBEGIN],
											[TZEND],
											[DATAMEMO],
											[INTERNAL],
											[RETRYLATER],
											[MIXUP],
											[PROFIL_RECORD],
											[QUOTA_RECORD],
											[LNG_WAV])
SELECT	GETDATE(),
		SUSER_NAME(),
		HOST_NAME(),
		'INSERTED',
		[INDICE],
		[PRIORITE],
		[DATE],
		[HEURE],
		[VERSOP],
		[RAPPEL],
		[TV],
		[ID_TV],
		[STATUSGROUP],
		[STATUS],
		[LIB_STATUS],
		[DETAIL],
		[LIB_DETAIL],
		[HISTORIQUE],
		[TEL1],
		[ERRN1],
		[TEL2],
		[ERRN2],
		[TEL3],
		[ERRN3],
		[TEL4],
		[ERRN4],
		[TEL5],
		[ERRN5],
		[TEL6],
		[ERRN6],
		[TEL7],
		[ERRN7],
		[TEL8],
		[ERRN8],
		[TEL9],
		[ERRN9],
		[TEL10],
		[ERRN10],
		[TEL],
		[NBAPPELS],
		[DUREE],
		[NIVABS],
		[MEMORAPPEL],
		[MEMOVERSOP],
		[TZBEGIN],
		[TZEND],
		[DATAMEMO],
		[INTERNAL],
		[RETRYLATER],
		[MIXUP],
		[PROFIL_RECORD],
		[QUOTA_RECORD],
		[LNG_WAV]
FROM INSERTED
		
--END
GO