• Fabriciojf.com
  • fabriciojf@gmail.com

Fabricio S Costa Tecnologia, dicas e uma pá de coisas legais!

  • Blog
  • Bemmelhor SI
  • Serviços
    • Consultoria Asterisk

Criando AGI no Asterisk com PHP-AGI

    Tue, Sep 20 2016
      

Em diversos momentos em que estamos configurando um servidor Asterisk, necessitamos validar dados rapidamente para permitir ao usuário alguma funcionalidade importante.

O AGI é uma excelente opção que simplifica o dialplan (arquivo extensions.conf), e facilita muito o entendimento e manutenção das regras de discagem.

Neste tutorial vamos criar um AGI simples para bloquear ramais no Asterisk, não permitindo que realizem discagens.

Será um exemplo utilizando o framework php-agi que pode ser baixado em phpagi.sourceforge.net ou através do sourceforge.

Criando o script AGI 

  • Baixe o PHPAgi e descompacte-o dentro da pasta /var/lib/asterisk/agi-bin
  • Crie o arquivo bloqueio.php dentro da pasta /var/lib/asterisk/agi-bin 
$ touch /var/lib/asterisk/agi-bin/bloqueio.php
  • Agora insira o seguinte conteúdo:
#!/usr/bin/php
<?php

require_once('phpagi/phpagi.php');

$agi=new AGI();
$ramal=$argv[1];

/**
* Aqui vamos colocar o array contendo os ramais que DEVEM SER
* BLOQUEADOS
*/
$invalidos = array(
'2121',
'6000',
'3030',
);

/**
* "PERMITIR" pode ser acessada no extensions.conf através da variável
* ${PERMITIR} e ela conterá o valor yes ou no
*/
$permitir = in_array($ramal, $invalidos) ? 'no' : 'yes';
$agi->set_variable("PERMITIR", $permitir);

exit();

?>

No exemplo acima estamos definindo um array de ramais inválidos, insira na lista os ramais que deverão ser bloqueados no momento da discagem, não se esqueça das aspas simples e da vírgula como no modelo 'RAMAL', .

Logo após a alimentação do array estamos realizando uma validação para saber se o ramal está ou não presente nele, a resposta da validação é inserida na variável ${PERMITIR} que pode ser acessada dentro do extensions.conf.

Acessando o AGI no extensions.conf e tratando o retorno

Abra o arquivo /etc/asterisk/extensions.conf e insira a chamada de bloqueio no contexto e regra que deseja tratar. No exemplo abaixo os ramais contidos no array do bloqueio.php não podem realizar nenhum tipo de discagem dentro do contexto [from-internal].

[from-internal]

exten => _X.,1,Answer()
exten => _X.,n,AGI(bloqueio.php,${CALLERID(num)})
exten => _X.,n,Gosubif($["${PERMITIR}"="yes"]?permite:bloqueia)
exten => _X.,n(bloqueia),NoOp(Ramal bloqueado)
exten => _X.,n,Hangup()
exten => _X.,n(permite),NoOp(Ramal liberado)
exten => _X.,n,Dial(khomp/b0/${EXTEN})
exten => _X.,n,Hangup()

Ajuste o AGI para o seu ambiente e crie novos modelos para as suas particularidades.

 


Leave a comment
  • Primeiro
  • «
  • 2
  • 3
  • 4 (current)
  • 5
  • 6
  • »
  • Último
Fabriciojf.com

Acrescentando funcionalidades ao pom.xml

Fabriciojf.com

6 Frameworks para deixar seu site Responsivo

Fabriciojf.com

Criando AGI no Asterisk com PHP-AGI

Fabriciojf.com

Dica Rápida: Como criar usuários no ProFtp

Fabriciojf.com

Download: Tradução do Trellis para português

Fabriciojf.com

Criando um servidor para controle de versões com Subversion

Fabriciojf.com

Programa Hospitalar didático para estudantes Delphi

Fabriciojf.com

Criando um projeto Maven no Linux

Últimos Artigos


Fabriciojf.com

6 Frameworks para deixar seu site Responsivo

Fabriciojf.com

Analise o design responsivo do seu site

Fabriciojf.com

Dica Rápida: Revertendo modificações no GIT

Fabriciojf.com

Dica Rápida: Conectando um banco de dados MySQL ou Postgres com PHP

Fabriciojf.com

Criando AGI no Asterisk com PHP-AGI

Fabriciojf.com

Dica Rápida: Ajustando MTU no Debian e Windows

Fabriciojf.com

Configurando Apache, Trac e Subversion

Fabriciojf.com

Problem creating jar: [...]/target/classes (Is a directory)

Fabriciojf.com

Dica Rápida: Problema com CHKJ3000E no Eclipse

Fabriciojf.com

Acrescentando funcionalidades ao pom.xml

   Social



   Recursos

  •    Conversor Hash PHP
  •    Mapa do Site (xml)


   Bemmelhor CMS

Este site foi desenvolvido com a Plataforma Bemmelhor CMS, um sistema gestor de conteúdo potente e fácil de usar, ideal para empresas que desejam apresentar seu valor na internet. Clique aqui e conheça mais detalhes sobre essa ferramenta espetacular.

© Fabriciojf.com - Site pessoal de Fabricio S. Costa - Copyright 2026