Discador
-
Como configurar o máximo de ligações e o tempo mínimo de duração de uma chamada por dia para atender as regras da ANATEL?
Essa configuração passou a ser utilizada após as novas definições da ANATEL. Para mais informações sobre as mesmas acesse a URL Como a TACTIUM ajuda você a se adequar e evitar os impactos das medidas da ANATEL.
Essa configuração é feita em: Cadastro >> Configurações na aba “Cliente CTI” em dois parâmetros, sendo:
- Máximo de ligações por dia: Um determinado número de telefone configurado como número de origem não excederá esse máximo de chamadas improdutivas no mesmo dia. As chamadas improdutivas serão todas que ocupem a operadora e não sejam atendidas ou que sejam atendidas por um período inferior ao campo Limite de Duração. Caso o tempo marcado esteja “zero”, não haverá limitação de chamadas.
- Limite de duração: Deve-se declarar o tempo mínimo vigente da ANATEL para que possamos garantir que não ultrapasse a quantidade de ligações (parâmetro anterior “Máximo de ligações por dia”) dentro desse tempo mínimo das ligações improdutivas. Esse parâmetro é definido em milissegundos, portanto deve colocar 3000 quando for usar 3 segundos, por exemplo.

-
Criando Jobs do Gerenciador de Mailing
Na implantação do Gerenciador de Mailing do nMonitor, torna-se necessário criar 3 procedures e seus respectivos Jobs no SQL Server Agent, conforme detalhamento abaixo.
⚠️ Atenção: Os scripts abaixo devem ser executados somente por administradores do banco de dados.
Antes de executar, ajuste as variáveis iniciais conforme o ambiente de implantação.🔧 Variáveis de ambiente (ajustar antes da execução)
DECLARE @Sigla VARCHAR (20) = 'SIGLA_AMBIENTE' -- Ex: RGSMGF, TACTIUM, etc. , @Banco VARCHAR (20) = 'DATABASE' -- Nome do banco de dados do discador (base histórica) , @Usuario VARCHAR (20) = 'USUARIO_DATABASE' -- Owner do job , @PathLayout VARCHAR(800) = '\\caminho\para\layout\' -- Apenas para Job 2
📌 Job 1 – Monitora Agendamento de Mailing
Item Descrição Job TACTIUM – Monitora Agendamento de MailingProcedure SP_GeraMailingAgendadoObjetivo Gerar segmentos de mailings para discagem que estejam agendados ou em fila Local de execução Banco do TactiumIP (base histórica) Comando Exec SP_GeraMailingAgendadoPeriodicidade A cada 10 segundos 🧾 Script de criação do Job 1
USE [msdb] GO BEGIN TRANSACTION DECLARE @Sigla VARCHAR (20) = 'SIGLA_AMBIENTE' , @Banco VARCHAR (20) = 'DATABASE' , @Usuario VARCHAR (20) = 'USUARIO_DATABASE' DECLARE @NomeJob VARCHAR(255) = Concat(@sigla, ' - Monitora Agendamento de Mailing') , @NomeEtapa VARCHAR(255) = Concat(@sigla, ' - Gera Mailing Agendado') , @StartDate INT = FORMAT(GETDATE(), 'yyyyMMdd') DECLARE @schedule_uid UNIQUEIDENTIFIER; DECLARE @ReturnCode INT = 0 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=@NomeJob, @enabled=1, @notify_level_eventlog=2, @notify_level_email=2, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Nenhuma descrição disponível.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=@usuario, @notify_email_operator_name=N'Sac Tactium', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=@NomeEtapa, @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=N'Exec SP_GeraMailingAgendado', @database_name=@Banco, @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Execucao a cada 10 segundos', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=@StartDate, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_uid=@schedule_uid OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
📌 Job 2 – Transfere Mailing para o Discador
Item Descrição Job TACTIUM – Transfere Mailing para o DiscadorProcedure SP_TransfereParaDiscadorObjetivo Transferir a lista de discagem do gerenciador de mailings para o discador Local de execução Banco do TactiumIP (base histórica) Comando Exec SP_TransfereParaDiscador @PathLayout, @Banco, 0Periodicidade A cada 10 segundos 🧾 Script de criação do Job 2
USE [msdb] GO BEGIN TRANSACTION DECLARE @Sigla VARCHAR (20) = 'SIGLA_AMBIENTE' , @Banco VARCHAR (20) = 'DATABASE' , @Usuario VARCHAR (20) = 'USUARIO_DATABASE' , @PathLayout VARCHAR(800) = '\\caminho\para\layout\' DECLARE @NomeJob VARCHAR(255) = Concat(@sigla, ' - Transfere Mailing para o Discador') , @NomeEtapa VARCHAR(255) = Concat(@sigla, ' - Transfere Mailing para o Discador') , @Comando VARCHAR(800) = Concat('Exec SP_TransfereParaDiscador ''', @PathLayout, ''', ''', @Banco, ''', 0') , @StartDate INT = FORMAT(GETDATE(), 'yyyyMMdd') DECLARE @schedule_uid UNIQUEIDENTIFIER; DECLARE @ReturnCode INT = 0 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=@NomeJob, @enabled=1, @notify_level_eventlog=2, @notify_level_email=2, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Nenhuma descrição disponível.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=@Usuario, @notify_email_operator_name=N'Sac Tactium', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=@NomeEtapa, @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=@Comando, @database_name=@Banco, @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Execucao a cada 10 segundos', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=@StartDate, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_uid=@schedule_uid OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
📌 Job 3 – Recebe resultado do Discador
Item Descrição Job TACTIUM – Recebe resultado do DiscadorProcedure SP_RecebeDoDiscadorObjetivo Transferir tentativas realizadas pelo discador para a base do gerenciador de mailings Local de execução Banco do TactiumIP (base histórica) Comando Exec SP_RecebeDoDiscador @BancoPeriodicidade A cada 1 minuto 🧾 Script de criação do Job 3
USE [msdb] GO BEGIN TRANSACTION DECLARE @sigla VARCHAR (20) = 'SIGLA_AMBIENTE' , @banco VARCHAR (20) = 'DATABASE' , @usuario VARCHAR (20) = 'USUARIO_DATABASE' DECLARE @NomeJob VARCHAR(255) = Concat(@sigla, ' - Recebe resultado do Discador') , @NomeEtapa VARCHAR(255) = Concat(@sigla, ' - Recebe resultado do Discador') , @Comando VARCHAR(800) = Concat('Exec SP_RecebeDoDiscador ''', @Banco, '''') , @StartDate INT = FORMAT(GETDATE(), 'yyyyMMdd') DECLARE @schedule_uid UNIQUEIDENTIFIER; DECLARE @ReturnCode INT = 0 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=@NomeJob, @enabled=1, @notify_level_eventlog=2, @notify_level_email=2, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Nenhuma descrição disponível.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=@usuario, @notify_email_operator_name=N'Sac Tactium', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=@NomeEtapa, @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=@Comando, @database_name=@banco, @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Execucao a cada 1 minuto', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=@StartDate, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_uid=@schedule_uid OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
✅ Observações finais
- As procedures (
SP_GeraMailingAgendado,SP_TransfereParaDiscador,SP_RecebeDoDiscador) já devem existir no banco de dados do Tactium antes da criação dos Jobs. - Ajuste o parâmetro
@freq_subday_intervalpara 10 segundos manualmente via interface do SQL Server Agent, se necessário, pois o T-SQL padrão não permite menos que 1 minuto diretamente. - O
@PathLayoutdeve apontar para um diretório acessível pelo SQL Server. - O operador de e-mail
Sac Tactiumdeve existir no SQL Server Agent ou pode ser removido/alterado conforme necessidade.
⚠️ Importante: Após criar os jobs, verifique se eles estão habilitados e com as permissões corretas para execução.
- As procedures (
-
Quais sistemas de mercado o discador da Tactium possui integrações?
Listamos alguns CRM de mercado que possuem integrações usando as nossas camadas nativas disponíveis na nossa solução Tactium IP.
Sistemas de CRM de Cobrança
- SRC (Usa a camada socket padrão e carga mailing SQL)
- ACTYON (Usa a camada socket padrão e carga de mailing SQL. Porém, foi iniciado a integração com a WEB API a partir do novo software web da JCA, dona do sistema Actyon)
- DATACOB (Usa a camada de integração WEB API)
- VIRTUA (Usa a camada socket específico, carga mailing SQL e desenvolvido também o processo de integração com a nossa WEB API. Eles já estavam integrador com a nossa PA VIRTUAL carregando variáveis de negociação)
- NÉCTAR (Usa a camada socket padrão e carga mailing SQL)
Sistemas de CRM de Crédito Consignado
- FINAZ (Usa a camada de integração WEB API)
- PANORAMA (Usa a camada de integração URL via Toolbar e carga de mailing manual TTCampanha)
-
Qual a diferença de Renitência e Tentativa nas campanhas do Tactium IP?
No processo de discagem automática o Discador baseia-se nas tentativas da campanha e renitências (tentativas por status da ligação) para trabalhar as discagens nas campanhas.
Ambas são por número e não pelo item, isto é, pode-se ter mais de um número que por sua vez estará associado a um item (que geralmente é o cliente propriamente dito) e o número poderá ser finalizado por “Atingiu Limite Tentativa” ou “Atingiu Limite Renitência” a depender de quem atingir primeiro as tentativas previamente cadastradas. Quando todos os números foram finalizado, o item será definido como “Atingiu Limite” na campanha.
As configurações das tentativas da campanha são definidas no cadastro da campanha e existem dois tipos de tentativas que são as “Tentativas” dos números importados inicialmente e as “Tentativas p/ Fone Auxiliar” representam o número de retorno que foi adicionado no ato do contato com o cliente caso ele solicite o retorno em outro número.
Por exemplo:
- Se um item possuir 3 números e, um primeiro número discado caiu na caixa postal, o segundo deu um tom de ocupado e o terceiro caiu na caixa postal também, esse item passará de “Não trabalhado” na campanha para “Tentando Ligar”, tendo 1 tentativa atingida. Ele continuará a discar se possuir mais de 1 tentativa no cadastro da campanha. Caso contrário será finalizado como “Atingiu Limite Tentativa”.
As renitências são configuradas também no cadastro da campanha e existe um cadastro padrão que pode ser editado pelo cliente. No seu cadastro é definido o status da ligação, tentativas do status da ligação e o tempo em que o número ficará bloqueado sem discar obedecendo as regras de renitência.
Por exemplo:
- Se um cliente (item) contém 1 número apenas e ele apresentar “Falha” ou qualquer outro status o número ficará bloqueado “Em renitência” para discagem de acordo com o tempo configurado no cadastro da renitência. Se as próximas consecutivas apresentarem o mesmo status o número será finalizado como “Atingiu Limite Renitência” de acordo com a quantidade de tentativas da renitência.
