FAQ
-
No GupShup é possível visualizar o motivo de não recusa? O que fazer se a sua solicitação é recusada?
No GupShup NÃO é possível visualizar o motivo de recusa.
Essa validação é própria do Facebook, no qual o GupShup faz apenas o repasse ao mesmo e por esse motivo não é possível visualizar nada a partir do GupShup.
Porém, pode ser solicitado um apelo no GupShup justificando como será o uso da conta, explicando o caso de uso detalhado e o GupShup intermediará junto com o Facebook. Para saber como registrar um chamado pode-se acessar Como abrir chamados no GupShup.
Característica de uso para BOT e envio de mensagens manuais (sob demanda) pode ser usado como argumento para fazer um apelo ao Facebook por intermédio do GupShup, caso não haja há aprovação. Em alguns casos o WhatsApp tem sido menos rigoroso nessas aprovações. Permitindo aprovação de empresas no segmento de cobrança, por exemplo.
-
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
-
Ferramentas deslogando inesperadamente (suspensão browser)
Atualmente nos navegadores, ao passar algum tempo sem utilizar a aba que está logada à ferramenta, ou ao sair para pausa, ao retornar à pagina, é notado que a ferramenta executou logoff.
Este processo ocorre devido um processo de limpeza de memória executado pelo navegador conhecido como Tab Discarding. Para evitar o mesmo existem algumas soluções para desativar este processo:
Google Chrome:
Temos duas formas de realizar essa configuração, sendo elas:
Opção 1:
Acessando a parte de Desempenho das configurações do navegador, na parte Geral devemos adicionar os sites da Tactium, podendo ser o domínio/IP que irá comtemplar todos os sites que utilizam aquele domínio/IP, como manualmente o site apenas da toolbar, conforme print abaixo:

Na parte de economia de memória e energia devemos deixar desativados para que não ocorra do navegador desabilitar a aba da aplicação caso ela esteja consumindo mais recurso. Para mais informações acesse https://developer.chrome.com/blog/tab-discarding/.
Para configurar abra o navegador e acesse o link “chrome://settings/performance”, ao abrir a página em “Economia de memória” e “Energia” deixamos a opção desabilitada, conforme print abaixo:

Opção 2: Adicionar a extensão “Auto Tab Discad” presente no link abaixo, caso no seu navegador não esteja na versão 89 do Chrome.
Link: https://chrome.google.com/webstore/detail/auto-tab-discard/jhnleheckmknfcgijgkadoemagpecfol
Obs.: É necessário clicar na opção Usar no Chrome e adicionar extensão, após isso é necessário fechar e abrir o navegador para aplicar a extensão.

Após intalação da extensão, abra o Google Chorme e clique no icone de extensãos no navegador em seguida clique nos 3 potinhos da “Auto tab Discard” após clique em “Opções” irá abrir uma nova pagina, na sequencia navegue até “Exceções” e adicione o link da aplicação como especificado na imagim abaixo:

Obs.: Caso não consiga acessar a mesma via link, basta pesquisar no google “Auto Tab Discard”.
Edge:
Vá nos três pontinhos que fica abaixo do botão de fechar o navegador “…” busque a opção configurações:

Estando em configurações, vá na opção “System” ou “Sistema e desempenho”. Procure por “Esmanecer guias inativas”, desmarque a opção e adicione a raiz da Toolbar e do OmniPA, conforme modelo abaixo:

-
Como configurar docagem com domínios diferentes (Cross domain)?
O’que é o cross domain ?
É um mecanismo que permite que recursos restritos em uma página da web sejam recuperados por outro domínio fora do domínio ao qual pertence o recurso que será recuperado.
Um exemplo prático do nosso cotidiano, Ao realizar monitorias em tempo real no nMonitor, este chama o CallMonitor para realizar algumas ações.
Digamos que neste ambiente podemos acessar a ferramenta via link interno (IP) e link externo. Devido a configuração de monitoria ser limitada a somente 1 link, se configurarmos o link Interno, quem utilizar o Externo não conseguirá realizar monitorias e vice versa.
Isto ocorre devido o navegar identificar que você está realizando uma requisição para um domínio diferente do seu de acesso e por segurança trava esta requisição.Alterações no config
As alterações a seguir, devem ser realizadas sempre no config da aplicação que é chamada, no exemplo que estamos utilizando neste tutorial, o nMonitor chama o CallMonitor. Neste caso o config a ser alterado é o do CallMonitor.
IMPORTANTE: Abaixo deixaremos a mostra como o config deverá ficar configurado, não copie o código direto do docs pois o mesmo altera alguns caracteres especiais, segue o link contendo as linhas do config que devem ser adicionadas.
Link: https://drive.google.com/file/d/1HjlI7Jq1lMkwKTdDFfh0BeOTia3uBkh0/view?usp=sharingDentro do Atributo <system.web> adicionar as seguintes chaves/valores:
<customErrors mode=”Off” />
<httpCookies httpOnlyCookies=”true” requireSSL=”true” sameSite=”None”/>
<sessionState cookieless=”false” regenerateExpiredSessionId=”false”/>Dentro do atributo <system.webServer> adicionar as seguintes chaves/valores:
<httpProtocol>
<customHeaders>
<remove name=”X-Powered-By” />
<remove name=”Server” />
<add name=”X-XSS-Protection” value=”1; mode=block” />
<add name=”Strict-Transport-Security” value=”max-age=31536000; includeSubDomains” />
<add name=”Content-Security-Policy” value=”default-src ‘self’; script-src * data: https://ssl.gstatic.com ‘unsafe-inline’ ‘unsafe-eval’; connect-src ‘self’=; img-src ‘self’ ‘unsafe-inline’ data:; style-src ‘unsafe-inline’ ‘self’;base-uri ‘self’;form-action ‘self’; ” />
<add name=”Expect-CT” value=”enforce, max-age=43200″ />
<add name=”Permissions-Policy” value=”fullscreen=()”/>
<add name=”Referrer-Policy” value=”no-referrer” />
<add name=”X-Content-Type-Options” value=”nosniff” />
<add name=”Access-Control-Allow-Origin” value=”*” />
<add name=”Access-Control-Allow-Methods” value=”GET, PUT, POST, DELETE, HEAD, OPTIONS” />
<add name=”Access-Control-Allow-Credentials” value=”true”/>
<add name=”Access-Control-Allow-Headers” value=”X-Requested-With, origin, content-type, accept” /></customHeaders>
</httpProtocol>Por fim os atributos devem ficar conforme a imagem abaixo:

Se usar “iframe” no site
Na configuração no site ressaltamos que a TAG referrerpolicy=”strict-origin-when-cross-origin” é obrigatório para o funcionamento, dentro do “iframe” que deverá ser desenvolvido pelo responsável do site.

-
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 (
-
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 ativar um 0800 no Gupshup?
Para realizar a ativação do 0800 será necessário seguir os seguintes procedimentos para a ativação:
1) No GupShup, no momento de cadastrar o número do telefone (no aplicativo), deve-se cadastrar sem o “0”, conforme exemplo apresentado:
– Correto: 5580012345678
– Errado: 550800123456782) Será necessário validar o telefone, para isto, o número deverá estar apto a receber chamadas internacionais.
3) No momento do recebimento da chamada internacional, o número não deve estar atrás de uma URA, algum atendente humano deverá ouvir o código e informar na plataforma.
-
O que pode causar lentidão nos atendimentos dos bots via WhatsApp?
Sabemos que um dos principais fatores que influência na experiência de atendimento do seu cliente é a prontidão do atendimento. Por isso que há Tactium conta com os serviços de atendimento automatizado, chamados Bots.
Certo, mas o que pode causar lentidão nesses serviços? A seguir apresentamos alguns possíveis agentes que podem afetar o desempenho dos serviços de Bot via WhatsApp.
Agente Causa Solução Antivírus Apesar de ser indispensável para a segurança do servidor/computador, o antivírus pode acabar influenciando no processamento das requisições e métodos, da GupShup, pelo Webhook. Para contornarmos essa situação recomendamos que adicione nas exceções do antivírus as pastas contendo os serviços da Tactium e o ChatMailServer. Instabilidade na plataforma do WhatsApp Mesmo sendo de raro acontecimento, as instabilidades na plataforma do WhatsApp interfere consideravelmente nos serviços de atendimento automatizado, mas não só o serviço como também os usuários. Neste caso infelizmente não tem muito a ser feito, além de aguardar o retorno da estabilidade da plataforma. Conexão com a Internet Outro principal fator é a conexão com a internet, pois caso a conexão não esteja estável ou com funcionamento adequado pode interferir na troca de mensagens do WhatsApp. Em relação a conexão com a internet, verificar com o provedor alguma possível instabilidade que esteja ocorrendo e seguir as instruções passadas pelo mesmo. Caso já tenha verificado esses agentes e continue apresentando uma certa lentidão entre em contato conosco.
-
Problema de acesso negado na pasta de anexos no CRM?
Torna-se necessário habilitar no aplicativo do NewManager em Authentication defina o atributo impersonate do elemento de configuração de identidade como enable, conforme ilustrado na imagem abaixo. No exemplo estamos usando dois tipos de atributos habilitados:
- O “Anonymous Authentication” e;
- “APS.NET Impresoation”.

