Sistema de llamadas desatendidas para Elastix – AudioElastixdialer 0.1

En algun momento, existe la necesidad de realizar llamadas a los clientes , para reproducir le un grabacion o mensaje determinado (mas conocido como IVR) , por ejemplo para los siguientes casos :

– Sistemas de cobro
– Aviso de promociones
– Recordatorios de pago

Lo interesante es poder hacer estas llamadas de manera automatica y que podamos subirlas desde un archivo, ejemplo un  csv y tenerlo registrado en una base de datos.

Ese es el objetivo, ahora como lo hacemos ?

Bueno para eso nos vamos a apoyar en la funcionalidad “Asterisk call files” desde nuestro Elastix, como lo haremos

– Usaremos un par de paginas en php, que tendran el objetivo de cargar un csv (donde estaran los numeros a llamar)
– Luego se leera el archivo csv , para introducirlo en la base de datos.
– Finalmente leera la base de datos y generara los archivos .call en la carpeta /var/spool/asterisk/outgoing.

A.- COMPOSICION DE LOS ARCHIVOS
Como a todos los ingenieros nos gusta poner nombres a nuestras creaciones, a este lo he llamado, AudioElastixDialer , el cual esta compuesto de los siguientes archivos.

– funciones_bd.php , Contiene funciones basicas , de conexion a la base de datos , operaciones a las tablas , generacion de nuevos codigos.

– index.php , formulario donde se establece el nombre de campaña , tipo de troncal a usar (por default voip) , contexto a usar , y el archivo de numeros a llamar.

– audioelastixdialer.php , realiza las siguientes funciones , sube el cvs a la carpeta del servidor , luego lee los numeros del csv y los inserta a la base de datos  y finalmente crear los archivos .call , basado en la informacion de la base de datos.

B.- INSTALACION
La instalacion esta basada en una plataforma ELASTIX 2.4 a 32 bits , sin embargo puede trabajar en cualquier plataforma basada en Asterisk.

1.-  Crear carpeta donde se alojara la aplicacion , descargarla y descomprirla
#mkdir /var/www/html/AudioElastixDialer
#cd /var/www/html/
#wget http://www.silcom.com.pe/soft/AudioElastixDialer.zip
#unzip AudioElastixDialer.zip

2.- Configuracion de directorios en el sistema
#
chmod a+wr /var/www/html/AudioElastixDialer
#chmod a+wrx /var/spool/asterisk/outgoing/

3.- Configurar el dialplan de Elastix

Ingresamos a modificar el archivo de extensiones personalizadas

#vi /etc/asterisk/extensions_custom.conf

Incluimos en el contexto central uno nuevo el cual llamaremos “call-file-test”  y lo unicaremos al final como se muestra a continuacion.

[from-internal-custom]
exten => 1234,1,Playback(demo-congrats)         ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => agentlogin
include => conferences
include => calendar-event
include => weather-wakeup
include => call-file-test

Luego vamos al final del mismo archivo e ingresamos nuestro contexto nuevo

[call-file-test]
exten => s,1,wait(15)
exten => s,2,Playback(demo-congrats)
exten => s,3,Hangup()

Guardamos los cambios en el archivo y finalmente recargamos los cambios a nivel del CLI de Asterisk

#asterisk -rvvvvvvvv
CLI> reload

4.- Modificar los datos de conexion a la base de datos

#vi /var/www/html/AudioElastixDialer/funciones_bd.php

if(!($conector=mysql_connect(“localhost”,”root”,”tucontrasena”)))

Nota Importante: Verificar también el nombre de la base de datos “AudioElastixDialerBD” en el mismo archivo.

5.- Crear la base de datos para el Audio Elastix Dialer

#mysql -p

mysql> create database AudioElastixDialerBD;

#mysql -u root -p AudioElastixDialerBD < /var/www/html/AudioElastixDialer/sql/AdioElastixDialerBD.sql


6.- Configuracion de la troncal de salida

Para configurar la troncal voip es necesario ingresar al archivo “audioelastixdialer.php” y configurar los parámetros a partir de la linea 77 aproximadamente, actualmente esta configurado para llamadas con prefijo de Perú

$tronc1=”SIP/0051″;
$tronc2=”@PROVEEDORVOIP”;

Ejemplo , para configurar la salida del dialer por el proveedor Nextor Proxy, asumiendo que la troncal tiene el mismo nombre, seria de esta forma:

$tronc1=”SIP/52″;
$tronc2=”@NEXTORPROXY”;

C.- USANDO AUDIOELASTIXDIALER

1.- Ingresar a la aplicación

Ingresar via : https://TUIP/AdioElastixDialer/  y veremos el siguiente formulario

AudioElastixDialer

Ingresaremos basicamente :

Nombre de Campaña : Prueba1
Archivo de llamadas : selecionaremos el archivo csv a subir (incluyo un ejemplo en el zip)

2.- Iniciar Campaña

Para iniciar la campaña es necesario hacer click sobre el boton “Crear Campaña” , si todo salio bien , generara los archivos .call y comezara a llamadar a los numeros indicados, luego reproducira el audio definido en el contexto “call-file-test” agregado asteriormente.

Si todo esta bien configurado nos mostrara esta pantalla :

AudioElastixDialer-OKEl programa generara los archivos .call de la siguiente forma

AudioElastixDialer-SPOOL

Luego empezara a generar las llamadas , esto es lo que tendria que verse a nivel de CLI

AudioElastixDialer-CLI

3.- Conclusiones y modificaciones

– El programa esta hecho en PHP con MYSQL
– Es totalmente Open Source mientras me respeten los creditos
– Resalto que no es un marcador predictivo , ya que se generan tantas llamadas como la troncal usada lo permita.
– Es posible modificarlo para que funcione con troncales Dahdi
– Es posible modificarlo para que funcione con colas
– El futuro , integrarlo al Elastix Addons

La interfase es fea , lo se.. sorry no soy diseñador 😀

Espero les sirva !!

Anuncios
Esta entrada fue publicada en Asterisk, Centos, Linux, Manuales y tutoriales por jroliva. Guarda el enlace permanente.

Acerca de jroliva

Juan Oliva, es un consultor de seguridad informática y telefonía IP con 10 años de experiencia en el campo . Muy involucrado en proyectos de pruebas de penetración , análisis y explotación vulnerabilidades, pruebas de ingeniería social, seguridad física, revisión de código, entre otras tareas de seguridad informática. Así mismo, desarrolla proyectos de implementación y mantenimiento de VoIP, basadas en Asterisk y Elastix, proyectos de callcenter, soluciones en la nube y hosted PBX, Aseguramiento de plataformas Linux, Windows. Ha estado trabajando para una variedad de empresas en donde ha desarrollado proyectos para el estado peruano, así como para entidades privadas, nacionales y del extranjero, cuenta con certificaciones vigentes en Ethical hacking, Linux y telefonía IP. Es instructor de cursos de Ethical Hacking y certificaciónes como Linux Professional Institute y Elastix, donde ha tenido oportunidad de realizar capacitaciones en el Perú, así como en el extranjero. Es investigador de vulnerabilidades, y creador de contenidos, que son publicados en su blog personal jroliva.wordpress.com el cual mantiene desde hace mas de 6 años.

190 pensamientos en “Sistema de llamadas desatendidas para Elastix – AudioElastixdialer 0.1

  1. Hola George
    En el archivo “funciones_bd.php” tiene que estar la contraseña del usuario de Mysql que estas usando.

    if(!($conector=mysql_connect(“localhost”,”root”,”tucontrasena”)))

  2. Buen Articulo Juan!!! por lo visto volviste al blog con fuerza :)….como es de seguir…lo probare en producción para contarte como fue…Un abrazo…

  3. Tengo una duda, en la parte del contexto.
    [call-file-test]
    exten => s,1,wait(15)
    exten => s,2,Playback(demo-congrats)
    exten => s,3,Hangup()

    Solo pone la llamada expera 15 seg. y comienza la grabación cierto?
    Si es de esta forma, si el usuario no contesta de todos modos se va a reproducir la grabación mientras suena en la linea destino.

    Hay alguna forma de que la grabación comience cuando contesten la llamada?

    Saludos! y que buen aporte!

    • Hola Juan Carlos
      La linea “exten => s,1,wait(15)” es muy subjetiva , ya que depende de la rapides como “empalma la llamada” la troncal que estas usando, si se demora, como fue en mi caso, tienes que jugar con ese valor, que puede bajar tranquilamente a 4 o 5

      Saludos

    • cambia el wait por un answer
      y luego como segunda opcion das wait y le colocas 2

      ejemplo

      [call-file-test]
      exten => s,1,Answer
      exten => s,n,wait(2)
      exten => s,n,Playback(demo-congrats)
      exten => s,n,Hangup()

      asi el mensaje se reproduce cuando el cliente final contesta la llamada, espera 2 segundos y reproduce el mensaje..
      saludos

  4. ak querer realizar la linea de comando siguiente me da un error

    #mysql -u root -p AdioElastixDialerBD < sql/AdioElastixDialerBD.sql

    me dice que no existe sql/AdioElastixDialerBD.sql

    • Hola Leonel
      Es un tema de ruta , esta es la linea, tambien ya esta actualizado en el articulo

      mysql -u root -p AdioElastixDialerBD < AudioElastixDialer/sql/AdioElastixDialerBD.sql

      Saludos

      • Server version: 5.0.95 Source distribution

        Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.

        Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

        mysql> mysql -u root -p AdioElastixDialerBD ;
        ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘mysql -u root -p AdioElastixDialerBD < AudioElastixDialer/sql/AdioElastixDialerB' at line 1

  5. Hola Arturo

    Pues si , claro que se puede hacer eso , en el contexto call-file-test , antes de ir a la segunda prioridad habria que enviarlo a un AGI , para que consulte la BD extraiga el nombre , vuelva con el dato , lo reprodusca con un tex2speech y luego reprodusca el anuncio del demo-congrats , para este caso.

    Espero te sirva

    Saludos
    Juan Oliva

  6. Hola Juan, excelnte aporte…
    tengo una consulta, si quisiera que haga llamadas a internos q esten dentro de la misma Lan y cargados en el servidor, lo haria? porque me confunde el tema de :
    $tronc1=”SIP/0051″;
    $tronc2=”@SERVILINE”;
    En teoria eso hace llamadas salientes no?
    Muchas gracias!

    • Hola Martin yo hice una prueba y funciona

      He modificado las lineas de:
      :
      $tronc1=”SIP/0051″;
      $tronc2=”@SERVILINE”;

      por

      $tronc1=”SIP/${EXTEN}”;
      $tronc2=””;

      en el archivo *.csv puse por ej:

      6002, Fulano
      6003, Sultano
      6020, Mengano

      aclaro que no soy ningun experto y que hice todo en base de lo que
      detalló Juan Oliva

      Espero que sirva.

      • Funciono a la perfección! Muchas gracias!!
        Ahora tengo la siguiente inquietud.. reproduce el demo-congrats que trae el elastix… en caso de que quiera que reproduzca una grabacion por ejemplo en mp3, debo modificar:
        exten => s,2,Playback(demo-congrats)
        por:
        exten => s,2,Playback(“mi_grabacion.mp3) ???
        este mp3, debe estar en la carpeta del sistema o bien, ubicar demo-congrats en donde este y colocar mi archivo en dicho directorio?
        Desde ya muchas gracias Juan por tu aporte, y a vos Juanmelis por darme una mano.
        abrazo!!!!

      • Marin
        es como tu dices debes colocar esta linea y remplazarla por la actual
        exten => s,2,Playback(miaudio)

        lo otro el asterisk reproduce MP3 como gsm, por recomendacion del procesador te recomiendo uses GSM, en internet andas muchos software que transforman de mp3 a gsm

        el audio debes alojarlo en /var/lib/asterisk/sounds/miaudio.gsm

        en la carpeta sounds

        Saludos.

  7. Jorge, muchisimas gracias por responderme! Si lo quisiera hacer, como deberia quedar esa variable? tengo que sacar :
    $tronc1=”SIP/0051″;
    $tronc2=”@SERVILINE”;
    Pero realmente no se claramente que debo poner. Si me podrias dar una ayuda con eso te re agredeceria. De ante mano, muchisimas gracias por este aporte, ya que en mi caso hiciste despertar mi interes en el tema. Abrazo!

  8. hola juan muy bueno el articulo, justo lo que andaba buscando pero tengo un problema, segui todo al pie de la letra, tambien revise la linea if(!($conector=mysql_connect(“localhost”,”root”,”tucontrasena”))) pero siempre que presiono el boton ‘crear campaña’ me muestra el error ‘ Error en consulta a la base de datos’, que podria ser?

    las tablas y la BD fueron creadas correctamente cosa que comprobe desde phpmyadmin, salu2

  9. Excelente aporte! Pero me uno al pedido de martin, ¿como se hace para que solamente llame a internos cargados en el elastix dentro de la lan? me gustaria enviar grabaciones a internos que tengo ya configurados y en servicio. Muchas gracias Juan!!!

  10. Estimado te cuento que segui al pie de la letra tus indicaciones, todas correctas creee las campañas y todo exelente revise la base de datos me carga los archivos .csv, pero no me genera la llamada el asterisk.
    informo que lo monte en un asterisk 1.4.9 con centos 5.6 y mysql.

    sera ese el problema.
    ademas de esto el contexto [call-file-test] lo creee en el extensions.conf
    tambien me percate que el archivo que me debe generar en el outcolling el .CALL no me lo genera.

    que podra suceder.

    si me puedes contestar te lo agradeceria.

    • Cristian me indicas si pudistes sacar las llamadas al montar la campaña.

      Tengo un problema cuando trato sacar la llamada al montar la campaña.

      Connected to Asterisk 1.8.25.0 currently running on Test (pid = 2626)
      Verbosity is at least 3
      — Attempting call on SIP/05796046061@TELMEX for s@call-file-test:1 (Retry 1)
      == Using SIP VIDEO TOS bits 136
      == Using SIP VIDEO CoS mark 6
      == Using SIP RTP TOS bits 184
      == Using SIP RTP CoS mark 5
      — Attempting call on SIP/05796046061@TELMEX for s@call-file-test:1 (Retry 2)
      == Using SIP VIDEO TOS bits 136
      == Using SIP VIDEO CoS mark 6
      == Using SIP RTP TOS bits 184
      == Using SIP RTP CoS mark 5
      Test*CLI>

  11. Estimado jroliva

    te informo que cambie a elastix utilizando tu misma version 2.4,
    configure tu aplicacion en esta version y todo me andubo bien, pero siempre existen los problemas. xD

    probe la configuracion para llamar a anexos dentro de la misma central y este me funciona de maravilla todo bien sin problemas, de hecho cambie la opcion wait por answer y me reproduce el audio cuando me contestan los anexos.

    [call-file-test]
    exten => s,1,Answer
    exten => s,2,Playback(demo-congrats)
    exten => s,3,Hangup()

    pero el problema radica cuando quier llamar hacia la PSTN

    cambio a el archivo audioelastixdialer.php por el prefijo y la troncal que utilizo y este no me genera las llamadas.

    pero si me simula la ejecucion

    datos de asterisk

    Usuario y troncal SIP

    modificacion del archivo audioelastixdialer.php

    if ($troncal==”2″)
    {
    $tronc1=”SIP/0″;
    $tronc2=”@stelphone”;
    }
    else
    {
    $tronc1=”ZAP/g1/”;
    $tronc2=”,20,Tt”;
    }

    insertare las imagenes de la configuracion

    1- configurar campaña

    2- respuesta de la configuracion

    3- log del asterisk

    4- archivos call creados

    te agradeceria si me ayudaras con este problema.
    mi skype es cristian.stelphone

    saludos y gracias

  12. Hola Juan mi consulta es que si no tienes un tutorial para crear algun phpAGI para entrelazar una base de datos Oragle BD para generar consultas de salarios y luego dar un audio con el respectivo monto..

    Gracias de antemano

  13. Estimado ya esta operativo y funcionando, en el elastix 2.4
    la falla era capa 8 era modificar el prefijo ya que me faltaba un digito para que saliera xD la llamada.

    lo otro, es posible de ir en bloque generando llamadas, es decir de 8 llamadas con 2 intentos y luegos otros 8 numeros con 2 intentos y asi consecutivamente, pero esto de forma automatica, como para dejarlo en campañas. ya que dispongo de 8 rutas, y quiero llamar a 100 numeros, pero al momento de hacerlo el elastix me dispara las 100 llamadas a la ves y me salen 8 llamadas solamente, encaso que se contesten intenta con otros 8 numeros pero luego ya no intenta mas ya que coloco 2 reintentos.

    la falla se produce que si colocara 50 reintentos si un numero no me contesta ni corta la llamada el asterisk lo llamara 50 veces :/

    alguna forma de ejecutar las llamadas en bloque?

    lei que se podia modificar para usar colas, me puedes explicar un poco sobre eso.

    gracias

  14. Chicos descargelo ahi, lo acabo de subir, o si no dejen un mail y se los mando

    http://www.gigasize.com/get/88so2lf9gyc

    comento que mejore la funcionalidad, lo realize para generar campañas segmentadas y usando las tronales que yo defino, y cuantas llamadas quiero que sean paralelas.
    tambien genere informes de archivos importados entregados y no entregados.

    ademas de esto configure el software para subir el audio directo desde cuando uno crea la campaña y no desde el ftp

    cualquier duda me pueden preguntar por medio de este mismo foro para que todos puedan aprender.

    • Hola me Cristian me podrias indicar que modificaste para realizar las generar las campañas
      segmentadas y cuantas llamadas sean simultaneas?
      En un entorno de pruebas con una sola linea y con diez destinos tengo el mismo problema que
      describes anteriormente.
      Desde ya gracias !!

      • Hola juan, si claro que te puedo decir como lo hice,
        como bien dice el manual juan olivar, se usa la funcion asterisk call files, propia de este, lo que hice fue lo siguiente.

        modifique el codigo para que cuando genere las consultas a la base de datos y me tire las llamadas .call, revise las cantidades de troncales disponible y las compare con las llamadas simultaneas.

        te dejo el codigo para que lo remplazes por el que ya esta.

        debes remplazar en el archivo audioelastixdialer.php

        ///////////// CODIGO ACTUAL////////////////

        //5.- GENERAR LA LLAMADA DE LA BASE DE DATOS
        $sentencia=”select id,telefono from calloutnumeros where campana = $idcampana;”;
        $resultado=consultar_bd($sentencia);
        while ($row=mysql_fetch_array($resultado)){
        $id=$row[0];
        $numero=$row[1];
        $Channel= “Channel: ” . $tronc1 . $numero . $tronc2 ;
        $Callerid= “Callerid: ” . $numero;
        $fp = fopen(“/var/spool/asterisk/outgoing/myarchivo$id.call”,”a”);
        fwrite($fp, $Channel . PHP_EOL . $Callerid . PHP_EOL . $MaxRetries . PHP_EOL . $RetryTime . PHP_EOL . $WaitTime . PHP_EOL . $Context . PHP_EOL . $Extension . PHP_EOL . $Priority . PHP_EOL);
        fclose($fp);

        } //CIERRE DE WHILE
        mysql_free_result($resultado);
        die;

        ?>

        REMPLAZAR POR

        //5.- GENERAR LA LLAMADA DE LA BASE DE DATOS

        $sentencia=”select id,telefono from calloutnumeros where campana = $idcampana;”;
        $resultado=consultar_bd($sentencia);

        $llamadasMax= tu numero de troncales va aca;

        $cant = mysql_num_rows($resultado);

        while($cant > 0 ){

        if( count(glob(“/var/spool/asterisk/outgoing/{*.call}”,GLOB_BRACE)) < $llamadasMax ){
        $row=mysql_fetch_array($resultado);
        $id=$row[0];
        $numero=$row[1];
        $Channel= "Channel: " . $tronc1 . $numero . $tronc2 ;
        $Callerid= "Callerid: " . $numero;
        $fp = fopen("/var/spool/asterisk/outgoing/myarchivo$id.call","a");
        fwrite($fp, $Channel . PHP_EOL . $Callerid . PHP_EOL . $MaxRetries . PHP_EOL . $RetryTime . PHP_EOL . $WaitTime . PHP_EOL . $Context . PHP_EOL . $Extension . PHP_EOL . $Priority . PHP_EOL);
        fclose($fp);
        $cant = $cant – 1;
        $sql = "update calloutnumeros set estado = 'exito' where telefono =".$numero." && campana =".$idcampana;
        consultar_bd($sql);
        $HoraLlamada=date("H:i:s");
        $sql = "update calloutnumeros set fechaLlamado ='".$HoraLlamada."' where telefono =".$numero." && campana =".$idcampana;
        consultar_bd($sql);

        }
        sleep(2);

        }

        $sql = "update calloutcampana set horaTermino ='".date("H:i:s")."' where idcampana =".$idcampana;
        consultar_bd($sql);

        echo "”;
        echo “Volver“;
        echo “”;

        mysql_free_result($resultado);
        die;

        ?>

        tambien puedes colocar la variable en el diseño para que cambies tu maximo de troncales mas libremente, es decir, desde el mismo software.

        Saludos y Exito Juan.

    • Hola Cristian gracias por haber contestado, pero si no es molestia podrias
      enviarme el archivo audioelastixdialer.php modificado porque no me funcionado. Es para
      verificar si me equivoque en algo.

      • Hola creen que me puedan ayudar he intentado usar el código adjunto para mejorar las llamadas pero no me resulta… podrían decirme si el código esta bien o falta añadir algo mas.

    • Hola cristian bien mira que he montado todo pero me sale un error Call failed to go through, reason (3) Remote end Ringing
      este otro me sale
      Attempting call on SIP/572147483647@TSIP-VOIPARKAS for s@call-file-test:1 (Retry 1)

      no se de dnde me sale este numero laargo 2147483647 el 57 si es porque le puse al sip 57 de colombia

      pido tu consejo gracias.

      • Es el tipo de campo donde tienes almacenado el teléfono, yo puse varchar y solucione ese problema.

  15. Mi estimado me encantaría probar la solución pero no puedo descargarla me podrias ayudar talvez con los archivos ?? de antemano muchas gracias

      • Cristian, buenos días,

        ¿Aun sigue operativo ese enlace para la descarga?

        Yo también estoy realizándole mejoras a la aplicación original de Juan, por ejemplo, en la selección de Troncal de la página principal he puesto otro que sea Local, he incluido el código que has puesto antes y en la página principal he puesto un campo donde te pide el número máximo de canales a usar, he cambiado el nombre de la base de datos “AdioElastixDialerDB” por “AudioElastixDialerDB”, he cambiado el directorio destino de los ficheros csv, que se depositaban en “./AudioElastixDialer/” a “./AudioElastixDialer/csv/”, etc…

        En fin, algunas cosillas…

        Podriamos aunar las modificaciones e ir mejorando la aplicación…

        Juan, por cierto, muy buen aporte con la aplicación.

        Saludos y gracias,

        Ramses

      • Hola Ramsés

        El enlace original ya esta actualizado, por cierto , si gustas me envías las modificaciones y las posteo.

        Saludos!!

      • Hola cristin ue cambios le has hecho al sistema para poder obtener las llamadas que si salieron y las que se perdieron seria genial montar eso.

    • Hola Cristian gracias por haber contestado, pero si no es molestia podrias
      enviarme el archivo audioelastixdialer.php modificado porque no me funcionado. Es para
      verificar si me equivoque en algo.

  16. Hola gracias por la herramienta tan funcional. Quisiera preguntarte como se trabajaria con troncales dahdi ya que estoy atorado en esto. Muchas gracias de antemano

  17. Hola, muy buen aporte, pero tengo un problema, luego tocar el boton generar campaña me muestra este mensaje

    CAMPAÑA CREADA , GENERANDO LLAMAS

    ELASTIX PROWERFULL !!
    Error en consulta a la base de datos

    y no llega a generar siquiera los .call gracias por adelantado!

  18. amigo guando ejecuro esto me da el siquiente error que podra ser ??????

    [root@PBX ~]# mysql -u root -p AdioElastixDialerBD < AudioElastixDialer/sql/AdioElastixDialerBD.sql
    -bash: AudioElastixDialer/sql/AdioElastixDialerBD.sql: No existe el fichero o el directorio

    • hola Jroliva ya solucione ese detalle pero tengo otro que no me abre la interface web me da este error.

      Not Found

      The requested URL /AdioElastixDialer was not found on this server.
      Apache/2.2.3 (CentOS) Server at 192.168.100.54 Port 443

      • Me puede ayudar a mi me sale el mismo error que ya soluciono Gereardo pero no dice como:
        Not Found

        The requested URL /AdioElastixDialer was not found on this server.
        Apache/2.2.3 (CentOS) Server at 192.168.100.54 Port 443

  19. mysql -u root -p AdioElastixDialerBD < AudioElastixDialer/sql/AdioElastixDialerB
    -bash: AudioElastixDialer/sql/AdioElastixDialerB: No existe el fichero o el directorio

    todavia no me deja que puede ser ?????

  20. Hola jroliva

    Cuando abro el formulario solo me muestra la parte de nombre de campaña pero no sale ningun otro campo mas quisiera saber cual podria ser el problema

  21. Hola jroliva

    las llamadas por las troncales analogicas no me esta funcionaldo no veo que disque los numeros del archivo numerosBD.csv.

    me aparece esto

    Attempting call on DAHDI/g0/2147483647 for s@call-file-test:1 (Retry 1
    Attempting call on DAHDI/g0/2147483647 for s@call-file-test:1 (Retry 1)

    y el archivo

    04241138630,gerardo

  22. Hola jroliva, me ayudo bastante para presentar un proyecto en la Universidad, solo me quedo una duda porque no me funciono, y es que quería llamar a otro elastix, utilice
    $tronc1=”SIP/${EXTEN}”;
    $tronc2=””;
    para que usara el dial y buscara la troncal sip, pero no funcionó, luego lo cambie a
    $tronc1=”SIP/Troncalsip”;
    $tronc2=”${EXTN}”;
    y tampoco me funciono, después probé
    $tronc1=”SIP/”;
    $tronc2=”Tronalsip”;
    y tampoco funciono, entonces las opciones me mostró un error similar a
    Attempting call on Troncalsip/2002 for s@call-file-test:1 (Retry 1
    Attempting call on 2002 for s@call-file-test:1 (Retry 1)
    Dependiendo la modificación, como lo debo modificar para que llame a las extensiones del otro elastix.

    Las reglas de salidas las tengo funcionando, pues, si marco manualmente, si saca la llamada

    • Hola Anibal

      Lo que tienes que lograr hacer con las variables es tener el formato SIP/2000@TRONCALSIP

      Donde 2000 es el numero que deberias subir en el csv.

      Saludos
      Juan Oliva

  23. Excelente aporte, lo estoy probando pues no he podido lograr esta funcionalidad con el módulo de callcenter de elastix v2.4.
    Me queda una pregunta, ¿Cómo sería posible revisar el resultado de las campañas que he creado? es decir, si la llamada fue efectiva, o fallida, o si el número estaba ocupado.
    Saludos y gracias.

  24. Hola Iván

    Para lograr lo mismo con modulo de Callcenter de Elastix , tienes que “engañar” al modulo , asiendo que en vez de que dirija la llamada al numero de cola , lo dirija a un numero de extensión que definas en el extensions_custom.conf , lo puedes probar creando una cola con el numero 1234 , pero al final la llamada se va a reproducir un anuncio.

    Respecto a lo otro, las llamadas quedan registradas en la tabla de cdr , así que bastaría hacer una consulta directamente o extraerlo del modulo de reports de Elastix

    Saludos!!

  25. Hola estimado, muchas gracias por subir semejante tutorial, la verdad es que lo veo todo super bien.

    El punto es que no me manejo mucho con sistemas Asterisk así que tengo una consulta.

    En el punto 6, donde se configura la troncal por donde salen la llamadas, ¿qué debo poner en caso de que tenga una troncal IAX2? Sucede que las llamadas de mi Elastix se trunkea con otro Elastix mediante ese protocolo, por lo que las llamadas salen a ese servidor y luego a un proveedor de llamadas. ¿Qué datos necesito ingresar?

    Saludos,

  26. Hola Carlos
    Tendrias que cambiar la sintaxis y el orden de las variables para que aplique a iax2 , actualmente esta para sip de esta forma

    SIP/$numero@NOMBRETRONCAL

    Pero IAX2 exige :

    IAX2@NOMBRETRONCAL/$numero

    Solo es programación y respetar la sintaxis.

    Saludos
    Juan Oliva

  27. @jroliva, buenos dias.

    trate de seguir tu tutorial como indicas pero me entro la duda que quiero hacerte antes de proseguir. 1º.- Al ingresar este codigo y hacerla funcionar puede ocacionar algun cambio en el funcionamiento actual de Elastix, es decir, sigue funcionando normalmente el modulo Call Center? 2º.- Luego del audio se puede programar que el usuario pulse una de dos teclas como opcion? por ej. opcion 1 marque 1, opcion 2 marque 2 y este quede grabado en los resultados? Como veras, no tengo mucha experiencia en el tema, asi que si me podrias decir como seria este codigo seria de mucha ayuda. Muchas gracias por tu tiempo.

  28. Hola Christian , te respondo:

    1.- el programa AudioElastixdialer es independiente del modulo de callcenter de Elastix , ya que su funcionamiento se basa en los archivos .call de Asterisk y el modulo de Elastix tiene su propio marcador predictivo.

    2.- Se pueden modificar el programa para hacer campañas con IVR para captura de datos como por ejemplo encuestas, o derivar la llamada a una cola de atención, si el usuario presiona una determinada opción del audio IVR, justamente eso lo tengo funcionando para una empresa.

    En realidad el cambio no es tan drástico, te recomiendo leer sobre asterisk puro , aplicaciones de Asterisk como background o read y entender muy bien el funcionamiento de los archivos .call

    Saludos
    Juan Oliva

    • Tengo una consulta mas Jorge y quizas no tenga nada que ver al tema en cuestion (si esto no se debe, favor de borrarlo y disculparme). Como ya sabes, eh montado un server elastix 2.4 para un call center en un vps con CentOS. Dado que mi experiencia en el tema es primitiva, llegar a montarlo fue toda una experiencia pero me esta presentando un error que no se como o donde buscar para solucionarlo. El mismo es que luego de la primera linea de clientes que le cargo para llamadas salientes, el primer cliente lo llama perfecto pero luego de terminar con el primer cliente no sigue la lista, para la campaña ahi mismo. No muestra error, no muestra nada fuera de lo normal. El archivo lo cargo en un csv y todas las lineas iguales (numero,”nombre”,”otrodato”.”etc). Otra de las cosas que sucede es que me muestra todos los datos de la base en la primera llamada. Que estoy haciendo mal? Muchas gracias Jorge!

  29. Hola Juan, agradezco tu respuesta, te explico:

    En el archivo de audioelastixdialer.php, la configuración de la troncal quedó así.

    if ($troncal==”2″)
    {
    $tronc1=”IAX2/IAX_PBX3/”;
    }
    else
    {
    $tronc1=”ZAP/g1/”;
    $tronc2=”,20,Tt”;
    }

    En el CSV inserté sólo dos números a modo de prueba, y al momento de hacerlo arrancar, sucede esto:

    — Attempting call on IAX2/IAX_PBX3/972134970 for s@call-file-test:1 (Retry 1)
    — Attempting call on IAX2/IAX_PBX3/972135035 for s@call-file-test:1 (Retry 1)
    — Call accepted by 192.168.20.45 (format ulaw)
    — Format for call is ulaw
    — Call accepted by 192.168.20.45 (format ulaw)
    — Format for call is ulaw
    > Channel IAX2/IAX_PBX3-18488 was never answered.
    — Hungup ‘IAX2/IAX_PBX3-18488’
    > Channel IAX2/IAX_PBX3-20407 was never answered.
    — Hungup ‘IAX2/IAX_PBX3-20407’

    ¿Qué estoy haciendo mal? ¿Debo hacer algún tipo de modificación al servidor 192.168.20.45?

    Espero tu respuesta, gracias.

  30. Hola Carlos , yo lo que veo es que la llamada si llega al otro servidor ” Call accepted by 192.168.20.45 (format ulaw)” el problema al parecer es cuando marca, tendrías que ver como llega al otro lado (192.168.20.45) y determinar cual es el error en su log

    Espero te sirva.

    Saludos
    Juan

  31. Hola juan muchas gracias por tu aporte, pero me aparece este error, me reconoce el archivo y me pide la contraseña cuando ejecuto la linea en sql, coloco la clave de la base de datos, pero luego me aparece este error, no sabes que podra ser

    [root@localhost ~]# mysql -u root -p AdioElastixDialerBD < /var/www/html/AudioElastixDialer/sql/AdioElastixDialerBD.sql

    Enter password:
    ERROR 1049 (42000): Unknown database 'AdioElastixDialerBD'
    [root@localhost ~]# ERROR 1049 (42000): Unknown database 'AdioElastixDialerBD'

  32. Hola Juan me anda perfecto, lo modifique para un gateway, ya que no tenemos voip, te queria preguntar si sabes como hacer para que el cliente cuando reciba la grabacion, marque una opcion y yo de alguna forma pueda filtrar el resultado, la grabacion que tengo es para ver si le interesa o no un producto saludos y gracias

  33. jroliva, muy buen tutorial, lo puse a prueba y funciona perfectamente, ahora mi pregunta seria, como se puede agregar opciones luego del mensaje para el cliente y luego me lo arroje como resultado? Gracias.

  34. jroliva, funciona a la perfección, pero que posibilidad hay que se pueda limitar la simultaneidad de las llamadas que realiza el sistema, es decir, si tengo un listado de 100 número y quiero que realice llamadas de 5 en 5. Gracias

    • Hola juancvl

      Claro basta con incluir un bucle adicional y un contador, para limitar ello, justamente esas modificaciones como esa y la parte de encuestas y demás requerimientos las tengo en la versión que uso para empresas, pero la base la tienes ahí.

      Saludos
      Juan Oliva

  35. Hola Hernan

    Pues en ningún lado de momento , pero básicamente lo que tienes que usar es la aplicación de asterisk read() para capturar los dtmf y luego algún AGI para meter el numero o dftm a una base de datos.

    Saludos
    Juan Oliva

  36. Hola Juan,

    Mil gracias por este excelente aporte, estoy apenas hace unos meses incursionando en este mundo y está solución es muy importante para mi proyecto.
    Sucede que tengo problemas con el .sql (no conoaco mucho de ello), por lo cual pido ayuda con algo de orientación a este error que me aparece:

    [root@localhost ~]# mysql -u root -p AudioElastixDialerBD < /var/www/html/AudioElastixDialer/sql/AdioElastixDialerBD.sql
    Enter password:
    ERROR 1005 (HY000) at line 25: Can't create table './AudioElastixDialerBD/calloutcampana.frm' (errno: 121)

    Llevo días eliminando todo y volviendo a realizar el montaje, pero no me cuadra, ¿Alguna idea de donde estoy fallando?

    Gracias

  37. Hola Juan.
    Primero que nada quiero felicitarte y agradecerte por este excelente aporte!
    Te comento que apenas estoy incursionando en esto de Asterisk y no he logrado configurar el troncal.
    Estoy haciendo pruebas con modems USB (dongle), y en mi elastix configuré el toncal de la siguiente manera: dongle/dongle0/$OUTNUM$
    ¿Cómo debería configurarlo en el archivo “AudioElastixDialer.php”?
    Agradezco mucho a quien pueda ayudarme!!!
    Saludos

  38. Hola Juan Pablo

    A la fecha no he tenido oportunidad de probar el dongle , pero tendrías que cambiar

    $tronc1=”SIP/Troncalsip”;

    por

    $tronc1=”dongle/dongle0”;

    Eso debería bastar

    Espero te sirva
    Saludos
    Juan Oliva

  39. Estimado Juan: muchas gracias por tu respuesta!!!
    Funcionó correctamente con el dongle.
    Te hago otra pregunta: se supone que la aplicación toma en cuenta las rutas salientes que tengo configuradas en el elastix??, porque cuando agrego en el csv un numero que comience por cero (un celular), luego en el archivo .call lo pone sin 0. Puse en la ruta y también en el troncal “prepend”0, pero no me lo agrega y continúa marcando el número son 0.
    Muchas gracias nuevamente!!!!!

  40. Juan: Ya he solucionado el inconveniente con el nro 0. Se debía a la configuración del troncal (me faltaba una barra invertida al final).
    Te hago otra consulta: si configuro un gateway GSM o una tarjeta FXO, ¿cómo sabe la aplicación cuantos canales tiene ese troncal?

  41. Gracias estimado Jroliva, Gracias por tu ayuda, y esfuerzo y generocidad, sin egoismo sin muchos conocimiento sobre asterisk, en 2 horas esta trabajando gracias a tus scripts, te transfiero mis buenos desos y energia positiva en los que hagas. desde ecuador.

  42. Muy bueno, pero hay alguna forma de hacer alguna encuesta? que se llame con varios audios y con opciones y se vayan guardando los resultados?
    gracias

  43. Hola estimado Jroliva, A varios nos ha dado el error “error en consulta a la base de datos” y ya se ha hecho lo que usted nos dijo k hicieramos. Quisiera saver si al tutorial le falta alguna configuración mas pork el error que esta dando la aplicación no es porque le falte if(!($conector=mysql_connect(“localhost”,”root”,”abcd1234″)))
    {
    echo “Error al conectar al servidor de base de datos”;
    exit();
    }

    if(!mysql_select_db(“AudioElastixDialerBD”,$conector))
    {
    echo “Error al conectarse a la base de datos”;
    exit();
    Ya ese error no nos lo da, sino el que dice que no puede hacer las consutas a la base de datos por ende falta alguna configuracion en la base de datos o el archivo Audioelastixdialer.php. Saludos…

  44. Disculpen, pero hacer este tutorial en 6 pasos es como meter un barco dentro de una botella
    a esto le falta un desglose mayor, cuando se habla de Un Index que inbolucra PHP + Mysql se
    está hablando de 3 lenguajes diferentes; si alguien le funciono este manual que indique los pasos
    a seguir al menos que no halla $$ de por medio.

  45. Hola , estoy probando este sistema y tengo un problema para sacar unas llamadas…
    Cuando marco a teléfonos fijos lo puedo hacer sin problemas, pero cuando llamo a celulares, no me llama y es porque en el Cli me muestra como si estuviera marcando otro numero.

    audioelastixdialer.php

    if ($troncal==”2″)
    {
    $tronc1=”SIP/”;
    $tronc2=”@MiProveedor”;
    }
    else
    {
    $tronc1=”ZAP/g1/”;
    $tronc2=”,20,Tt”;
    }

    para llamar a fijos marco el -> 11 XXXX-XXXX
    para llamar a celulares marco -> 911 XXXX-XXXX

    cuando marco a un celular el Cli me tira SIP/2147483647@MiProveedor

    Espero que puedan ayudarme, Gracias.

  46. muy buenas tardes, antes que anda muchas gracias por este gran aporte, ya lo instale y siguiendo las indicaciones que muchos colaboradores aportan, veo que el sistema es muy funcional, pero veo que al ejecutar la campaña el sistema ejecuta los numeros de la lista todos al mismo tiempo, y quisiera saber si existe alguna manera de limitar la cantidad de numeros por bloques, agradezco de antemano su colaboracion.

  47. Hola amigos muy buen día estado configurando este aplicativo en elastix 2.4, pero cuando genero la campaña me sale exitosa pero al nivel del clic me sale la marcación totalmente diferente ala de la base de datos.
    El numero que marco es 3134006902 el cual es un móvil de Colombia.
    El número que me muestra el clic es: SIP/572147483647
    No logro saber porque es, les agradezco su ayuda
    Gracias

  48. Hola Juan muy buen día. Cuando tú te refieres al tipo de campo, es el formato del archivo de la base de datos? (csv).
    Agradezco enormemente su colaboración si de pronto tienes un archivo el cual pueda tomar de ejemplo

  49. Hola Juan Buen dia me podrias colaborar tengo un troncal SIP que solo me permite la salida de llamadas desde un numero valido de la troncal y cuando llamo veo que una traza que tu script toma el mismo numero a llamar como el que lo origina, agradezco de ante mano tu ayuda para saber si puedo mandar las llamadas con origen especifico se que es en el campo $Channel= “Channel: ” . $_POST[‘Channel’]; como le puedo poner para que me saque el numero de mi proveedor.

    Agradezco si tu o alguno de los colegas sabe como hacerlo

  50. Hola amigos por favor necesito ayuda para poder realizar llamadas a celulares en Colombia ya que todo lo que marco se me convierte a (572147483647), e antemano les agradezco ya que no tengo mucha experiencia en esta parte

    Numero de ejemplo: 573134006902
    Numero que sale: 572147483647
    La base de datos se encuentra en formato csv, la cual la creamos en Excel

    • Alan

      Te comente que es un problema en la definición del campo que almacena el numero, es muy corto y por eso realiza el cambio que indicas, revisa base de datos.

      Si no tienes experiencia con gestión de base de datos Mysql, pide ayuda al respecto.

      Saludos
      Juan Oliva
      @jroliva

    • Saludo Rodrigo Ruiz. también tengo el mismo problemas. y es debido a que el campo siguiente se llenara con el select del idcampana. Pero al no tener ningún valor no te presentara nada. Yo estoy parado por la razón de que no se con que dato voy a rellenar la tabla calloutcampana. Si a alguien de lo que ya le funciono poner un ejemplo de las tablas con los datos ya insertado seria de gran ayuda

  51. Buen día, realice la configuración de acuerdo a los pasos y ya puedo establecer la llamada y en el cli veo que reproduce la grabación, solo que cuando el interlocutor contesta no escucha la grabación y la llamada dura lo mismo que la reproducción y después se cuelga, todo va bien solo no pasa el audio, alguien sabe que pasa?

  52. Gracias Alan, lo que hice solo fue probar con otro proveedor de internet y si funciono, el tema era mi proveedor. Gracias Juan Oliva por esta solucion.

  53. Hola Juan Excelente aporte, ya lo tengo funcionando con una encuesta, pero no he logrado tomar el status de la llamada para calificar a las que no pude contactar

    [call-file-test]
    exten => s,1,Answer
    exten => s,n,wait(2)
    exten => s,n,Agi(encuesta.php)
    exten => s,n,Hangup()

    en mi Agi leo el CallerID
    $cid=$agi->request[agi_callerid];
    y asi gestiono las que responden y guardo las respuestas

    Pero no se como guardar los telefonos que “NO” contestan

    Espero me puedas apoyar

    • Gracias Juan, aun no soy tan ducho manejando las variables, la debo capturar en el audioelastixdialer.php ? Antes de hacer los .call o en el contexto call-file-test y pasarsela a mi captura.php ?

      Te agradecere un poco mas de ayuda

      Gracias

    • Ejecuto tu aplicación y a cada numero que me contesta le aplico el agi captura.php pero los mumeros que no me contestan les quiero aplicar otro agi que me los escriba en una tabla con el cid y el status de la llamada, no entiendo como leer y enviar el hangupcause si en tu php o desde el contexto o llamarla desde mi agi asi como llamo el cid.

  54. Solo me aparece Nombre de Campaña!! y nada mas. 😦

    “AUDIO ELASTIX DIALER 0.1”
    “Generador de Campañas / Destino : Audio”
    “Nombre de Campaña”

    Que puede ser baje el archivo el 12/06/2015 la base y todo esta corriendo con las tablas y todo. Elastix 2.0.2

    • Me ha pasado en versiones posteriores, simplemente no se esta conectando con la base de datos sql, intenta corregir los datos de conexion!

  55. Me parece maravillosa tu aplicación. Me gusta trabajar con gente que agrada de proyectos open Source. Soy diseñador UI/UX si gustas podemos trabajar para poner la interfaz mas intuitiva o amigable.
    Saludos desde Colombia 😀

  56. Hola Juan excelente aporte, unicamente tengo una duda, como puedo realizar para que la llamada este configurada de la siguiente manera:

    Cuando reciba la llamada
    Tenga la opción de presionar un boton en caso de estar interesado en responder una encuesta (Por ejemplo que oprima desde el celular el numero 0) todos esos números lo envien a reporte para poder devolver las llamadas a los interesados en responder la encuesta.

    Así mismo en que apartado puedo ver si los números son contestados o no?

    Muchas Gracias por tu ayuda.

    • Hola Guinoh

      Todo depende a que contexto envies la llamada del archivo .call , direcciona el contexto a uno donde tengas programado el press-1 , lo otro lo puedes ver en el cdr de asterisk

      Espero te sirva
      Saludos
      Juan Oliva

  57. Hola J oliva Gracias, por regalarnos tus conocimientos, esta genial tu programa, tengo un pequeño problema todo me funciona OK cuando envio las llamadas a fijos colombia 57 1 3924568, se envia bien, pero cuando cargo numero de celulares 57 321956895 me sale error y un numero largo — 572147483647@ – se que te ha sucedido lo he leido y es cuestion de cambiar el tipo de variable donde se aloja el numero en la base de datos. Me puede ayudar exactamente donde tengo que cambiar eso, que por ser primerizo en esto no he dado con la solución. porfavor si fueraas tan amable decirme donde exactamente debo cambiar, ayudame en mi ignorancia. MUCHAS GRACIAS.

      • Gracias, si me funciono excelente, Gracias jroliva, muchas gracias, una consulta, como podria realizar un reporte de todas las llamadas?

        y otra consulta hay un proyecto para un swicht Voip sera que podrias ayudarnos a desarrollarlo, cuanto nos cobrariia, podriamos hablar con usted nos regala un telefono? gracias.

      • Hola Edu
        Los reportes están en el CDR de Asterisk , si lo enlazas a MYSQL puedes filtrar la información que necesitas.

        Sobre tu proyecto, claro puedo ver de apoyarlos, escríbeme a jroliva@gmail.com para intercambiar contactos.

        Saludos
        Juan Oliva
        @jroliva

      • Hola joliva
        Disculpa la ignorancia pero ya trate de todo y no logro sacar la llamadas a celular, a que te refieres con el limite en el campo de la base de datos o que parte es la que se debe de cambiar

        Saludos

  58. Hola Muchas Gracias por tu aporte Jroliva.

    Excelente aporte, muchas gracias por la generosidad.

    Solo tengo una duda como hago que las llamadas que tengan una duración a 10 segundos sean registrados en una base de datos.

    Estoy gradecido con usted, alguien que tenga este conocimiento seria de mucha ayuda.

      • Gracias ya lo resolví pero al momento de cargar los números y llamar se comen los “0” es decir del celular se marca sin el cero inicial que se hace ahí por favor gracias

      • Edison tengo el mismo error solo me sale el nombre de la campaña como l puedo solucionar gracias…

  59. Me encanta tu trabajo Juan, estoy tratando de montarlo con una troncal net2phone (que me ha dado miles de problemas) mi pregunta básicamente es cual línea sip me recomiendas y aquí otras preguntas: que pasa si quiero parar la lista de llamadas? como hago? como hago para hacer llamadas utilizando mas troncales.

    Saludos

  60. Saludos Juan es posibel implemtar “mediante que herramienta?” una opcion que detecte los buzones de voz y evite que la gravacion se envie y cuelque la llamada?

  61. Saludos, estoy tratando de configurar pero me arroja un error cuando creo la campaña, es lo siguiente CAMPAÑA CREADA , GENERANDO LLAMAS

    ELASTIX PROWERFULL !!

    Error en consulta a la base de datos

    Anteriormente me aparecen todos los datos a llenar, reviso todo y no le encuentro error que podría ser?
    Gracias

  62. Por favor alguien que me ayude como subo números celulares porque subo con el 0 adelante pero al cargar se borran y al marcar igual

  63. Hola buenas noches, Juan tengo un problema ya al probar lo realizado paso a paso coloco http/MiIP/AudioElastixDialer/
    y solo me muestra en la pagina la etiqueta Nombre de Campaña: y el cuadro de texto
    pero los demas datos no escribo prueba 1 en el cuadro y me lanza el siguiente error:
    CAMPAÑA CREADA , GENERANDO LLAMAS

    ELASTIX PROWERFULL !!

    Error al conectarse a la base de datos

  64. en el código hay una corrección, le falta una letra al nombre de la base de datos…
    dice:
    if(!mysql_select_db(“AdioElastixDialerBD”,$conector))
    debe decir:
    if(!mysql_select_db(“AudioElastixDialerBD”,$conector))

    saludos

  65. Corregir en el archivo funciones_bd.php
    la linea:
    if(!mysql_select_db(“AudioElastixDialerBD”,$conector))
    por
    if(!mysql_select_bd(“AudioElastixDialerBD”,$conector))

  66. Muy interesante, es lo que buscaba. Ahora, como yo solo quiero q se hagan llamadas en cierto horario se me ha ocurrido cambiar la fecha de creación del .call y ajustarlo , eso viene en un link que pusiste o hay una mejor manera,?

    Muchas gracias

  67. Excelente aporte Jroliva me sirvió de mucho funciona a la perfección tratare de hacer algunos cambios y los compartire gracias nuevamente.

  68. Hola buen dia juan eh realizado todos los pasos, mas sin embargo cuando carga la base en mi cli solo me aparece este dato:
    — Attempting call on SIP/00745215563441034@Telefonica_Monterrey for s@call-file-test:1 (Retry 1) — Attempting call on SIP/5563441034@Telefonica_Monterrey for s@call-file-test:1 (Retry 1) == Using SIP RTP TOS bits 184 == Using SIP RTP CoS mark 5 — Attempting call on SIP/0445563441034@Telefonica_Monterrey for s@call-file-test:1 (Retry 1) == Using SIP RTP TOS bits 184 == Using SIP RTP TOS bits 184 == Using SIP RTP CoS mark 5 == Using SIP RTP CoS mark 5

    eh intentado con los prefijos de marcado y con el prepend que me solicito anteponer mi proveedor

    de antemano agradezco todo lo que me has ayudado entender y te felicito por tu web que siempre me a sido de mucha ayuda

    • Hola Alberto
      Pues a simple vista no veo el error en realidad, en todo caso prueba si la llamada manual al 00745215563441034 sale correctamente por la troncal Telefonica_Monterrey , otra cosa es la cantidad de canales disponibles.

      Espero te sirva
      Saludos
      Juan Oliva

      • Buen Dia y Estimados

        encontre la solucion a mi problema, en el archivo audioelastixdialer.php

        en la linea 79

        $tronc1=”SIP/${EXTEN}”;
        $tronc2=”@Marcatel”;
        }

        Agregue esto y funciono perfecto

        en mi caso tu solucion me ayudo bastante ya que hay dias en los que no hay mucho flujo de llamadas y con tu sistema puedo generar mas y mandarlas a mi modulo de callcenter a una campaña de entrada donde estan los mismos agentes conectados.

        te agradezco mucho

  69. Jose España en julio 29, 2016 en 12:42 am dijo:
    Buena tarde Juan, buen aporte, ya lo probé y muy funciona bien pero tengo una duda, ya que genera todas las llamadas al mismo tiempo, esto me saturaría todas las troncales o mi elastix, ya que revisando en el cdr miro que genero las llamadas al mismo tiempo, hasta los mismos segundos. Existira una forma de encolarlas llamadas para que varié al menos unos segundos en cada llamada que realizce o bien que solo pueda usar una troncal o que limite el numero de llamdas.

    De antemano muchas gracias por tu colaboración y buen aporte.

    Responder ↓

    • Hola José

      Lo que yo hago es crear un contador como variable la cual al llegar al limite ( limite de llamadas simultaneas) hace una pausa (cantidad de segundos promedio que dura la grabación)

      Espero te sirva.
      Saludos
      Juan

      • Muchas gracias Juan por tu respuesta, como puedo crear la variable o crear el limite de llamadas simultaneas. Disculpa el abuso, ya que de programación no se mucho.
        De antemano muchas gracias.

    • Hola Daniel
      Puedes hacer que la llamada se mueva a un contexto donde trabajes con la aplicación “read” para capturar los dtmf y los envíes a un AGI para que los grabes a una base de datos.

      Espero te sirva
      Juan Oliva

  70. Saludos, Juan he seguido las instrucciones como indicas pero solo me lo del siguiente enlace

    al colocar un nombre me da el siguiente mensaje:

    CAMPAÑA CREADA , GENERANDO LLAMAS

    ELASTIX PROWERFULL !!
    Error al conectar al servidor de base de datos

    • se me olvido mencionar que estoy utilizando elastix con las versiones:
      Kernel
      Linux(i386)-2.6.18-409.el5

      Elastix
      elastix-2.5.0-1
      elastix-a2billing-2.1.0-1.gita40e37fefef7ab85999d04298b6e582b41930e7e
      elastix-a2billing-callback_daemon-2.1.0-1.gita40e37fefef7ab85999d04298b6e582b41930e7e
      elastix-addons-2.5.0-5
      elastix-agenda-2.5.0-3
      elastix-asterisk-sounds-1.2.3-1
      elastix-email_admin-2.5.0-4
      elastix-endpointconfig2-2.5.0-3
      elastix-extras-2.5.0-1
      elastix-fax-2.5.0-3
      elastix-firstboot-2.5.0-3
      elastix-framework-2.5.0-13
      elastix-im-2.5.0-1
      elastix-my_extension-2.5.0-1
      elastix-pbx-2.5.0-6
      elastix-portknock-0.0.1-0
      elastix-reports-2.5.0-5
      elastix-security-2.5.0-3
      elastix-system-2.5.0-4

      RoundCubeMail
      RoundCubeMail-0.3.1-12

      Mail
      postfix-2.3.3-7.el5
      cyrus-imapd-2.3.7-16.el5_11

      IM
      openfire-3.7.1-1

      FreePBX
      freePBX-2.11.0-23

      Asterisk
      asterisk-11.21.0-0
      asterisk-perl-1.03-0
      asterisk-addons-11.21.0-0

      FAX
      hylafax-4.3.11-1rhel5
      iaxmodem-1.2.0-2

      DRIVERS
      dahdi-2.10.2-0
      rhino-0.99.7-0
      wanpipe-util-7.0.14-0

      • Solucionado el Error al conectar al servidor de base de datos.

        pero solo sigue mostrando el nombre de la campaña nada mas

      • Hola asi me funciono:
        [root@hsrpcom ~]# mysql -u root -p AudioElastixDialerBD < /var/www/html/AudioElastixDialer/sql/AudioElastixDialerBD.sql

    • Perfecto, pero en que parte del PHP debo arreglar porque pienso que hay un error en la sintaxis o en tabla porque si comento esto ” ‘echo $nuevocodigo_dc=calcular_nuevo_codigo_bd(“calloutcampana”,”idcampana”)’ ” me muestra todo lo demas.

  71. Buen día soy un completo novato en esto del asterisk pero gracias a los comentarios y respuestas lo tengo actualmente funcionando sin embargo el problema que tengo es que no se como encolar las llamadas si pudieras orientarme o pasarme tu código para suplantar el mio para tenerlo 100% funcional seria grandioso me encontré este en los comentarios de arriba
    //5.- GENERAR LA LLAMADA DE LA BASE DE DATOS
    $sentencia=”select id,telefono from calloutnumeros where campana = $idcampana;”;
    $resultado=consultar_bd($sentencia);
    while ($row=mysql_fetch_array($resultado)){
    $id=$row[0];
    $numero=$row[1];
    $Channel= “Channel: ” . $tronc1 . $numero . $tronc2 ;
    $Callerid= “Callerid: ” . $numero;
    $fp = fopen(“/var/spool/asterisk/outgoing/myarchivo$id.call”,”a”);
    fwrite($fp, $Channel . PHP_EOL . $Callerid . PHP_EOL . $MaxRetries . PHP_EOL . $RetryTime . PHP_EOL . $WaitTime . PHP_EOL . $Context . PHP_EOL . $Extension . PHP_EOL . $Priority . PHP_EOL);
    fclose($fp);

    } //CIERRE DE WHILE
    mysql_free_result($resultado);
    die;

    ?>

    REMPLAZAR POR

    //5.- GENERAR LA LLAMADA DE LA BASE DE DATOS

    $sentencia=”select id,telefono from calloutnumeros where campana = $idcampana;”;
    $resultado=consultar_bd($sentencia);

    $llamadasMax= tu numero de troncales va aca;

    $cant = mysql_num_rows($resultado);

    while($cant > 0 ){

    if( count(glob(“/var/spool/asterisk/outgoing/{*.call}”,GLOB_BRACE))

    Pero por alguna razon al mandar la campaña se queda en blanco la pantalla y no sucede nada si pueden orientarme se los agradeceria y muchas gracias por tu aporte!!

  72. Perdón este era el código completo que no me funciono
    REMPLAZAR POR

    //5.- GENERAR LA LLAMADA DE LA BASE DE DATOS

    $sentencia=”select id,telefono from calloutnumeros where campana = $idcampana;”;
    $resultado=consultar_bd($sentencia);

    $llamadasMax= tu numero de troncales va aca;

    $cant = mysql_num_rows($resultado);

    while($cant > 0 ){

    if( count(glob(“/var/spool/asterisk/outgoing/{*.call}”,GLOB_BRACE))

  73. REMPLAZAR POR

    //5.- GENERAR LA LLAMADA DE LA BASE DE DATOS
    $sentencia=”select id,telefono from calloutnumeros where campana = $idcampana;”;
    $resultado=consultar_bd($sentencia);
    $llamadasMax= tu numero de troncales va aca;
    $cant = mysql_num_rows($resultado);

    while($cant > 0 ){
    if( count(glob(“/var/spool/asterisk/outgoing/{*.call}”,GLOB_BRACE))

  74. Estimados, pregunta al respecto, es posible tener dos o mas encuestas simultaneas ejecutándose y con distintos audios en cada encuesta.y como subir los audios a reproducir, desde la Web de la aplicacion,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s