Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Visitantes








Conversación

  • Samantha Santin: ola me pueden ayudar con lo basico para un examen de linux , estoy en 10 mo de basica , por favor , gracias  
  • alexandra: hola...tengo problemas para configurar las llamadas y crear los troncales....uso elastix 2.0.3 con asterisk 1.6...y soy nueva en esto..puedo relizar llamadas dentro de una misma oficina, pero no puedo sacarlas fuera, es decir locales e internacionales...necesito asesoria...gracias  
  • Ben: Welcome to visit www.vogue4biz.com and www.seekjersey.com! Wholesale Jordan Shoes and NFL/NHL jerseys!New Arrival ! Free Shipping !
    Consequently, a Avirex jacket variety evolved into winner fashion4biz already in the market, mainly with their variety of air travel puma shoes women jackets which in turn for the most part mimics those of journey outdoor jackets put on around WWII. Due to its results, Avirex make have in addition enhanced by jackets to other common attire outlines including t shirts, hoodies, along with jeans.
    A great number of completely new attire lines also gained plenty of celebrity inside entertainment world. To its captivating pattern in addition to level of quality attire, Avirex includes received its own head connected with celebrity followers which include: Ruben Travolta, Will certainly Henderson, Puffy Hair combs, Chad Good ole', Shaquille O'Neal, Busta Rhymes,, puma shoes ladies Sylvester Stallone, Missy Elliott, Eminem, Nas, All 5, Procedure Guy,, Make Nubian, Lmost all Awesome L, David Cena, as well as Georgio Armani. Start off your individual from suppliers avirex company by www.vogue4biz.com
    Avirex regarding todayIn women s puma shoes 2008, this Avirex make has been bought in 3 entire ladies puma shoes suede puma shoes world districts, United states of america, European countries puma shoe sale along with The japanese. A brand new owner of Avirex brand in the us cat puma shoes can be Draw Ecko Corporation. According to a lot of people, each one districts possess their own libraries regarding Avirex garments range. Not really a pair of parts get identical types associated with outfits. His or her just likeness is with their particular usage of brand.
    Even puma ladies shoes so, the availability associated with flight handling outdoor jackets were quit afterwards that year. In line with Mark, all of Avirex printed government and timeless apparel had been discontinued along with used a new Clymans firm, Cockpit U . s .. Start out your own from suppliers avirex company by Sevenwholesale.com.  
  • Fernando Hernández: Hey! Ya no estan disponibles los posts sobre facturación electrónica en México, podrías pasarme el tutorial o la clase en php? Por favoooor. Gracias  
  • daniel nuñez: buenas soy de venezuela y tengo una duda yo lo que quiero es hacer una iso debian que tenga todos los paquetes necesarios completos y programas como synaptis fortran java los pluging de video y sonido ya instalados osea que tenga todo lo necesario instalado pero sin que sea una instalacion con un cd netinst, es posible ?  
  • Cesar villegas: Buenas!!! oye no tienes programado algún curso?  
  • Urbano: Hola soy de Argentina.
    Desde hace un tiempo tengo instaldo Asterbilling SL y me parece un rpoyecto útil e interesante. Ahora me compré un AT 530 con la intension de pasar la tarifa al telefono pero seguramente algo estoy haciendo mal ya que despues de configurar el script con los datos del AMI; MySQL y ejecutar el comando que indica el manual.. no pasa nada, todo sigue igual y no se muestra la tarifa en la pantalla del telefono. Tal vez deba configurar algo tambien en el telefono.. la verdad no se, es que tampoco soy un experto en la materia. Les dejo algunos datos que talvez sean utilespara que me puedan ayudar: Tengo Elastíx 2.0.3 con Asterisk 1.6; FreePBX 2.7.0.3; A2Billing 1.8.1; Astercc 1.4 y Asterbilling SL. Espero que me puedan ayudar; desde ya muchas gracias.  
  • kike: Oye filein.. necesito una cotización de unas FxO para analógicas porfa..
    saludos  
  • cristy: hola por favor tengo problemas para conectar agi con asterisk me sale un error de broken pipe, sabes de que se trata???  
  • Jose: Heyu como podria funcionar con el CM15?
    Gracias  

Escribe el código Captcha que estás viendo

Como colgar una llamada con un script en PHP y Asterisk Manage Interface

Probando el uso de AMI (Asterisk Manager Interface) para controlar de forma externa acciones, eventos y comandos de Asterisk desde algún script, me he metido a estudiar esta tecnología interesante que potencializa el uso de Asterisk y permite crear diversas aplicaciones externas e integrarlas a aplicaciones terceras, tales como CRM, ERPs, Encuestas, etc.
Como demo he intentado hacer un script en php que buscará información de una extensión dada, si está estuviera llamando, entonces que buscara información del canal, para luego mandar a colgar esa extensión.
El código que hice para poder hacer este ejemplo es el siguiente:
/*
Script creado por Filein Rommel Leon(aka Phylevn)
Licencia GPL
Script de demostración del uso de AMI con PHP, este script cuelga una extensión si estuviera en uso, ocupada ó no disponible, como demo agrego la opción de que si una extensión está en una llamada(uso) para que se pueda hacer la prueba
0=> Disponible
1=>Use: Si una extension esta llamando
2=>Busy: Si una extensión esta ocupada
4=>Unavailable: Si una extensión está ocupada
En este caso comparo si las extensiones tienen el status 1,2 ó 4, entonces obtengo el canal correspondiente a la extensión y luego la cuelgo.
Para probar este script hacer una llamada de la extensión a colgar a otra extensión y correr el script paraver su funcionamiento.
*/

                $amiHost = "localhost"; //servidor de AMI
                $amiUser = "asterisk"; //login AMI
                $amiSecret = "4st3r1sk";//password AMI
                $amiExten = "102";
                $amiChannel = "SIP/$amiExten"; //extension a buscar para colgar
                $amiContext = "from-internal";//contexto
                $getTextSearched = 0;
               
                $amiStatusExt = 0;
               
                //Estados de una extension
                $_extStatus = array(-1=>"Extension not found",0=>"Idle",1=>"Use",2=>"Busy",4=>"Unavailable",8=>"Ringing",16=>"On Hold");
               
                if ($amiChannel == null) :
                        exit() ;
                endif ;
               
                if ($pos===false) :
                        $errno=0 ;
                        $errstr=0 ;
                        $oSocket = fsockopen ($amiHost, 5038, $errno, $errstr, 20);
                        if (!$oSocket) {
                                echo "$errstr ($errno)<br>\n";
                        } else {
                                if(!strpos($amiChannel, "/") )
                                        $amiChannel =  "SIP/".$amiChannel;
                               
                                //Nos validamos dentro de AMI
                                fputs($oSocket, "Action: login\r\n");
                                fputs($oSocket, "Events: off\r\n");
                                fputs($oSocket, "Username: $amiUser\r\n");
                                fputs($oSocket, "Secret: $amiSecret\r\n\r\n");
                               
                                //Obtenemos el status de la extension deseada
                                fputs($oSocket, "Action: ExtensionState\r\n");
                                fputs($oSocket, "exten: $exten\r\n");
                                fputs($oSocket, "context: default\r\n");
                                fputs($oSocket, "actionid: 1\r\n\r\n");
                                $echo = "ok";
                                while ($echo!="") {
                                        if(strstr($echo, "Status:")!=""){
                                                $amiStatusExt  = ereg_replace( "[^0-9]", "", $echo);
                                                echo "Exten : ".$_extStatus[$amiStatusExt ]."\n";
                                                $echo = "";
                                        }else{
                                                //echo ":::".$echo;
                                                $echo = fgets($oSocket);
                                        }
                                }
                               
                                //Obtiene la información de canales y buscamos informacion sobre nuestro canal
                                if($amiStatusExt==2 or $amiStatusExt ==4 or $amiStatusExt ==1){
                                        fputs($oSocket, "Action: command\r\n");
                                        fputs($oSocket, "command: show channels\r\n\r\n");
                                        echo $echo = "getting SIP Channels\n";
                                        while ($echo!="" or $echo == "--END COMMAND--") {
                                                if(strstr($echo, $amiChannel)!=""){
                                                        $_values = split("[\s]+|[\t]", $echo);
                                                        $_values[0] = ereg_replace("[^(SIP/)0-9a-zA-Z-]", "", $_values[0]);
                                                        echo $_values[0]."\n";
                                                        $echo = "";
                                                }else{
                                                        //echo ":::".$echo;
                                                        $echo = fgets($oSocket);
                                                }
                                        }
                                }
                               
                                //Si se encontró nuestro canal entonces lo colgamos
                                if($_values[0]!=""){
                                        fputs($oSocket, "Action: Hangup\r\n");
                                        fputs($oSocket, "channel: $_values[0]\r\n\r\n");
                                        echo "hanging channel:  $_values[0]\r\n";
                                }
                               
                                //Salismo de AMI
                                fputs($oSocket, "Action: Logoff\r\n\r\n");
                                sleep(2);
                               
                                //Cerramos la conexion
                                fclose($oSocket);
                        }
                else :
                        exit() ;
                endif ;
?>
 
solo basta correr el script de alguna forma como esta:
php hangup.php
 
Antes solo hay que checar la configuración de AMI en /etc/asterisk/manager.conf ó /etc/asterisk/manager_custom.conf si están usando freepbx.
Entender el protocolo de AMI no es tan complicado, pero lo interesante es la potencia que le brinda a Asterisk para desarrollos más avanzados, este código está hecho a pelo precisamente para entender como se interactua con AMI, aunque ya hay librerías que disminuyen la chamba tal como asterisk-perl ó por ahí el nuevo killer app de Ruby creo que se llama AdHearsion o algo asi que luce muy interesante para hacer este tipo de cosas..
Para conocer un poco más sobre la tecnología de Asterisk Manager Interface entrar a la siguiente URL:
http://www.voipinfo.org/wiki/view/Asterisk+manager+API

#1 Re: Como colgar una llamada con un script en PHP y Asterisk Manage Interface

Atcherley, <E-Mail> / 2 March, 3:44pm  
avatar

Hola, gracias por la informacion publicada, queria consultarte si con AMI se puede escribir un .conf desde php.... necesito guardar una informacion en users.conf y extensions.conf desde un php y lo hago con los comandos de edicion de archivos de php, pero tengo que carbiarle a mano los permisos de escritura de los archivos....habra alguna forma de ahcerlo sin necesidad de cambiar los permisos, por AMI u otra cosa ?.... gracias y disculpas, saludos

[ Responder (0) ]

#2 Re: Como colgar una llamada con un script en PHP y Asterisk Manage Interface

Phylevn, <E-Mail> / 3 March, 1:21am  
avatar

Si vas a correr el script php desde consola el usuario que ejecuta el script debe tener permisos para modificar los archivos.conf, si vas a modificar los .conf desde una página web, entonces tienes que asignarle permisos de escritura al usuario ó grupo de apache, para que te permita modificar los archivos desde una página web..
Siempre que requieras modificar un archivo en linux, quién haga la modificación debe tener los permisos.. hay permisos de usuario, de grupo y anónimos.. pon a tu usuario de apache ó el que ejcuta el script, en el grupo de usuarios que tienen permiso de modificar los archivos ,conf de asterisk.

[ Responder (1) ]

#2.1 Re: Re: Como colgar una llamada con un script en PHP y Asterisk Manage Interface

Atcherley, <E-Mail> / 3 March, 10:21am  
avatar

Gracias por la respuesta, voy a implementarlo......saludos

[ Responder (0) ]

Dejar un comentario

Escribe el código Captcha que estás viendo

Fuentes XML de comentario: RSS | Atom

Emblemas

Energizado por Jaws Project
Soporta RSS2
Energizado por Software Libre
Energizado por Mozila Firefox
Energizado por Ubuntu Linux
Energizado por PHP
Energizado por Apache Web Server
Energizado por MySQL
Energizado por SQLite
atom

¿ Where The Hell Am I ?

Mi Flickr







Aquí Mis Mejores Fotos

Eventos

Encuesta

¿Que medio de comunicación usas más ?

Comentarios Recientes