Instalando e configurando o Tactium MIS
Sumário
Visão Geral
O Tactium MIS é um banco de dados de informações operacionais e administrativas organizadas de forma a produzir relatórios regulares sobre as operações para todos os níveis de gestão de uma organização.
O processo a seguir detalha as etapas necessárias para utilização de dois databases distintos, o database operacional e um segundo database histórico (Tactium_MIS) onde serão geradas cópias das informações operacionais que serão fornecidas aos clientes através da utilização da API.
A base de dados atualmente armazena os valores dos relatórios Detalhe de Ligações e Detalhe de Atividades da solução Tactium IP e Detalhe de Atendimentos de Mensagem e Produtividade Campanhas Omni da solução Tactium CRM/OMNI.
Criando a estrutura da base Tactium MIS
O processo de implementação da estrutura do MIS é iniciado através da criação da base de dados que será utilizada neste processo.
Base de Dados
Realize o download e execute em seguida o script abaixo para criação da base:
O script abaixo criará uma base de nome “Tactium_MIS”, mas o nome da base pode conter outra definição caso desejado. Basta inserir o nome escolhido na linha: “IF (NOT EXISTS (SELECT name FROM SYS.databases WHERE name = ‘NOMEDABASE’))“.
Tenha acesso ao script através do link abaixo:
[CREATE DATABASE [Tactium_MIS]] |
Em seguida execute o script adicional na base recém criada do Tactium_MIS, script contempla a criação de mais duas tabelas para acesso aos novos relatórios do Tactium CRM/OMNI, através do link abaixo:
O script abaixo criará uma conexão com a base de dados do Tactium CRM na tabela T_STP. Basta inserir o nome da base de dados nas linhas:
“EXEC [NOMEDABASE_CRM]..[SP_CONSULTA_OMNI_CAMPANHA]“
“EXEC [NOMEDABASE_CRM]..[SP_CONSULTA_AtendimentoWhatsapp]“
[CREATE TABLES [X_DetProdCampOmni_X_DetAtdWpp] |
Procedures
Após a criação da estrutura da base de dados, criaremos também as procedures SP_ExecProcedures, SP_ComparaProcedures e SP_ExecuteBI:
Tenha acesso aos scripts correspondentes através dos links abaixo:
Execute os scripts abaixo na base Tactium_MIS.
[SP_ExecProcedures] |
[SP_ComparaProcedures] |
[SP_ExecuteBI] |
Procedures no Database Tactium CRM
Execute os scripts abaixo na base Tactium_CRM caso a versão do CRM/OMNI seja inferior a 5.53.7.2.
Atualizaremos também as procedures SP_CONSULTA_AtendimentoWhatsapp, SP_CONSULTA_OMNI_CAMPANHA.
Tenha acesso aos scripts correspondentes através dos links abaixo:
[SP_CONSULTA_AtendimentoWhatsapp] |
[SP_CONSULTA_OMNI_CAMPANHA] |
Jobs
A Base de MIS conterá sempre os dados de d-1, logo serão apresentados dados do dia anterior à entrada da solicitação. Dito isto, para a população desses dados é necessário criar processos (jobs) que farão a consulta dos dados no TactiumIP e Tactium CRM/OMNI e irão inseri-los na base Tactium_MIS.
Para configurar os Jobs onde serão realizados este processo, realize as etapas abaixo:
1. Execute estes comandos (inserts) na base Tactium_MIS:
INSERTS_TACTIUM_MIS |
Nesse script será necessário definir o nome do banco de dados do Tactium IP. Está configurado como “TactiumIP” que é o nome padrão do banco de dados do Tactium IP.
Em ambientes que já foram implantados, o script adicional abaixo deverá ser executado, pois em novas versões da aplicação foi incluído um novo campo na procedure “SP_CON_DETATVAGENTE”.
[ALTER_TACTIUM_MIS]
2. Dando continuidade, iremos criar o Job onde será executado a procedure SP_ExecuteBI, todos os dias, para que a mesma faça a população dos dados para a base Tactium_MIS:
No menu lateral Object Explorer, clique na opção SQL Server Agent.
Na opção SQL Server Agent crie um novo Trabalho, no caminho Trabalho (Job) >> Novo Trabalho (New Job).
3. Cadastre um Novo passo (Step), de acordo com a tabela abaixo:
Nome da Etapa |
Step 1 |
Tipo |
Script Transact-SQL (T-SQL) |
Banco de Dados |
Tactium_MIS |
Comando |
Declare @DTINICIO Char(19) = Convert(Char(10), getdate()-1, 103) + ‘ 00:00:00’, @DTFIM Char(19) = Convert(Char(10), getdate()-1, 103) + ‘ 23:59:59’Exec SP_ExecuteBI @DTINICIO, @DTFIM |
O comando do Job executará a carga dos dados de 1 em 1 dia (Dia corrente – 1), de acordo com regra criada acima. Porém, caso necessite gerar uma carga de uma única vez com vários dias, podemos sugerir o comando abaixo para ser executado diretamente no SQL (durante a implantação) passando a quantidade de dias necessários na variável “@dias”.
[Comando_SQL_Carregar_VáriosDias_MIS]
4. Cadastre uma Nova Agenda (Schedules), de acordo com a tabela abaixo:
Nome | Principal |
Tipo de agenda | Recorrente |
Caixa de seleção “Habilitado” | |
Ocorre | Diariamente |
Repete-se a cada | 1 |
Ocorre uma vez em | 00:00:20 |
Data de início | Data de início do cenário de produção da Base Tactium_MIS |
Caixa de seleção “Sem data de término” | |
Descrição | Ocorre diariamente às 23:00:00. A Agenda será usada a partir de 24/05/2023. |
Instalando o serviço ReportAPI
A API utilizada para consulta dos dados históricos da base Tactium_MIS é a ReportAPI. Ela fornece informações de relatórios de BI do TactiumIP. Ela funciona como um serviço RESTful, e utiliza autenticação JWT Bearer para funcionar.
O processo de implementação da estrutura para utilização da ReportAPI é inicialmente configurar o ambiente onde esta será implantada, siga o processo abaixo:
- Instalando/ Habilitando o IIS (Internet Information Services) com as seguintes configurações marcadas:
- .NET Core Bundle
Em seguida, baixe e instale o pacote do .NET Core Bundle.
O download do pacote do .NET Core Bundle pode ser realizado a partir da seguinte URL: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-6.0.15-windows-hosting-bundle-installer
- Configurando o Pool de Aplicativos e o Site do ReportAPI
Neste momento, realizaremos a cópia dos arquivos do pacote de instalação para um diretório no servidor e configure um pool no IIS para essa aplicação.
1. Adicione uma nova aplicação ao pool de aplicativos, com as seguintes configurações:
Name: |
ReportAPI |
.Net CLR Version: |
.Net CLR Version v4.0.30319 |
Managed Pipeline Mode: |
Integrado |
Em seguida, recuperaremos os pacotes da ReportAPI (mesma versão operacional da solução Tactium IP) e colocaremos dentro do wwwroot para convertê-la posteriormente em aplicação.
Report API disponível a partir da versão 55.180.3 da solução Tactium IP.
Converta o diretório em uma aplicação usando o pool criado.
É altamente recomendado que o acesso a esta API seja feito por meio do protocolo HTTPS, uma vez que informações sensíveis como login e tokens serão transmitidas por essa conexão.
Configurando o acesso da API ao Banco de Dados do Tactium IP
Antes de iniciar os apontamentos necessários do no arquivo de configuração da API, criaremos a Tabela (na base do Tactium IP) que armazenará os dados dos usuários que terão acesso a receber os dados de consulta através da ReportAPI .
Tenha acesso ao script correspondente através do link abaixo:
[CREATE_TABLE_T-USER] |
Agora iremos inserir os usuários. Disponibilizamos o script abaixo com a inserção de um usuário com as credenciais:
- Login: admin e Password: Tactium@mis.
Recomendamos que seja realizada a alteração nos dados de inserção para atualizar os valores de Login e Password.
Tenha acesso ao script correspondente através do link abaixo:
[INSERT_USER_TABLE] |
Após a conclusão do processo acima, podemos iniciar a configuração da API no arquivo “appsettings.json”, localizado na raiz do diretório.
- No arquivo, você precisará definir as seguintes propriedades relacionadas ao banco de dados do MIS:
“DatabaseApi”: {
“Host”: “192.168.0.1”, “DBName”: “Tactium_MIS”, “User”: “usuario”, “Passcode”: “senha” } |
- Além disso, como visto anteriormente, a API precisa ter acesso ao banco de dados do Tactium IP que terá acesso aos registros de usuários que podem ser autenticados. As propriedades relacionadas a essa configuração são:
Caso o acesso ao banco de dados de usuários contenha autenticação criptografada, será necessário criar uma tabela para receber os usuários da API.
“JWTBearerAuth”: {
“ContextFactory”: “MsSqlDBFactory”, “TokenExpiringMinutes”: 120, “Host”: “192.168.0.1”, “DbName”: “TactiumIP”, “User”: “callback”, “Passcode”: “softium”, “Table”: “T_USER”, “ColumnUser”: “Name”, “ColumnPass”: “Password” } |
ContextFactory: Fornecedor do banco de dados.
TokenExpiringMinutes: Tempo, em minutos, para a expiração do token.
Host: Servidor de banco de dados para conexão (IP ou hostname ou instancia).
DbName: Nome do banco de dados do Tactium IP.
User: Usuário com privilégios para acessar o banco do Tactium IP.
Passcode: Senha do usuário com privilégios para acessar o banco do Tactium IP.
Table: Tabela onde os usuários da API estão armazenados (na base do Tactium IP). Portanto, manter o nome “T_USER“, conforme script acima disponibilizado.
ColumnUser: Coluna que representa o login dos usuários da API (na base do Tactium IP). Portanto, manter o nome “Name“, conforme script acima disponibilizado.
ColumnPass: Coluna que representa a senha dos usuários da API (na base do Tactium IP). Portanto, manter o nome “Password“, conforme script acima disponibilizado.
Usando a ReportAPI do Tactium MIS
Após a conclusão das configurações acima, iremos realizar o teste de autenticação para uso da API e validar a obtenção dos dados dos métodos disponíveis, utilizando o token de acesso. Utilizaremos a ferramenta Postman.
Os métodos disponíveis para autenticação e obtenção de dados são os seguintes:
Autenticação |
POST do HTTP + Link da Página Web + sufixo /Login |
Detalhe de Ligações |
POST do HTTP + Link da Página Web + sufixo /CallDetails |
Detalhe de Atividades |
POST do HTTP + Link da Página Web + sufixo /AgentDetails |
Para mais informações acesse o Manual de Uso da Report API, este está disponível através do link da página web correspondente a aplicação bastando ser acrescentado no subdomínio o sufixo “/Documentation”.
Por exemplo: https://for.tactium.app/ip/ReportApi/Documentation
Login
Vamos inicialmente verificar se a API consegue se autentificar para comunicar-se com o banco de dados, para isso execute o método POST do HTTP + Link da Página Web + sufixo /Login na chamada.
POST |
https://for.tactium.app/ip/ReportApi/Login |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{
“login”: “admin”,
“password”: “Tactium@mis”
}
|
Executando o método podemos ter acesso ao token que utilizaremos para obter os dados do relatório desejado, logo a autenticação foi concluída com sucesso.
AgentDetails
Para consultar os dados do relatório Detalhe de Ligações utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /AgentDetails.
POST |
https://for.tactium.app/ip/ReportApi/AgentDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{ “interval”: { “startDate”: “2023-09-14T17:54:04.867Z”, “endDate”: “2023-09-14T17:54:04.867Z” }, “agentName”: “atendente01” } |
Insira o token gerado para efetuar a autorização na requisição.
Executando o método podemos ter acesso aos dados das atividades deste agente em específico.
Caso seja necessário obter as atividades de todos os agentes basta remover o parâmetro “agentName” da chamada.
CallDetails
Para consultar os dados do relatório Detalhe de Ligações utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /CallDetails.
POST |
https://for.tactium.app/ip/ReportApi/CallDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{
“interval”: {
“startDate”: “2023-01-14T18:16:45.080Z”,
“endDate”: “2023-09-14T18:16:45.080Z”
},
“serviceName”: “DEMONSTRACAO RECEPTIVO”,
“agentName”: “atendente01”
}
|
Insira o token gerado para efetuar a autorização na requisição.
Executando o método podemos ter acesso aos dados de ligações deste serviço e agente em específico.
Caso seja necessário receber todas as ligações sem filtrar pelo tipo de agente e serviço basta remover o parâmetro “agentName” e “serviceName” da chamada.
WhatsappDetails
Para consultar os dados do relatório Detalhe de Atendimentos de Mensagem utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /WhatsAppDetails.
POST |
https://for.tactium.app/ip/ReportApi/WhatsAppDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{
“interval”: {
“startDate”: “2024-08-16T18:12:05.947Z“,
“endDate”: “2024-09-16T18:12:05.947Z“
},
“serviceName”: “SAC – SUPORTE“,
“status”: “Concluído”,
“type”: “REC” }
|
Insira o token gerado para efetuar a autorização na requisição.
Executando o método podemos ter acesso aos dados de atendimentos deste serviço, status e tipo em específico.
Caso seja necessário receber todos os atendimentos sem filtrar pelo tipo de serviço, status ou tipo basta remover o parâmetro “serviceName”,”status” e “type” da chamada.
CampaignProductivityDetails
Para consultar os dados do relatório Produtividade Campanhas OMNI utilizaremos o token gerado anteriormente no método POST do HTTP + Link da Página Web + sufixo /CampaignProductivityDetails.
POST |
https://for.tactium.app/ip/ReportApi/CampaignProductivityDetails |
Os dados de entrada de tipo JSON serão inseridos no “Body” da requisição:
{
“interval”: {
“startDate”: “2024-01-16T18:12:05.947Z“,
“endDate”: “2024-09-16T18:12:05.947Z“
},
“phoneNumber”: “999999999“,
“campaignName”: “CAMP atualização”
}
|
Insira o token gerado para efetuar a autorização na requisição.
Executando o método podemos ter acesso aos dados de campanha deste número e campanha em específico.
Caso seja necessário receber todos os atendimentos sem filtrar pelo número de telefone ou nome da campanha basta remover o parâmetro “phoneNumber”,”status” e “campaignName” da chamada.