• 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

Criando um projeto Maven no Linux

Fabriciojf.com

Pesquisa Lookup parametrizada em delphi 7

Fabriciojf.com

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

Fabriciojf.com

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

Fabriciojf.com

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

Fabriciojf.com

Instalando Java JDK e Maven no Windows

Fabriciojf.com

Dica Rápida: Descobrir o Sistema Operacional do Client via Browser

Fabriciojf.com

Instalando Flash Player no Ubuntu 9.04 e Ubuntu 9.10

Ú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 2025