Tactium IP

  • Qual TTS podemos usar para gravar audios na Web?

    Podemos recomendar o site chamado https://ttsfree.com/pt.

    Nesse site está disponível alguns idiomas e os áudios são gerados no formato *.mp3. A voz que possui uma pronuncia muito boa, já utilizada, é da Francisca, conforme print abaixo, mas no site temos outras opções.

    Após gerar os áudios em *.mp3, torna-se necessário a conversão para *.wav com as especificações técnicas da Khomp. Para mais informações sobre a conversão, acesse Convertendo áudios para uso no Tactium IP usando o Audacity.


  • Qual é a ordem de parada e inicialização dos serviços do TactiumIP?

    Ao realizar o reinicio do(s) servidor(res) TactiumIP, ou na necessidade de resetar a aplicação, se faz necessário seguir uma ordem de parada e subida dos serviços atrelados ao mesmo:
    Ordem de Parada:
    1° TactiumIP Server
    2° TactiumIP Replication
    3° TactiumIP BoardServer
    4° Khomp Mrcp (Quando houver)
    5° Khomp API
    6° Khomp Media
    7° Khomp Query
    8° Khomp Log
    9° Khomp Integrated

    Ordem de Inicialização:
    2° Khomp Log
    3° Khomp Query
    4° Khomp Media
    5° Khomp API
    6° Khomp Mrcp (Quando houver)
    7° TactiumIP BoardServer
    8° TactiumIP Replication
    9° TactiumIP Server (este, impreterivelmente deve ser o ultimo a subir, pois se subir antes do replication, zera o banco de dados)

    Observação: Em caso de queda de Energia, os serviços que estiverem marcados para subida automática já estarão em execução. Neste caso, basta seguir a ordem de subida pulando os mesmos


  • 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 Mailing
    Procedure SP_GeraMailingAgendado
    Objetivo 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_GeraMailingAgendado
    Periodicidade 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 Discador
    Procedure SP_TransfereParaDiscador
    Objetivo 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, 0
    Periodicidade 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 Discador
    Procedure SP_RecebeDoDiscador
    Objetivo 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 @Banco
    Periodicidade 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_interval para 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 @PathLayout deve apontar para um diretório acessível pelo SQL Server.
    • O operador de e-mail Sac Tactium deve 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.

     


  • Como habilita a função bulkadmin no SQL Server?

    Para habilitar essa função torna-se necessário acessar as propriedades do usuário do SQL Server (no exemplo abaixo as configurações estão sendo feitas no usuário chamado “callback”). No menu lateral entrar em “Funções de Servidor” e marcar a opção de “bulkadmin”.


  • Não visualiza os operadores logados na transferência da Toolbar usando integração com o Tactium CRM?

    Recomendo verificar no “web.config” da Toolbar o parâmetro abaixo:

    <configuration>
    <appSettings>
    <add key=”transferBPM” value=”false” />
    Esse parâmetro é para estar desabilitado por se tratar de um recurso descontinuado.

    Segue imagem ilustrando o problema:


  • Como resolver problemas da tela desconfigurada?

    Normalmente esse tipo de problema é ocasionado quando existem mudanças na tela da ferramenta, isto é, quando é criado um novo atributo torna-se necessário executar as seguintes teclas de atalho: Ctrl + shift + r  e Ctrl + Shift + F5 que são usadas para recarregar a página sem levar em conta o conteúdo armazenado em cache.

    O recomendado é realizar esse procedimento em todas as versões, após suas atualizações.

    Segue um exemplo ilustrando esse tipo de problema:

     


  • Como habilita o alerta de fila na Toolbar?

    Para habilitar o alerta de fila da Toolbar torna-se necessário configurar a TAG sinalizada abaixo no arquivo “web.config” da Toolbar.

    Por padrão ele já vem configurado como “true”, mas caso deseje desabilitar deve-se colocar como “false”.

    <appSettings>

    <add key=”Toolbar:CheckAgentGroupQueue” value=”true” />

    </appSettings>


  • O que seria o Garbage Collector do Tactium IP, para evitar quedas da Toolbar?

    O Garbage Collector tem a finalidade de criar uma proteção na aplicação em caso de possíveis intermitências de rede de conexão com o Tactium IP Server, fazendo com que a aplicação não gere uma desconexão após X segundos (parâmetro configurado). Para configurar acesse o link Configurando o Garbage Collector.

    É importante enfatizar que as quedas das aplicações poderão ter diversas causas e para maiores detalhes acesse essa documentação completa para garantir todos os pontos de proteção e configuração: Prevenindo indisponibilidade/ quedas nas ferramentas das soluções Tactium.


  • Quais são as vozes homologadas de TTS no Tactium IP?

    No Tactium IP temos as seguintes 3 vozes homologadas, sendo:

    1. Heloísa (gratuita)
    2. Ricardo (paga)
    3. Vitoria (paga)

    As vozes pagas precisam ser adquiridas pelo cliente que são através do link abaixo e ambas são da empresa IVONA.

    Vitória: https://harposoftware.com/en/portuguese-brasil/165-vitoria-portuguese-brasilian-voice.html

    Ricardo: https://harposoftware.com/en/portuguese-brasil/166-ricardo-portuguese-brasilian-voice.html


  • Erro ao vocalizar TTS em “PT-BR” com Windows Server 2019 “ENG-US”

    Identificamos que devido aos novos recursos de vocalização do S.O. Windows Server 2019 Inglês, ocorre uma incompatibilidade como o pacote de voz (Heloisa) em Português.

    Para resolver esse problema torna-se necessário instalar o pacote de linguagem em português (Windows) e realizar a alteração na opção de linguagem do S.O em configurações. Esse procedimento é realizada na parte de configurações do Windows.

    Após instalar, vincular o idioma no S.O. Para aplicar torna-se necessário o reinicio do servidor após o vinculo da linguagem.