Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Prefiere el consumo de lo Hecho en México
BúsquedaHagamos que México crezca..
![]() Prefiere el consumo de lo Hecho en México Posts Recientes
Conversación |
Script AGI para conectar con sistema de tarificacion AsterBillingAsterbilling es un software que permite integrar un tarificador a Asterisk basado en prefijos, longitud del número de marcado, entre otras cosas, muy apto para ser usado en casetas telefónicas, aparte que tiene un sistema de monitoreo para cuándo se marque un número muestre el tiempo marcado, el número, etc y de ahi mismo imprimir un ticket.
Como plugin adicional para Asterbilling hice un script en php que lo que hace es consultar desde un teléfono el costo de las llamadas desde un cabina en específica, de tal forma que usando festival te regresa de forma hablada la fecha marcada, el tiempo de la llamada, el número marcado y el costo total de la llamada en base a la tarifa aplicada. Este script también permitiría imprimir un ticket en una impresora de tickets conectada al puerto serial, solo bastaría crear un archivo con la información y mandarlo al puerto lpt.
#!/usr/bin/php -q <?php //llamamos a las librerias de phpagi require("phpagi/phpagi.php"); //activamos la bandera de enviar todo lo que se realice a consola como modo depuracion error_reporting(E_ALL); //creamos una instancia de la clase AGI $agi = new AGI(); //generamos el comando Answer de Asterisk, este comando siempre lo ejecutamos al inicio de un AGI $agi->answer(); //Este demo consultaria informacion en una base de datos y regresaria la informacion de forma hablada por lo que generamos una conexion a la base de datos de sql $conexion = mysql_connect("localhost","astercc","astercc") or die("Error: El servidor no puede conectar con la base de datos"); //Referenciamos el cursor a la base de datos mysql_select_db("astercc",$conexion); //obtenemos el caller id de quien realiza la llamada $_cid = $agi->parse_callerid(); //enviamos un mensaje de voz por medio de festival que esta configurado en idioma espanol $saludo_hora = (date("H")<12)?"Buenos Dias!"<img src="plugins/Emoticons/images/face-sad.png" border="0" alt="face-sad.png " width="16" height="16" />(date("H")<19)?"Buenas tardes!":"Buenas Noches!"); $agi->text2wav("Hola $saludo_hora"); do{ $agi->text2wav('¿Que cabina desea tarificar? 0 para salir'); //enviamos un beep y esperamos 20 segundos en la espera de una respuesta $_result = $agi->get_data('beep', 5000, 20); //obtenemos la informacion introducida desde el telefono $cabina = $_result['result']; if($cabina!="" and $cabina!="0"){ $query = "select c.id, c.calldate, c.src, c.dst, c.didnumber, c.duration, c.billsec, c.disposition, c.calltype, c.userfield, m.dialprefix, m.numlen, m.destination, m.connectcharge, m.initblock, m.rateinitial, m.billingblock from mycdr c, myrate m where c.src='$cabina' and c.disposition like '%ANSWERED%' and c.userfield='UNBILLED' and (c.dst like concat(m.dialprefix,'%') or length(c.dst)=m.numlen) and (c.groupid=m.groupid or m.groupid=0) and (c.resellerid=m.resellerid or m.resellerid=0) order by "; //select c.id, c.calldate, c.src, c.dst, c.didnumber, c.duration, c.billsec, c.disposition, c.calltype, c.userfield,m.dialprefix, m.numlen, m.destination, m.connectcharge, m.initblock, m.rateinitial, m.billingblock from mycdr c, myrate m where c.src='102' and c.disposition like '%ANSWERED%' and c.userfield=UNBILLED and (c.dst like concat(m.dialprefix,'%') or length(c.dst)=m.numlen) and (c.groupid=m.groupid or m.groupid=0) and (c.resellerid=m.resellerid or m.resellerid=0) $agi->verbose($query); $_result = mysql_query($query); //verificamos si existe un resultado $total = 0; $subtotal = 0; $ticket = ""; $count = 1; while($_re = mysql_fetch_array($_result)) { $subtotal = $_re[13]; if($_re[6]>$_re[14]){ $charge_additional = (ceil( ($_re[7]-$_re[14])/$_re[16]) )*$_re[15]; $subtotal += $charge_additional; } $total += $subtotal; $ticket .= " llamada $count. Fecha: $_re[1]. Tiempo de la llamada: $_re[6] segundos. Numero Marcado: $_re[4]. Tarifa aplicada: $_re[destination]. Costo: $subtotal pesos.."; } if($total>0){ $agi->text2wav("Total a pagar $total pesos. Desglose : ".$ticket." Total a pagar: $total pesos"); $agi->text2wav("Desea imprimir el ticket?Presione 1 para Aceptar. Otro para salir"); $_result = $agi->get_data('beep', 5000, 20); $print = $_result['result']; if($print ==1){ $ticket = str_replace(".",".\n", $ticket)."\n\nTotal a pagar: ".$total." pesos"; //imprimir ticket //guarda archivo //manda archivo a LPT //elimina archivo impreso //guardar registro } }else{ $agi->text2wav("No hay llamadas para tarificar en la cabina $cabina!"); } } }while($cabina != '0'); $agi->text2wav("Hasta luego. $saludo_hora"); //al finalizar el script del AGI siempre es recomendable ejecutar esta funcion para no dejar el canal abierto. $agi->hangup(); ?> //***** #2 Re:Script AGI para conectar con sistema de tarificacion AsterBillingUsa el comando SendText de Asterisk, solo que tu teléfono debe ser capaz de soportas SIP Messages, ya que no todos los teléfonos son compatibles y te envía un error 404 de Método no compatible. [ Responder (0) ]
Dejar un comentario
Fuentes XML de comentario: RSS | Atom
|
Nube de EtiquetasEventosEncuestaComentarios Recientes
|
#1 Re:Script AGI para conectar con sistema de tarificacion AsterBilling
COmo prodria hacer un control no usando mensajes de Voz con Festival sino durante la llamada enviarle mensajes de texto con SendText al telefono