Bem vindo à documentação do MagnusBilling 7 em português.

Introdução

MagnusBilling é uma ferramenta de software livre escrita em PHP e JAVASCRIPT, usando os frameworks EXTJS 6 e YII FRAMEWORK, destinada a provedores de telefonia IP MagnusBilling provê um sistema completo, realmente potente, para qualquer pessoa possa iniciar um provedor de telefonia IP em questão de minutos. MagnusBilling usa Asterisk para conexão entre clientes e provedores.

  • MagnusBilling pode ser instalado em Linux Centos 7 ou Debian 10.
  • MagnusBilling tem uma interface moderna e robusta que torna muito fácil a administração de todas as funções.
  • MagnusBilling tem tudo o que pequenas, média e grandes empresas precisam para colocar em funcionamento um robusto sistema de PBX IP Canal youtube .

Funções

  • O sistema conta com muitas funcionalidade para dar uma incrível robustez ao seu servidor.
  • Torna o Asterisk mais fácil de administrar, e permite você trabalhar sem conhecimento prévios Asterisk, tudo é feito pelo painel WEB.
  • Painel WEB completo para o administrador, revendedor e clientes.

Funções suportadas

SoftSwitch 4 & 4 Envio de SMS Pacotes grátis de min Paypal
Torpedo de voz CallShop Pré e pós pago Pagseguro
CallingCard CidCallBack Venda de serviços Moip
Gerenciamento de DID Ivr SIP e IAX GerenciaNet
CallBack Fila de espera URA reversa e muito mais…

Instalação

Para instalar MagnusBilling, você precisa apenas de um servidor com CentOS 7 ou Debian 10, 64 ou 32 bits, instalação básica.

1. Execute os comandos abaixo como root. O script vai instalar Magnusbilling, Asterisk e todas as dependências necessárias, como: IPTables, Fail2ban, Apache, PHP e mysql.

Instale o Linux minimal.

cd /usr/src/
yum -y install wget
wget https://raw.githubusercontent.com/magnussolution/magnusbilling7/source/script/install.sh
chmod +x install.sh
./install.sh

2. Durante a instalação será solicitado o idioma padrão para o Magnus Billing. Escolha digitando o número do idioma escolhido.

Instalação completa. ATENÇÃO!! APÓS TERMINAR A INSTALAÇÃO, O SERVIDOR SERÁ REINICIADO AUTOMATICAMENTE!

Use um browser para login.
   Entre em: http://000.000.000.000
   Usuário: root
   Senha: magnus (Lembre-se de alterar a senha padrão)
_images/ilogin.png

Interface

A interface do MagnusBilling é uma interface padrão do EXTJS, sendo formada por: Menu lateral, contendo todos os módulos, divididos em sub módulos ordenados por categoria. Areá principal, onde é exibidos os módulos abertos, mostrados em abas ativas e inativas. Menu superior, com opções de idioma, botões alterar senha, ajuda e sair do sistema.

Painel de monitoramento

Na página principal, temos alguns gráficos e informações sobre o servidor. Esta barra somente é mostrada na aba Home. barra de status do servidor

  • Modelo do processador;
  • Uso atual do processador;
  • Média de uso do processador;
  • Memória total do servidor;
  • Memória em uso;
  • Gráfico do uso de link upload e download;
  • Tempo que o servidor está online;
  • Usuários ativos;
  • Pico de chamadas simultâneas e de CPS(Chamadas por segundo);
  • Lucro no mês;
  • Recargas realizada no mês;
  • Gráfico de chamadas simultâneas, com opção de mostrar ultima hora, 6 horas, 12 horas, 1 dia, 2 dias, 3 dias ou 1 semana;
  • Gráfico dos 3 troncos mais usados.
_images/dashboard.png

Barra de botões

O MagnusBilling é um sistema modular, cada menu ou submenu corresponde a um módulo. Todos os módulos são idênticos em sua estrutura. Cada módulo é composto por uma barra de ferramentas composto por estes botões:

Barra de botões dos módulos

  • Botão Adicionar.
    Adicionar um novo registro ao módulo.
  • Botão Editar.
    Editar um registro, somente clicando sobre um registro, já é aberto do formulário para editar.
  • Botão Excluir.
    Ao selecionar um ou mais registros e clicando em Excluir, será solicitado a confirmação e sendo confirmado, será excluído o registro. O botão excluir tem uma propriedade chamada Todos, encontrada ao clicar sobre a flecha ao lado do botão, esta propriedade exclui todos os registros listados no módulo. Propriedade muito útil para excluir grande quantidade de dados. OBS: O banco de dados do MagnusBilling usa InnoDB com foreign key, isso relaciona todos os dados, por tanto, não é possível excluir dados que estão relacionados com outro. EX: Não é possível excluir um cliente, se este cliente tem um pagamento realizado, caso seja necessário excluir o cliente, primeiro tem que ser excluído todos os registros relacionados a este cliente.
  • Botão Atualizar em Lote.
    Este botão é fundamental para uso eficiente do sistema. Este botão é usado, como sugere o nome, para atualizar vários registros ao mesmo tempo, facilitando uma tarefa que seria impossível de ser realizada manualmente em módulos com muitos registros, como o módulo tarifas que pode facilmente passar dos 100 mil registros. O uso é bastante simples, basta buscar os registros que se queira atualizar, e clicar no botão Atualizar em Lote, abrirá o formulário de edição com todos os campos em branco, altere somente os campos que queira atualizar, deixando o restante em branco, e clique em salvar, este processo pode demorar alguns segundos, e atualizará todos os registros. O botão Atualizar em Lote tem uma propriedade chamada Selecionados, encontrada ao clicar sobre a flecha ao lado do botão, esta propriedade irá atualizar só os registros selecionados.
  • Botão Imprimir.
    Este botão gera um arquivo em Excel no formato CSV dos registros seleccionados.
  • Botão Imprimir.
    Este botão gera um arquivo em PDF dos registros selecionados.
  • Botão Limpar Filtros.
    Este botão limpar os filtros realizados.
_images/buttons.png

Colunas

Cada coluna do MagnusBilling tem várias opções muito útil para o bom uso do sistema.

Para encontrar estas opções coloque o mouse sobre a coluna desejada, e clique na flecha.

  • Ordem Ascendente e Descendente.
    Classifica os registros pela coluna selecionada de forma ascendente ou descendente. Esta opção também pode ser usada clicando sobre a coluna.
  • Colunas.
    Com esta opção se pode mostrar ou ocultar colunas, muito útil para mostrar somente dados necessários. Exemplo, para gerar uma tabela de preço para enviar a um cliente contendo somente o nome do destino e o preço de venda.
  • Agrupar por Esta Coluna.
    Agrupa os registros por esta coluna, muito útil para o módulo Chamadas Online, podendo agrupar as ligações por cliente. Para poder ver separadamente as ligações de um cliente, ou de qualquer outra coluna.
  • Exibir em Grupos.
    Esta opção é usada para desativar a opção anterior.
  • Filtro.
    Esta opção também é de fundamental entendimento, por tanto será escrito um tutorial exclusivo.
_images/colluns.png

Sistema de Filtro

O MagnusBilling conta com um poderoso sistema de filtro para encontrar os registros desejados em cada módulo.

Para encontrar esta opção coloque o mouse sobre a coluna que deseja realizar a busca, e clique na flecha, deslizar ate Filtro, abrirá o sub-menu contendo as opções para a coluna, continue deslizando o mouse até o campo e coloque o valor que deseja buscar e aperte Enter. OBS: O sistema de filtro é case sensitive.

Existe tipos de filtro dependendo do tipo dos dados da coluna:

  • Filtro por texto.

    Este filtro encontra dados em colunas com texto que inicia com, termina com, contém ou que seja igual a. Por exemplo, buscar um cliente que tem o nome que Inicia com ‘José’, será listado todos os clientes que tem nome que inicia com José.

_images/filter_text.png
  • Filtro por números inteiros.

    Este filtro será mostrado em colunas que contêm valores numéricos, como a coluna crédito de um cliente.

_images/filter_int.png
  • Filtro por datas.

    Este filtro será mostrado em colunas que contêm datas, este filtro é muito útil nos relatórios.

_images/filter_date.png
  • Filtro combo.

    Este filtro é usando em casos de relacionamento entre módulos.

_images/filter_combo.png

Para desfazer um filtro, tire a seleção do menu filtro. E para limpar todos os filtros aplicado a um módulo, clique no botão Limpar Filtros.

Backup

É sempre uma boa ideia ter um backup.

O backup são salva a tabela de chamada rejeitadas, pois esta tabela costuma ser enorme.

Backup manual

O projeto já conta com um script para fazer o backup do Banco de dados e dos arquivos do Asterisk. Na instalação já é adicionado o script no crontab do linux para que realize um backup por dia. Por padrão as 02:00. O backup é salvo no diretório /usr/local/src

Manualmente

Execute este comando no SHELL do seu servidor. php /var/www/html/mbilling/cron.php Backup

Crontab

Configurando o crontab -e

crontab -e

Procure a linha abaixo e altere para o horário desejado, ou comente a linha com ; para nao fazer backup automático.

0 2 * * * php /var/www/html/mbilling/cron.php Backup

Atualizar MagnusBilling

Nossa equipe trabalha diariamente para adicionar novas funçōes e solucionar problemas. Voce pode ver as alteraçoes realizadas no link https://github.com/magnussolution/magnusbilling7/commits/source

Por tanto, nossa equipe recomenda que você mantenha seu servidor atualizado.

Para atualizar seu MagnusBilling, execute o seguinte comando no SSH logado como root.

/var/www/html/mbilling/protected/commands/update.sh

Recuperar a senha do magnusbilling

Recupere a senha root do MagnusBilling. Para recuperar ou alterar sua senha root com MagnusBilling, basicamente faremos algumas modificações diretamente no banco de dados do MagnusBilling MySQL / MariaDB. Você pode fazer isso por meio do console como neste tutorial ou por meio do phpMyAdmin (neste caso, você pode usar os mesmos comandos MySQL apresentados nas últimas etapas deste tutorial).

1. INGRESAR COMO ROOT NO SSH DO SERVIDOR DO MAGNUSBILLING..

Usando um cliente SSH, por exemplo Putty, entramos no terminal ou shell do servidor do MagnusBilling. Devemos colocar o IP ou domínio do servidor e depois ingressar root como usuário e a respectiva senha. Se você usar um usuário diferente do root, fazer o login com seu usuário, e usando o comando sudo, logar como root

_images/putty.png _images/entrar-como_root-no-terminal-SSH-root-do-Magnus-Billing.png

2. ENTRE COMO ROOT NA BASE DE DADOS MYSQL.

Agora, inserimos o seguinte comando:

mysql u root p mbilling

Por padrão o script de instalação do MagnusBilling salva a senha root do mysql no arquivo /root/passwordMysql.log, por tanto, você poderá ver a senha do root do mysql com o comando

cat /root/passwordMysql.log
_images/acesso-mysql-magnusbilling.png

3. MODIFICAR A SENHA DIRETAMENTE NA BASE DE DADOS.

Depois de inserir a senha, encontramos o monitor MySQL, onde colocaremos os comandos para modificar a senha do painel de administração do MagnusBilling e recuperar o acesso. Alternativamente, você pode executar esses comandos no phpMyAdmin caso tenha essa ferramenta em seu servidor.

Observe que MagnusBilling usa o algoritmo SHA1 para criptografar a senha dos usuários administradores.

Para colocar uma nova senha, já que não vamos saber a atual, pois está criptografada, executamos o seguinte. Neste exemplo iremos restaurá-lo para a senha padrão que vem em uma nova instalação do MagnusBilling, que é magnus. Mas em vez disso, você pode colocar o que quiser, incluindo números, letras, símbolos.

UPDATE pkg_user SET password = SHA1("magnus") WHERE username = "root";

Após executar este comando, sua senha de administração do MagnusBilling está resetada, e você poderá entrar no seu painel normalmente.

Cálculo de preço da chamada

O valor a ser cobrado do cliente é calculado em base ao preço da tarifa do prefixo que mais se adequa ao número discado do plano da do usuário.

O valor é calculado usando 4 valores.

  • Duração da chamada;
  • Preço de venda;
  • Bloco inicial;
  • Incremento.

Exemplo.

O cliente liga para o número 5511988443300 e fala por 45 segundos. Existe uma tarifa no menu Tarifas para o prefixo 55119, com os seguint:

  • Preço de compra = 0.05
  • Bloco inicial = 30
  • Incremento = 6

A fórmula do cálculo é:

Caso a Duração da chamada for menor que o Bloco inicial a fórmula será

(Preço de compra / 60 segundos) * Bloco inicial

Caso a Duração da chamada maior que Bloco inicial a fórmula será.

(Preço de compra / 60 segundos) * Duração da chamada

Quando a duração da chamada é superior ao Bloco inicial, também é calculado o Incremento.

No exemplo anterior, a duração foi 45 segundos, e o Incremento é 6, então a fórmula fica

(Duração da chamada / Incremento ) da 7 com resto 3. Então temos que somar 3 ao resto que será 48, portanto neste exemplo será calculado
(0.05 / 60) * 48 = 0.04

O código abaixa é o utilizado para o cálculo.

$cost = 0;
if ($callduration < $initblock) {
    $callduration = $initblock;
}

if (($billingblock > 0) && ($callduration > $initblock)) {
    $mod_sec = $callduration % $billingblock;
    if ($mod_sec > 0) {
        $callduration += ($billingblock - $mod_sec);
    }
}
$cost += ($callduration / 60) * $rateinitial;

A variável $callduration é a duração da chamada; A variável $initblock é Bloco inicial; A variável $billingblock é Incremento.

Busca de tarifa

Como o MagnusBilling seleciona a tarifa a ser usada?

Quando um cliente faz uma chamada externa, para um fixo ou celular, é disparado uma rotina de verificações que consiste em :

  1. Verifica o usuário e senha.
  2. Verifica se o cliente está ativo.
  3. Verifica se o número discado é um DID.
  4. Verifica se o número discado é uma Conta SIP.
  5. Verifica o plano do cliente.
  6. Buscar dentro das tarifas do plano qual a tarifa que mais se encaixa com o número discado.
  7. Busca os troncos que pertencem ao grupo de troncos da tarifa encontrada.
  8. Envia a chamada para o primeiro tronco, e se falhar envia para o próximo.
  9. No momento que a chamada é finalizada, é calculado o preço de compra e venda
  10. Adicionado a chamada no relatório CDR
  11. Descontado o valor da chamada no crédito do cliente.

Mais bem, como funciona o passo 6?

É realizado da seguinte forma. Digamos que o cliente XXXXX ligou para o número 551140045678

No passo 5, o sistema pega o plano do cliente, e então no passo 6 é feito um “SELECT” na tabela das tarifas assim.

$sql = "SELECT  * FROM pkg_plan LEFT JOIN pkg_rate ON pkg_plan.id = pkg_rate.id_plan
LEFT JOIN pkg_prefix ON pkg_rate.id_prefix = pkg_prefix.id
LEFT JOIN pkg_trunk_group ON pkg_trunk_group.id = pkg_rate.id_trunk_group
WHERE pkg_plan.id=$MAGNUS->id_plan AND pkg_rate.status = 1
AND $MAGNUS->prefixclause ORDER BY LENGTH( prefix ) DESC LIMIT 1";

A variável $MAGNUS->id_plan é o id do plano do cliente, e a variável $MAGNUS->prefixclause é o filtro realizado para encontrar a tarifa.

Para facilitar o entendimento vamos explicar de outra forma.

Como o cliente ligou para 551140045678, o sistema vai buscar da seguinte forma.

Existe uma tarifa para o prefixo 551140045678?

  • Se sim, usamos esta tarifa
  • Se não, procuramos novamente retirando o último número, neste caso 55114004567 e assim até chegar somente no número 5. Se não encontrar nenhuma tarifa, o sistema vai retornar erro e não vai continuar a chamada.

Voltando ao “SELECT” ficaria assim.

$sql = "SELECT  * FROM pkg_plan LEFT JOIN pkg_rate ON pkg_plan.id = pkg_rate.id_plan
LEFT JOIN pkg_prefix ON pkg_rate.id_prefix = pkg_prefix.id
LEFT JOIN pkg_trunk_group ON pkg_trunk_group.id = pkg_rate.id_trunk_group
WHERE pkg_plan.id=1 AND pkg_rate.status = 1 AND
(prefix = '551140045678' OR
prefix = '55114004567' OR
prefix = '5511400456' OR
prefix = '551140045' OR
prefix = '55114004' OR
prefix = '5511400' OR
prefix = '551140' OR
prefix = '55114' OR
prefix = '5511' OR
prefix = '551' OR
prefix = '55' OR
prefix = '5' )
ORDER BY LENGTH( prefix ) DESC LIMIT 1";

Digamos que você tem no plano do cliente, as seguintes 3 tarifas

55,Brasil Fixo Geral 55119,Brasil SP Celular 5511,Brasil SP Fixo

Neste exemplo, o “SELECT” retornaria a tarifa 5511,Brasil SP Fixo.

Mas você pode estar se perguntando se o cliente ligar para 5511988551234, o “SELECT” encontraria o prefixo 55119 e o 5511 e aí qual dos dois usaria? Usaria o 55119, pois no “SELECT” tem o parâmetro ORDER BY LENGTH( prefix ) DESC e também o parâmetro LIMIT 1. Ou seja, ele ordenará os resultados colocando em primeiro o prefixo que tiver a maior quantidade de dígitos.

Configurar TTS

O MagnusBilling suporte TTS via URL, segue alguns provedores testados com suas respectivas configurações.

Lembrando que as variáveis da URL, independente do provedor, deve ser editada conforme sua necessidade e de acordo com a API do provedor, a única parte que é referente ao MagnusBilling é a variável $name, que é onde o MagnusBilling vai substituir o nome cadastrado no menu Números.

Vocalware

Para configurar o primeiro passo é criar sua conta no site https://www.vocalware.com/ Agora temos que configurar a URL da API no menu Configurações sub menu Ajustes. Localize a opção TTS URL e altere a URL para:

https://www.vocalware.com/tts/gen.php?EID=3&LID=6&VID=1&TXT=$name&EXT=mp3&FX_TYPE=&FX_LEVEL=&ACC=YOUR_ACC&API=YPUR_API&SESSION=&HTTP_ERR=&CS=&SECRET=YOUR_SECRET

Neste exemplo acima, já deixamos configurado o idioma Português do Brasil.

EID=3 é Engine ID = 3 LID=6 é Portuguese VID=1 é a voz de Helena

Voicerss

Para configurar o primeiro passo é criar sua conta no site http://www.voicerss.org Agora temos que configurar a URL da API no menu Configurações sub menu Ajustes. Localize a opção TTS URL e altere a URL para:

http://api.voicerss.org/?key=YOUR_API&hl=pt-br&src=$name&f=8khz_16bit_mono

Nesta empresa você somente precisa colocar sua API. Neste exemplo já deixamos o idioma em Português do Brasil.

Google

Você pode ver mais informações sobre o Google TTS no link: https://cloud.google.com/text-to-speech?hl=pt_br

A URL do Google é:

https://translate.google.com/translate_tts?ie=UTF-8&q=$name&tl=pt-BR&total=1&idx=0&textlen=5&client=tw-ob&tk=$token

O magnusBilling funcionará com qualquer provedor TTS que aceite a integração via URL.

Este serviço poderá ser cobrado pelo provedor.

Pacotes Grátis

O que é pacotes grátis?

Pacotes grátis são para poder dar aos clientes um quantidade de chamadas sem custo, por um valor mensal ou sem custo algum.

Como configurar?

A configuração dos pacotes grátis são em várias etapas.

1 - Criar o pacote.

Veja a lista das descrições de cada campo:

2 - Selecionar as tarifas que deseja incluir nos pacotes.

É necessário informar qual serão os prefixos que serão incluídos nos pacotes grátis. Para isso, vá ao menu tarifas submenu tarifas, clicar sobre a tarifa que deseja incluir nos pacotes e colocar em sim a opção “Incluir nos pacotes grátis”
3 - Ativar os pacotes grátis para os usuários.
Ir ao menu Clientes, submenu usuários, clicar no cliente que deseja ativar o pacote, e selecionar a opção “Ativar pacote grátis” o pacote que deseja ativar para o cliente.

Como funciona?

Usaremos o seguinte exemplo:

Foi criado um pacote gratuito chamado BRASIL FIXO, com 6000 segundos gratis, ou seja, 100 minutos, tipo de tarifação mensal e com o valor de R$5,00.

Foi configurado para incluir nos pacotes grátis as tarifas do Brasil fixo, do plano Ouro.

E foi ativado o pacote grátis no usuário 24315, e colocado este cliente no plano Ouro.

E deixamos este cliente 24315 com saldo R$10,00.

Processo realizado pelo sistema.

Cliente 24315 liga para o número 551140040001, o sistema vai verificar o plano do cliente, e logo buscará a tarifa mais adequada para o número discado, neste caso será a tarifa 55114, Fixo São Paulo.

Agora verificará se esta tarifa tem a opção “Incluir nos pacotes grátis”, se sim, e no nosso exemplo está sim, o MagnusBilling vai verificar se o cliente já realizou 100 minutos a partir do dia de ativação, considerando se o tipo de tarifação é mensal ou semana, no nosso exemplo é mensal. Se ainda não foi usado os 100 minutos, o sistema vai permitir o cliente ligar mesmo o saldo do cliente seja 0. E caso o cliente tenha saldo, a chamada será gratuita.

Caso o tarifa esteja incluída nos pacotes, mas o cliente já superou o limite do pacote, o MagnusBilling somente vai permitir a chamada se o cliente tiver crédito.

Continuando em nosso exemplo, se o cliente discar para qualquer outro numero que não inicie com 55114, somente poderá chamar se tiver crédito. Pois em nosso plano Ouro, somente selecionamos o preciso 55114 para incluir nos pacotes.

Como é cobrado o mensalidade?

Usando o mesmo exemplo anterior, e que o plano foi ativado dia 15, o sistema vai cobrar automaticamente do cliente o valor do pacote, neste exemplo R$5,00 do crédito do cliente todo dia 15.

Existe uma opção no menu configurações submenu ajustes chamado “Notificação de Pacotes de Ofertas”, por padrão é 5 dias. Isso quer dizer que 5 dias antes do dia do vencimento do plano o MagnusBilling ja vai tentar cobrar o valor do pacote, neste nosso exemplo seria no dia 10.

Caso o cliente não tenha crédito suficiente para o MagnusBilling descontar os R$5,00, será enviado o email do tipo “plan_unpaid”.

O magnusbilling tentará cobrar o valor do pacote grátis ate conseguir, ou até vencer o pacote.

Caso o cliente coloque crédito, ou já tenha crédito suficiente para o pagamento, o MagnusBilling vai marcar o plano como pago mais um mês, e criar uma recarga no preço do plano, e enviará o email do tipo “plan_paid”.

Caso chegue dia 16 e o cliente ainda não tenha crédito suficiente para o pagamento, será desativado o plano na conta do usuário, e enviado o email do tipo “plan_released”.

Os emails poderão ser encontrados, e editados, no menu configurações submenu modelos de email.

Onde ver o consumo de cada cliente?

Todas as chamadas realizadas que utilizar algum pacote, será adicionada no menu tarifas submenu relatório de pacotes.

OBS: * Não é possível ativar mais de uma pacote por cliente. * Não é possível criar pacotes combinados, exemplo, 100 minutos para fixo, e 50 para celular. * Chamadas realizadas usando os pacotes sempre serão arredondadas por minutos, independente do tempo mínimo e bloco de tempo da tarifa.

Imagem do exemplo

Veja algumas imagens da configuraçã de nosso exemplo.

O pacote grátis.

_images/pacote.png

Tarifas.

_images/pacote-tarifas.png

Mostrar a coluna Incluir nos pacotes grátis.

_images/pacote-coluna-oculta.png

Ativação no usuário

_images/pacote-usuario.png

Relatório

_images/pacote-relatorio.png

Modelos de Email

_images/pacotes-emails.png

Como usar VOUCHER

Para usar um Voucher, a primeira coisa a fazer é criar os Vouchers no menu financeiro, submenu Voucher.

Veja a lista das descrições de cada campo:

Após gerar os novos Vouchers, será necessário adicionar permissões no grupo dos cliente para que possam ver e criar Voucher, conforme a imagem abaixo.

_images/voucher_permission.png

Existem três maneiras de usar um voucher.

1 - Através do painel de um cliente existente.

Agora os clientes em posse de algum Voucher que não tiver sido usado, e que pertencem a algum grupo de clientes que tenha permissão para ver e criar Voucher, poderá fazer o login no seu painel de cliente ir ao menu Voucher, clicar em novo, e colocar o Voucher. Estando tudo correto com o voucher, o sistema vai liberar o credito para o usuário.

2 - Através de um DID.

Crie um DID e o deixe sem destino, ou com destino Calling Card. Ao ligar para o DID, será solicitado número PIN, então digite o número do voucher. Será criado um usuário novo, com as configurações do Voucher, e adicionado o crédito para a conta.

3 - Ligar de uma conta SIP para o código *120

Ao ligar para o código *120 e ingresar o número do Voucher ao ser solicitado o PIN, o valor do Voucher será adicionado ao usuário.

Será criado uma recarga para o cliente com o valor do crédito do Voucher nas 3 opções anteriores.

No menu Voucher do administrador, vai aparecer o usuário que usou o voucher, e a data de uso.

Directmedia

Em Asterisk, a sinalização SIP para o estabelecimento de uma chamada sempre ocorre entre o servidor Asterisk e os ramais participantes desta chamada. Uma vez que a chamada foi estabelecida, o tráfego rtp também pode passar através do servidor Asterisk ou pode fluir diretamente entre os ramais participantes da chamada.

Ambos os sistemas têm vantagens e desvantagens

  • Se o tráfego rtp passa diretamente entre os ramais que participam de uma chamada, a vantagem é que o servidor Asterisk não precisa suportar essa carga, que em certos casos pode ser grande, como quando é um PBX Asterisk com dezenas ou centenas de chamadas simultaneamente.
  • Se o tráfego rtp passa diretamente entre os ramais que participam de uma chamada, a desvantagem é que o Asterisk não reconhecerá nenhum código discado nos ramais assim que a chamada for iniciada. Portanto, os aplicativos do Asterisk que são ativados por certos códigos de discagem, como transferências de chamadas, não funcionarão em nenhuma circunstância.

Portanto, vemos que se quisermos que as transferências de chamadas e outras funções que dependem de códigos de discagem funcionem (desvios, não perturbe, gravação de chamadas, etc.) é essencial que o tráfego de voz (rtp) também passe pelo Asterisk.

A ativação deste recurso é feita através do parâmetro directmedia no arquivo sip.conf. Com a opção directmedia = yes, o tráfego rtp flui diretamente entre as extensões que participam de uma chamada, e com a opção directmedia = no, o tráfego rtp passa pelo Asterisk.

  • A imagem a seguir mostra um exemplo prático do Asterisk com uma chamada da contas SIP 24320 com directmedia = no, ou seja, o áudio vai passar pelo Asterisk.

Veja que quando o tronco atende a chamada, o IP do RTP enviado para a origem da chamada é o próprio IP no Asterisk

_images/directmedia_no.png

A imagem é uma captura de pacotes usando um analisador de protocolo de rede, como o sngrep:

  • Agora alterando a configuração da conta SIP para directmedia = yes, veja como fica na imagem abaixo.

Quando directmedia é ativado, o Asterisk gera um segundo INVITE passando no C=IN o ip do tronco, desta forma o audio passará entre a conta SIP e o tronco.

_images/directmedia_yes.png

Veja no menu Chamadas online do MagnusBilling que Reenvite esta agora YES. Note também o campo Audio IP: que esta com o IP do tronco, junto com a informação (Outside bridge), tradução livre, (Ponte pelo lado de fora)

_images/directmedia_yes_2.png

Iptables

Iptables regras aplicadas na instalação

Regras Básicas

iptablesF
iptablesA INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptablesA OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptablesA INPUT -i lo -j ACCEPT
iptablesA INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptablesA INPUT -p tcp --dport 22 -j ACCEPT
iptablesP INPUT DROP
iptablesP FORWARD DROP
iptablesP OUTPUT ACCEPT
iptablesA INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptablesA INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
iptablesA INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Regras Opcionais

OPENVPN: iptables -A INPUT -p udp --dport 1194 -j ACCEPT
ICMP: iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
IAX: iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT
HTTPS: iptablesA INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Scanner Amigável

Regras para bloquear scanner que não é amigável.

iptables -I INPUT -j DROP -p tcp --dport 5060 -m string --string "friendly-scanner" --algo bm
iptables -I INPUT -j DROP -p tcp --dport 5080 -m string --string "friendly-scanner" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5080 -m string --string "friendly-scanner" --algo bm
Opicional
iptables -I INPUT -j DROP -p tcp --dport 5060 -m string--string "VaxSIPUserAgent" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "VaxIPUserAgent" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5080 -m string --string "VaxSIPUserAgent" --algo bm
iptables -I INPUT -j DROP -p tcp --dport 5080 -m string --string "VaxIPUserAgent" --algo bm

Mostrar regras iptables

sudo iptables -L -v

Mostrar número de linha

iptables -L -v --line-numbers

Deletar Linha

Deletar linha 2

iptables -D INPUT 2

Bloquear endereço de IP

iptables -I INPUT -s 62.210.245.132 -j DROP

Salvar mudanças

Centos

service iptables save

Debian / Ubuntu

apt-get install iptables-persistent
service iptables-persistent save
dpkg-reconfigure iptables-persistent

Indices and tables