FreePBX 16 disponibilizado!

O FreePBX 16 beta foi anunciado em junho e, desde então, foi observado pela equipe FreePBX, milhares de instalações desta versão. As equipes de engenharia e controle de qualidade concluíram seus testes, portanto, anunciaram no domingo(31/10) o FreePBX, que mudou de beta para GA (Público Geral).

  • Para relembrar, isso é o que o FreePBX 16 traz para o projeto:

      1. Suporte ao PHP 7.4
      2. Adições importantes ao módulo API com métodos GraphQL
      3. Padronizando o PJSIP como um único driver SIP. O Chan_SIP ainda é suportado, mas agora desabilitado por padrão durante a instalação;
      4. Modelos do painel de controle do usuário - os administradores agora podem personalizar a experiência do usuário do UCP antes que ele faça login no UCP pela primeira vez;
      5. Revisão do módulo do Firewall e integração dos recursos de detecção de intrusão com o Firewall;
      6. Limites ajustáveis ​​para firewall responsivo - para administradores que buscam controle preciso sobre como o firewall responsivo detecta e bloqueia o tráfego SIP de IPs de origem não reconhecidos;
      7. Redirecionamento HTTPS - os administradores podem configurar serviços http individuais para redirecionar para https;
      8. Configuração do protocolo SSL - protocolos SSL individuais para https agora são configuráveis ​​pelo administrador;
      9. AMI bindaddr - Uma nova instalação do FreePBX irá definir o AMI bind addr para localhost por padrão;
      10. Validação de senha UCP - O administrador pode habilitar e configurar várias regras de complexidade de senha para usuários que alteram senhas.
  • Bem como muitas melhorias e correções numerosas demais para serem mencionadas individualmente. A maioria dos novos recursos foram transferidos para o FreePBX 15 durante o período beta, portanto, os administradores e usuários do FreePBX podem já estar cientes e usar alguns desses recursos. O método preferido de migração de uma versão anterior para o FreePBX 16 é restaurar um backup para uma nova instalação do FreePBX Distro ISO. Tal como acontece com as principais atualizações anteriores, foi publicado um módulo de atualização de 15-> 16 versões que fará uma verificação do sistema e realizará a atualização.

    O FreePBX como sempre saindo na frente, este se não o melhor, é um dos melhores projetos opensource para criar seu PBX IP.

         

    FreePBX, Asterisk 16 e Interface RESTful do Asterisk (ARI)

    Sejam muito bem-vindos a mais uma postagem do site FreePBX Brasil, esta documentação vai lhe auxiliar a fazer as configurações para uso do ARI no FreePBX.

    O intuito deste é contribuir com a comunidade auxiliando para execução discagens via API, um caso comum é quem faz o uso de discadores, que normalmente usam os famosos “aquivo.call” e/ou AMI para efetuar as discagens, ambos funcionam muito bem, mas fazendo uso de RESTful você vai dar um upgrade na sua aplicação.

    A Interface RESTful do Asterisk (ARI) é uma API assíncrona que permite aos desenvolvedores construir aplicativos de comunicação no asterisk, fazendo uso de objetos por meio de eventos JSON e WebSocket, o ARI está no asterisk a partir da versão 12.

    Antes de seguir, vale ressaltar que se caso identificar algum problema ou erro neste post, não deixe de nos reportar, o feedback é de suma importância para dar ainda mais qualidade aos conteúdos do site.

    Laboratório:

    1. FreePBX 15;
    2. Asterisk 16;
    3. Insomnia - Versão free.

    Vamos iniciar as configurações no FreePBX, primeiro criar o usuário RESTful.

    A seguir será necessário ir nas configurações avançadas para habilitar o WebService do FreePBX para aceitar as requisições para o ARI.

    Acima apresenta as configurações avançadas do FreePBX, aonde será configurado habilitando o WebService para as requisições de interação com o nosso core de telefonia, lembrando que estas configurações feitas via GUI do FreePBX são somente para interações com o asterisk. Lembre-se, qualquer alteração via GUI do FreePBX faz necessário logo em seguida salvar e aplicar, usando o "Submit" e o "Apply"!

    Agora que já foi criado o usuario da API e habilitado o serviço de WebService, será necessário identificar se de fato temos o ARI ativo em nosso asterisk, vamos ao CLI.

    [root@freepbx15 ~]# rasterisk -vvvvvvvcgi
    Asterisk 16.4.1, Copyright (C) 1999 - 2018, Digium, Inc. and others.
    Created by Mark Spencer 
    Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
    This is free software, with components licensed under the GNU General Public
    License version 2 and other licenses; you are welcome to redistribute it under
    certain conditions. Type 'core show license' for details.
    =========================================================================
    Connected to Asterisk 16.4.1 currently running on freepbx15 (pid = 2212)
    freepbx15*CLI> ari show 
    app     apps    status  user    users   
    freepbx15*CLI>
    
    

    No CLI digitando ari show e pressionando a tecla TAB será apresentado algumas opções que estão disponiveis para consulta, a seguir consultaremos os usuarios ativos ARI, status do serviço e se o WebService está ativo.

    
    freepbx15*CLI> ari show users
    r/o?  Username
    ----  --------
    No    freepbxuser
    No    kowalski
    
    freepbx15*CLI>
    

    freepbx15*CLI> ari show status 
    ARI Status:
    Enabled: Yes
    Output format: compact
    Auth realm: Asterisk REST Interface
    Allowed Origins: *
    User count: 2
    
    freepbx15*CLI>
    

    freepbx15*CLI> http show status 
    HTTP Server Status:
    Prefix: 
    Server: Asterisk/16.4.1
    Server Enabled and Bound to 0.0.0.0:8088
    
    Enabled URI's:
    /httpstatus => Asterisk HTTP General Status
    /static/... => Asterisk HTTP Static Delivery
    /ari/... => Asterisk RESTful API
    /ws => Asterisk HTTP WebSocket
    
    Enabled Redirects:
      None.
    
    freepbx15*CLI>
    

    Aqui observamos que nos serviços WEB do asterisk temos o ARI ativo, a linha "/ari/... => Asterisk RESTful API" os demais podemos abordar em um outro post. Idetificado que as configurações estão corretas com o ARI, será necessário agora, no asterisk criar um contexto para os testes.

    vim /etc/asterisk/extensions_custom.conf
    [freepbxbrasil]
    
    exten => 1000,1,NoOp( ..:: ------------------------- )
     same =>      n,NoOp( ..:: Comunidade FreePBX Brasil )
     same =>      n,NoOp( ..:: Prof. Kowalski )
     same =>      n,NoOp( ..:: ------------------------- )
     same =>      n,Hangup()
    
    

    Em seguida saia do vim salvando, vou pode usar o ":wq" ou ":x" que acho mais prático, após contexto criado e salvo, será necessario recarrega-lo , por que até então o asterisk não reconhece o mesmo, no CLI digite dialplan reload, para ter certeza que o contexto existe, certique usando o comando abaixo.

    freepbx15*CLI> dialplan show freepbxbrasil 
    [ Context 'freepbxbrasil' created by 'pbx_config' ]
      '1000' =>         1. NoOp( ..:: ------------------------- )     [extensions_custom.conf:3]
                        2. NoOp( ..:: Comunidade FreePBX Brasil )     [extensions_custom.conf:4]
                        3. NoOp( ..:: Prof. Kowalski )                [extensions_custom.conf:5]
                        4. NoOp( ..:: ------------------------- )     [extensions_custom.conf:6]
                        5. Hangup()                                   [extensions_custom.conf:12]
    
    -= 1 extension (5 priorities) in 1 context. =-
    freepbx15*CLI> 
    
    

    Pronto, agora está certificado que o contexto existe, agora será feito uma requisição API que vamos executa-lo e apresentar essas mensagens no console, para isso vamos usar o Insomnia na versão free, este muito usado para testes de rotas de API, assim como POSTMAN e muitos outros.

    Este que será usado uma requisição POST, conforme orienta a documentação oficial do asterisk que ao término deste deixarei explicíto.

    Acima em ❶ temos criado a nossa requisição de API do tipo "POST", seguindo a documentação do ari no site oficial do asterisk, que ao final informo o link. Em ❷ a requisição da api com os devidos parâmetros este que detalho a seguir, em ❸ aonde ao clicar será enviado sua requisição, em ❹ é um dos pontos mais importante deste processo, o codigo de retorno HTML, neste caso está como "200 OK" ou seja nossa requisição foi executar e o retorno foi sucesso, se o retorno for direfente disso, valide na documentação da API que na maioria das vezes alguns códigos de retornos são mapeados e documentados para lhe auxiliar em problemas.

    Explicando item ❷ , para ficar de facíl entendimento, será colocado a url e vamos particiona-la para explicar cada parte da mesma.

    URL = http://kowalski:freepbxbrasil@192.168.200.24:8088/ari/channels?endpoint=Local/1000@freepbxbrasil&extension=1000&context=freepbxbrasil&priority=1&callerid=9000

    Dados de autentição da API:
    User ➜ kowalski
    Password ➜ freepbxbrasil
    IP do Server ➜ 192.168.200.24
    Porta do WebService ➜ 8088

    Dados do Asterisk baseado na documentação oficial:
    channels ➜ Rota da API ARI
    endpoint ➜ O canal usado para comunicação interna com o asterisk
    extension ➜ Extensão criada no nosso contexto
    freepbxbrasil ➜ Contexto criado para homologação conforme acima.
    priority ➜ a nivel de dialplan estamos iniciando nesta posição do contexto
    callerid ➜ o callerid que vamos utilizar para essa requisição

    Agora com as informações acima validada, já pode ser feita a requisição via insomnia e o retorno deve ser um "200 OK", acompanhe no seu asterisk via terminal (CLI), abaixo um exemplo de quando o asterisk recebe a requisição via ARI.

    Acima temos o retorno de quando a requisição foi executada com sucesso, assim como o contexto do asterisk como esperado.

    Pronto, agora que você aprendeu o básico de usabilidade do recurso ARI que tem disponível em seu asterisk, aproveite que este assim como muitos outros recursos no asterisk fazem o diferencial na solução de telefonia.

    A seguir vou documentar as referências utilizadas nesta documentação, obrigado e até a próxima.

    1- Asterisk REST Interface (ARI)
    2- Introduction to ARI and Channels
    3- Asterisk 16 Channels REST API
    4- Local Channel


    "Começar é a parte mais importante de qualquer trabalho" - Platão


         

    Instale o dongle no seu FreePBX 14 e Asterisk 13


    Sejam muito bem-vindos a mais uma postagem do site freepbx brasil. Esta documentação vai lhe auxiliar a fazer a instalação do seu modem Dongle e utilizar para receber e efetuar ligações no freepbx. Antes de qualquer coisa não deixe de colaborar com conteúdos para alimentar essa base de conhecimentos. Vamos ao trabalho!

    Laboratório:

    1. FreePBX 14;
    2. Asterisk 13;
    3. Dongle: Modelo E1553;
    4. Modulo Dongle: Huawei 3G Dongle Channel Driver, Version 1.1, Revision 43gh=47cg

    [ Processo de Instalação ]

    yum install asterisk13-devel automake git -y
    git clone https://github.com/wdoekes/asterisk-chan-dongle.git
    cd asterisk-chan-dongle
    ./bootstrap
    ./configure --with-astversion=13.32.0
    Obs.: --with-astversion=13.32.0 onde "13.32.0" será a versão do seu asterisk
    make
    make install
    fwconsole restart
    chown asterisk:asterisk /etc/asterisk/dongle.conf
    chmod 755 /etc/asterisk/dongle.conf
    asterisk -rx "dongle show devices"
    echo 'KERNEL=="ttyUSB*", MODE="0666", OWNER="asterisk", GROUP="dialout"'>/etc/udev/rules.d/92-dongle.rules
    Obs.: A linha acima, fique atento que estamos exectando um echo no conteúdo para dentro do arquivo. Se dentro do diretório do seu asterisk (Caminho: /etc/asterisk/) não existir o arquivo "dongle.conf", faça o download aqui do arquivo pronto, só ajustar para o seu ambiente.

    aviso Se no momento de rodar o "MAKE" se deparar com o erro:
    smsdb.c:26:21: fatal error: sqlite3.h: No such file or directory #include

    Rode o seguinte comando: yum install libsqlite3x-devel -y

    Agora partindo do principio que o processo de instalação foi finalizado com sucesso, antes seguir para as configurações no painel do seu freepbx, vamos fazer alguns ajustes no arquivo de configuração o "dongle.conf" para que seu Laboratório funcione perfeitamente.

    [root@freepbxbrasil ~]# vim /etc/asterisk/dongle.conf
    



    [root@freepbxbrasil ~]# asterisk -rx "dongle show devices"
    

    Obs.: O comando acima você identifica o status do seu dongle,com informações da operadora, IMEI do chip e numero, antes de seguir precisa ter certeza que está tudo correto com os passos anteriores.

    Agora vamos as configurações no freepbx.

    No caminho: Connectivity ➔ Trunks

    Opção: + Add Custom Trunk

    Na guia "General" defina apenas o nome do tronco como "Dongle0".

    Ainda na mesma tela de configuração, vá até a guia "custom Settings", adicione a seguinte linha: "Dongle/dongle0/$OUTNUM$" em seguinda pressione o Submit (Salvar) e apply (Aplicar).

    Agora que já criou o tronco de saida das suas chamadas, precisamos configurar duas coisas para que funcione de fato, sua rota de saida e entrada, para receber e efetuar ligações.

    No caminho: Connectivity ➔ Outbound Routes

    Será configurada a rota de saída.

    Opção: + Add Outbound Route

    Na guia "Route Settings" defina o nome da sua rota de saída neste laboratório será "Saida Dongle" na mesma tela, penultima opção é a "Trunk Sequence for Matched Routes" aqui você define por qual tronco, essa rota que está criando vai sair com chamadas, neste caso vamos definir o tronco que foi criado dongle0, na mesma tela mas na guia "Dial Patterns" deve ser configurado as suas regras de discagens, vou descreva-las e também deixa a imagem abaixo pra ficar facil o entendimento. Vamos definir uma regra apenas para chamadas locais e DDD para movel(Celular) que seria "9XXXXXXXX" observe que estamos tratando apenas ligações que comecem com "Nove" mais oito digitos que somando tormam "nove digitos" exatamente uma discagem para celular local e para DDD adicionamos mais dois digitos, que deve ficar assim, "ZZ9XXXXXXXX", vale lembra que no caso de chamadas longa distância nacional, é necessario adicionar o codigo da operadora, no meu caso estou usando um chip da operadora vivo, logo a discagem pra longa distancia deve ser "015 + DDD + NumeroDestino."


    No caso estamos usando o "ZERO" para efetuar uma chamada, com as regras de dialplan acima podem ser feitas chamadas tanto local quanto DDD, ligações para outro estado o usuario local não precisa colocar o código da operadora somente "0 + DDD + NumeroDestino". Após definir essas configurações salve e aplique, assim você deve conseguir efetuar chamadas de saida pelo seu modem.

    No caminho: Connectivity ➔ Inbound Routes
    Será configurada a rota de entrada, que pode direcionar para uma URA, Fila etc.

    Opção: + Add Inbound Route

    No campo "Description" defina uma descrição para sua rota de entrada, no campo "DID Number" adicione o numero do chip adicionado ao dongle que foi definido no campo exten=5511988775544 dentro do arquivo dongle.conf, coloque somente o numero "5511988775544", na mesma tela a ultima opção "Set Destination" você vai definir o destino que vai receber a chamada quando a ligação externa chegar pelo seu chip/dongle, em seguida salve e aplique as configurações, agora se seguiu atentamente os passos anteriores, já deve conseguir, receber e efetuar ligações usando o seu dongle.

    Qualquer dúvida sobre modelos de modens compatíveis veja o link sobre requisitos e limitações.

    Espero que essa documentação tenha lhe auxiliado, não deixe de nos enviar o seu feedback, até a proxima!

         

    FreePBX 15 crie seu phonebook para seus aparelhos IP

    Olá sejam muito bem-vindos a nosso primeiro post de 2020, antes de qualquer coisa não deixe de contribuir, nos envie seus materiais, assim faremos deste site um grande repositório de informações sobre FreePBX e tecnologias associadas para todos.

    Este material auxiliará na criação de um phonebook(Lista de contatos) no seu FreePBX 15, desta forma seus aparelhos ip conseguem provisionar uma lista de contatos. Vamos lá?!

    Laboratório:

    • Linux CentOS 7;
    • FreePBX 15.0.16.20;
    • TFTP;
    • Aparelho IP Yealink T21P E2 - Firmware: 52.80.0.3

    Antes de iniciarmos, vale informar que neste laboratório foi feito o start do provisionamento manual na parte aparelho, assim o mesmo busca no repositorio do servidor seu arquivo de phonebook, mas para funcionar de forma automática, existe a necessidade de configurar o recurso option66 no DHCP server, basicamente a função deste é fazer com que todo novo dispositivo que subir na rede ele vai até o seu TFTP checar se existe algum tipo de configuração para aquele modelo. Essas configurações não se limita apenas a aparelhos da linha yealink, qualquer aparelho que tenha suporte a provisionamento pode-se fazer o uso deste método.

    Primeiramente vamos preparar o terreno no lado do FreePBX com nosso arquivo de contatos para provisionamento e o principal, o arquivo de provisionamento do aparelho, este é o master, nele você define tudo que vai ser configurado no aparelho, aqui nao vamos abordar ele a fundo, somente a linha de provisionamento dos contatos, mostro abaixo e o arquivo usado no laboratório está disponivel($exemplo_mac.cfg) ,observe que o arquivo é estruturado pelo endereço mac do aparelho "$mac.cfg".

     
        #to specify a XML phonebook for update
        #lan example for a right server_address:http://192.168.0.132:9/file_provision/contactData1.xml
        local_contact.data.url = tftp://192.168.1.88/phonebook/phonebook.xml
    

    Abaixo o modelo de phonebook usando XML conforme o padrão aceito pelo aparelho.

       
    
    
            
            
    
    
    
    
    
    
    
    

    Obs. Na dúvida defina as permissões no arquivo para usuario e grupo asterisk.

    Agora nas configurações do yealink vamos setar o ip do servidor de TFTP.

    Seguindo os passos da imagem acima, primeiro clique em "Settings > Auto Provision" no campo "Server URL" precisa adicionar o seu servidor que esta hospedado a sua lista de contatos, por fim clique em "Autoprovision Now", assim ele vai buscar de imediato no servidor o arquivo de provisionamento, faça isso.

    Agora vamos conferir se a nossa lista de contatos foi provisionada, na imagem acima estamos checando pela GUI do aparelho, os contatos foram carregados com sucesso, agora quando algum ramal da sua lista ligar para o aparelho vai apresentar o nome do mesmo.

    Espero que essa documentação possa lhe auxiliar, encerramos por aqui, até a proxima!

         

    Aprenda a criar Backups no seu FreePBX

    Olá sejam muito bem-vindos a mais uma documentação para ajudar a comunidade, antes de qualquer coisa não deixe de contribuir, nos acione e envie material para que possamos fazer deste site um grande repositório de informações para todos.

    Este material te auxilia a fazer o passo a passo para criação do backup no seu FreePBX, vamos lá!

    Faça o login na interface web do FreePBX visitando o endereço IP do seu PBX.

    Navegue em Admin -> Backup e Restauração


    Clique em Backups e depois em New Backup


    Escolha um "nome" e uma "descrição" para o backup e insira um "endereço de e-mail" que será notificado quando o backup for executado. Para fazer backup de tudo em seu servidor, incluindo correios de voz, gravações, arquivos de configuração, etc., você deverá clicar e arrastar os seguintes Modelos para a seção Itens de backup:

    1. Backup Completo
    2. CDRs
    3. Sistema de áudio
    4. Correio de voz

    Observe que isso NÃO incluirá gravações de chamadas, o que pode tornar seu backup muito grande. No entanto, se você precisar deles incluídos no seu backup, você pode clicar no "+" (mais) na parte inferior da lista "Itens" e adicionar um diretório com o caminho "__ASTSPOOLDIR __/monitor" (sem as aspas).

    Em Storage Locations, arraste “Local Storage (local)” para a coluna Storage Servers (Opcional) Se você deseja executar o backup automaticamente em uma base regular, escolha a frequência que deseja que o servidor faça backup. Se você estiver configurando backups automáticos, é altamente recomendável definir um tempo ou quantidade "Excluir após", caso contrário, os backups antigos nunca serão removidos e você poderá ficar sem espaço em disco.


    Acima em -Hooks são scripts que podem ser definidos para interagir antes e depois do backup.

    Clique em Salvar.


    Para executar o backup agora, vá até o fundo novamente e clique em "e executar"

    Após isso você já pode contar com uma rotina de backup automatica, configurando da forma que melhor lhe atender! É possível conferir a listas de backups, os mesmos ficam salvos no caminho: /var/spool/asterisk/backup no linux.

    Espero que essa documentação possa lhe auxiliar, encerramos por aqui, até a proxima!


         

    Tronco entre duas Centrais (FreePBX 14 x Issabel)



    Olá sejam muito bem-vindos a mais uma documentação para auxiliar a comunidade não só freepbx, mas também Issabel, este que usa o freepbx(2.11) não muda muita coisa, somente a interface web, mas o coração é do nosso guerreiro, bom vamos lá. Este trata a interligação de um Freepbx com um Issabel usando tronco IAX2, o mesmo server para uma comunicação entre sites, se necessário. Vamos por a mão na massa!

    Antes de seguir não deixe de compartilhar os conteúdos do nosso site e contribuir com o mesmo, assim conseguimos ainda mais ajudar a comunidade.


    Laboratório (Freepbx)

    • Virtualbox 6.0;
    • CentOS 7;
    • HD 10GB;
    • Memoria: 1024 MB;
    • Freepbx 14.

    Laboratório (Issabel)

    • PROXMOX 5.3;
    • CentOS 7;
    • HD 40GB;
    • Memoria: 1024 MB;
    • Issabel.

    Observações: O HD do Issabel está um pouco maior por ser um servidor de laboratorio que já existia, mas não se preocupe com esse detalhe, se for o caso pode criar ambos do mesmo tamanho.

    Configurações [FreePBX]

    Crie um tronco do tipo IAX2 com as seguintes informações:

    Trunk Name: Issabel
    Trunk Name (Outgoing): Issabel
    PEER Details:
    username=freepbx
    type=friend
    trunk=yes
    transfer=no
    secret=AsteriskHelp
    qualify=yes
    host=IP_DO_SERVIDOR_ISSABEL
    disallow=all
    context=from-internal
    allow=ulaw&alaw&gsm

    Se caso tiver alguma duvida, suas configurações devem estar como a imagem abaixo:



    Uma parte do trabalho foi feita que é criar o tronco, agora precisamos adicionar uma rota de saida para conseguir ligar para outra ponta, Issabel!

    Nas rotas de saída crie uma rota com as seguintes informações abaixo:



    Acima em Route Name coloque o nome da rota de saida, esta foi definida como "dial-issabel", em Trunk Sequence for Matched Routes, este você deve atribuir o tronco que foi criado, neste caso issabel.



    Agora na guia "Dial Patterns" adicione a regra de discagem para conseguir ligar nos ramais da central ISSABEL, este que estão na range 3000 ao 3999, sendo assim será usado a mascara 3XXX.

    Configurações [Issabel]

    Crie um tronco do tipo IAX2 com as seguintes informações:

    Trunk Name: freepbx
    Trunk Name: freepbx
    PEER Details:
    username=issabel
    type=friend
    trunk=yes
    transfer=no
    secret=AsteriskHelp
    qualify=yes
    host=IP_DO_SERVIDOR_FREEPBX
    disallow=all
    context=from-internal
    allow=ulaw&alaw&gsm

    Se caso tiver alguma duvida, suas configurações devem estar como a imagem abaixo:


    Agora vamos configurar uma rota de saída para para que seu server Issabel possa discar para os ramais do servidor FreePBX.



    Assim como no tronco anterior, este foi adicionado a regra de discagem para conseguir ligar nos ramais da central FreePBX, este que estão na range 1000 ao 1999, sendo assim será usado a mascara 1XXX.

    Agora que os troncos e rotas foram criadas, vamos checar o status da interligação em ambos os lados.

    [root@asteriskhelp ~]# asterisk -vvvvvvvvcgi
    asteriskhelp*CLI> iax2 show peers
    Name/Username    Host                    Mask                                      Port           Status      Description                     
    issabel/freepbx  192.168.1.95       (S)  255.255.255.255                           4569  (T)      OK (1 ms)             
    


    [root@issabel~]# asterisk -vvvvvvvvcgi
    issabel*CLI> iax2 show peers
    Name/Username    Host                    Mask                                      Port           Status      Description                     
    freepbx/issabel  192.168.1.38       (S)  255.255.255.255  4569 (T)                                OK (1 ms)             
    

    Testes de ligações

      -- Called IAX2/freepbx/1000
        -- Call accepted by 192.168.1.38 (format ulaw)
        -- Format for call is (ulaw)
        -- IAX2/freepbx-16860 is ringing
        -- IAX2/freepbx-16860 is ringing
    issabel*CLI> 
    

    Called IAX2/issabel/3000
        -- Call accepted by 192.168.1.95:4569 (format ulaw)
        -- Format for call is (ulaw)
        -- IAX2/issabel-18020 is ringing
        -- IAX2/issabel-18020 is ringing
    asteriskhelp*CLI> 
    

    Os testes foram efetuados com sucesso, desta forma a comunicação entre os servidores esta estabelecida e testada, espero que esta documentação possa lhe auxiliar, não deixe de comentar e contribuir com o site da comunidade.


         

    FreePBX - Transferencia de ligação customizada


    Olá , sejam bem-vindos a mais uma documentação voltada para o ambiente asterisk e FreePBX, esta trata a transferência cega (Blind transfer) ou seja, você transfere a chamada para o ramal destino sem saber se ele quer ou não atender, essa demanda especifica surgiu e achei interessante compartilhar com a comunidade. Este processo será necessário algumas customizações nos arquivos conf do asterisk, nada de outro mundo, fiquem tranquilos. A inicio será alterado o contexto padrão da variável “${TRANSFER_CONTEXT}” esta que é acionada todas vezes que é executado uma transferência e logo a seguir dentro do contexto customizado será tratado a variável de canal “${BLINDTRANSFER}” usada na transferência cega, desta forma quando transferir a chamada ele aguardará o time especificado e logo a seguir devolve a chamada para a extensão que originou a transferência.

    No terminal do linux vamos as alterações nos arquivos do asterisk, sempre sugiro que faça esse processo no seu ambiente de testes para não ter problemas com o sistema em produção.

    A descrição do laboratório são de dois ambientes que um usando Debian 8(Raspberry Pi) e o outro CentOS6.

    Laboratório 01:

    • Raspberry Pi;
    • Asterisk 11.21;
    • Debian 8.

    Laboratório 02:

    • Servidor IBM;
    • Asterisk 11.21;
    • CentOS 6.
    [root@asteriskhelp ~]# vim /etc/asterisk/globals_custom.conf
    
    TRANSFER_CONTEXT = custom-test_transfer
    

    Logo em seguida pressione a tecla [ESC], depois ":x!" para sair do arquivo salvando as alterações.
    Obs. Sem as ASPAS!

    A seguir será adicionado o contexto que vai tratar a transferência e devolve-la para o ramal que originou.

    [root@asteriskhelp ~]# vim /etc/asterisk/extensions_custom.conf
    
    [custom-test_transfer]
    exten => _X.,1,NoOp(Entering custom-test_transfer)
    exten => _X.,n,Set(timeoutd=25) ; Aqui adicione o tempo que deseja como timeout
    exten => _X.,n,Set(extLeng=${LEN(${EXTEN})})
    exten => _X.,n,NoOp(The extenlength is ${extLeng})
    exten => _X.,n,Dial(Local/${EXTEN}@from-internal,${timeoutd})
    exten => _X.,n,Set(CALLERID(name)=RB:${CALLERID(name)})
    exten => _X.,n,Dial(Local/${BLINDTRANSFER:4:${extLeng}}@from-internal)
    exten => _X.,n,Hangup()
    
    

    Logo em seguida pressione a tecla [ESC], depois ":x!" para sair do arquivo salvando as alterações.

    Agora será necessário executar um reload no asterisk para que ele reconheça o novo contexto criado, observe a seguir que serão rodados três comando, um para entrar no console do asterisk, outro para dar o reload nos contextos o ultimo para checar se o já existe e foi reconhecido pelo asterisk.

    [root@asteriskhelp ~]# rasterisk -vvvvvvvcgi
    
    asteriskhelp*CLI> dialplan reload
    asteriskhelp*CLI> dialplan show custom-test_transfer
    
    [ Context 'custom-test_transfer' created by 'pbx_config' ]
      '_X.' =>          1. NoOp(Entering custom-test_transfer)        [pbx_config]
                        2. Set(timeoutd=25)                           [pbx_config]
                        3. Set(extLeng=${LEN(${EXTEN})})              [pbx_config]
                        4. NoOp(The extenlength is ${extLeng})        [pbx_config]
                        5. Dial(Local/${EXTEN}@from-internal,${timeoutd}) [pbx_config]
                        6. Set(CALLERID(name)=RB:${CALLERID(name)})   [pbx_config]
                        7. Dial(Local/${BLINDTRANSFER:4:${extLeng}}@from-internal) [pbx_config]
                        8. Hangup()                                   [pbx_config]
    
    -= 1 extension (8 priorities) in 1 context. =-
    

    Agora que já alimentou os arquivos e o asterisk reconheceu o contexto, como mostra o resultado acima, já pode iniciar os testes. Lembrando que essa documentação foi homologada em ramais SIP que utilizam o modulo "chan_sip".

    Espero que tenha auxiliado e até a próxima, abraços.