Ir al contenido principal

GNUDIALER en Asterisk

Hola Como están?

GNUDIALER es un software de marcacion predictiva que nos ofrece varios modos, prediccion, modo automatico, modo preview, ademas de incluir un CRM y es muy dinamico. A pesar de que en el mercado existen muchos software de este tipo sean GNU o pagos, GNUDIALER es muy efectivo y lo mejor es GNU. Eso quiere decir que puedes modificarlo con un poco de conocimiento en lenguaje C y asterisk, bueno uno poco no, mucho conocimiento. He usado VICIDIAL en otras ocasiones y es también verdaderamente interesante, sin embargo como todo en este planeta hay ventajas y desventajas. Una de las ventajas que tiene sobre VICIDIAL(hasta el momento he podido observar en VICIDIAL) es que es mucho mas sencillo de administrar via web, puedo tener un numero ilimitado de campos en mi campaña,  puedo editar mis scripts ami antojo via web html(teniendo un conocimiento html). Desventajas es q aveces se puede comportar algo inestable si no tengo en cuenta el ratio vs cantidad de lineas vs agentes disponibles, tambien es algo mas complicado en comparacion con VICIDIAL iniciar campañas con una grabacion y los reportes son algo escasos y son poco confiables.

En la vida real he instalado varios Callcenters con GNUDIALER y actualmente estan en produccion, con algunas limitantes. Al igual que VICIDIAL, las limitantes vienen por parte de los requerimientos de los clientes y como puedo hacerlo en los predictivos  lo mas facil posible y que ellos esten contentos. En realidad nunca se puede satisfacer al cliente 100% pero mientras no este insatisfecho y la actitud suya hacia el cliente se la correcta todo estara bien.

Bueno Manos a la obra !

GNUDIALER no corre sobre Asterisk posterior a 1.4 por cuestiones de incompatibilidad con el AMI. Vamos a usar para este manual Asterisk 1.4. y debemos tener las fuentes, si usted instalo Elastix no hay fuentes, por lo que tendra que bajar las fuentes compilarlo e instalarlo.  Ademas tener instalado las Libpri y Dahdi  o Zaptel.

Descargamos GNUDIALER en /usr/src/asterisk y descomprimimos

#cd /usr/src/asterisk
#wget http://gnudialer.com/assets/Uploads/gnudialer-puff-current-r181.tar
#tar -xvf gnudialer-puff-current-r181.tar
#cd gnudialer-puff-20091121-r181

Ahora parcharemos Asterisk para que GNUDIALER pueda trabajar. Debemos parchar los archivos:
- manager.c
- channel.c
estos archivos estan en la carpeta main del fuente Asterisk, abrimos manager.c con un editor de texto y ubique en manager.c   las lineas:

return 0;
 }
 /*! \brief  manager_event: Send AMI event to client */
 int manager_event(int category, const char *event, const char *fmt, ...)
 {

justo antes de  /*! \brief  manager_event: Send AMI event to client */ y después del } añada la sigiuente linea de codigo:

static char mandescr_sendevent[] =
"Description: Send an event to manager sessions.\n"
"Variables: (Names marked with * are required)\n"
"       *Event: EventStringToSend\n"
"       Body: Optional string to send.\n";


static int action_sendevent(struct mansession *s, struct message *m)
{
        char *event = astman_get_header(m, "Event");
        char *body = astman_get_header(m, "Body");
        manager_event(EVENT_FLAG_USER, "ManagerUserEvent", "Event: %s\r\nBody: %s\r\n", event, body ? body : "<none>");
        return 0;
}

Luego ubique la siguentes lineas

ast_manager_register("Status", EVENT_FLAG_CALL, action_status, "Lists channel status" );
  ast_manager_register2("Setvar", EVENT_FLAG_CALL, action_setvar, "Set Channel Variable", mandescr_setvar );
  ast_manager_register2("Getvar", EVENT_FLAG_CALL, action_getvar, "Gets a Channel Variable", mandescr_getvar );
ast_manager_register2("GetConfig", EVENT_FLAG_CONFIG, action_getconfig, "Retrieve configuration", mandescr_getconfig);
  ast_manager_register2("UpdateConfig", EVENT_FLAG_CONFIG, action_updateconfig, "Update basic configuration", mandescr_updateconfig);
  ast_manager_register2("Redirect", EVENT_FLAG_CALL, action_redirect, "Redirect (transfer) a call", mandescr_redirect );

Justo después de  ast_manager_register2("Getvar", EVENT_FLAG_CALL, action_getvar, "Gets a Channel Variable", mandescr_getvar ); y antes de  ast_manager_register2("GetConfig", EVENT_FLAG_CONFIG, action_getconfig, "Retrieve configuration", mandescr_getconfig);  Añada este codigo:


ast_manager_register2("SendEvent", EVENT_FLAG_USER, action_sendevent, "Send Manager Event", mandescr_sendevent );


guarde el archivo y ahora edite channel.conf y encuentre la siguiente funcion:

manager_event(EVENT_FLAG_CALL, "Hangup", 
  "Channel: %s\r\n"
  "Uniqueid: %s\r\n"
  "Cause: %d\r\n"
  "Cause-txt: %s\r\n",
  chan->name, 
  chan->hangupcause,
  ast_cause2str(chan->hangupcause)
  );

Agregue después de "Uniqueid: %s\r\n"

"CallerIDNum: %s\r\n"
"CallerIDName: %s\r\n"

Agregue después de chan->name,

chan->uniqueid,
S_OR(chan->cid.cid_num, "<unknown>"),
S_OR(chan->cid.cid_name, "<unknown>"),

Debe quedar así

  manager_event(EVENT_FLAG_CALL, "Hangup", 
  "Channel: %s\r\n"
  "Uniqueid: %s\r\n"
"CallerIDNum: %s\r\n"
"CallerIDName: %s\r\n"
  "Cause: %d\r\n"
  "Cause-txt: %s\r\n",
  chan->name, 
chan->uniqueid,
S_OR(chan->cid.cid_num, "<unknown>"),
S_OR(chan->cid.cid_name, "<unknown>"),
  chan->hangupcause,
  ast_cause2str(chan->hangupcause)
  );

Compile e instale asterisk:
#make && make install

Agregue a /etc/asterisk/queues.conf  lo siguiente:

[general]
;:setting:debug:true
;:setting:log:true

[campaignname]
eventwhencalled = yes
strategy = leastrecent
timeout = 10
wrapuptime = 1
;:setting:active:false
;:setting:function:predictive
;:setting:calltoday:false
;:setting:usednc:false
;:setting:maxratio:5
;:setting:maxabandons:5
;:setting:maxlines:46
;:setting:sleeptime:1000
;:setting:tzearliest:8
;:setting:tzlatest:21
;:setting:timeout:20000
;:setting:dspmode:none
;:setting:trunk:Zap/g1
;:setting:dialprefix:none
;:setting:usecloser:true
;:setting:closercam:CLOSER
;:setting:callerid:9999999999
;:setting:filter:0
;:setting:chanvar:0
;:setting:chanstr:0
;:setting:calls:0
;:setting:abandons:0
;:setting:totalcalls:0
;:setting:totalabandons:0
;:setting:talktime:0
;:setting:totaltalktime:0
;:setting:usecallback:false
;:setting:usetzfilter:false
;:setting:debug:true
;:setting:skip:0
;:setting:f_mode:0
;:setting:f_areacode:0
;:setting:f_areacode_prefix:0
;:setting:f_zipcode:0
;:setting:prn_agent_sales:false
;:setting:prn_closer_sales:false
;:setting:prn_closer_nosales:true
;:setting:orderby:id
;:setting:filters:number:0:enable:false:string:((disposition > -6 AND disposition < 6) AND attempts < 4)
;:setting:filters:number:1:enable:false:string:((disposition > -6 AND disposition < 6) AND (attempts > 3 AND attempts < 8))
;:setting:filters:number:2:enable:true:string:((disposition > -6 AND disposition < 6) AND attempts > 7)
;:setting:filters:number:3:enable:false:string:(disposition = -3 OR disposition = 3)
;:setting:filters:number:4:enable:false:string:(disposition = 0)
;:setting:filters:number:5:enable:false:string:(disposition = -7)
;:setting:chanvars:number:0:enable:false:var:FROM:string:GNUDIALER

Instalaremos el CRM que viene con GNUDIALER:

#cd astcrm-1.1.6/
#make
#make install

Si existe algún error de Mysql, instale mysql-devel y mysql, si luego de eso arroja algo de java. Ignorelo como dice en la salida del mismo.

Agregue a /etc/asterisk/extensions.conf la linea "#include dialer.conf" y copie desde GNUDIALER el archivo dialer.conf.14 a /etc/asterisk/dialer.conf.

Crearemos un usuario por AMI para que GNUDIALER trabaje, agregamos a /etc/asterisk/manager.conf:

[dialer]
secret = 1234
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
permit=0.0.0.0/0.0.0.0


[crm]
secret = 1234
read = call,agent,user
write = call,agent,user 
permit=0.0.0.0/0.0.0.0 

Editamos CRM para que trabaje perfecto, editamos el fichero /var/ww/cgi-bin/astcrm.conf 

leave-this
dialer
1234
localhost
dialer

2 linea mysql user, 3 linea password mysql, 4 linea host mysql, 5 linea mysql base de datos.

Copiamos ahora gnudialer.conf.EXAMPLE  a /etc/gnudialer.conf y gdhosts.conf.EXAMPLE a /etc/gdhosts.conf. Editaremos /etc/gnudialer.conf 

gnudialer
dialer
1234
localhost
dialer
dialer
1234
localhost
5038

1 linea password de acceso a GNUDIALER via web, 2 linea mysql username, 3 linea mysql password, 4 linea mysql hostname, 5 linea nombre de la base de datos, 6 linea username del AMi user, 7 linea secret del AMI, 8 linea dirección del AMI server, 9 linea puerto del AMI manager.

Compilamos en instalamos GNUDIALER

#make 
#make install

Creamos la base de datos en Mysql:

#Mysql> create database dialer;

Si le cambias el nombre ten en cuenta los archivos gnudialer.conf ,gdhost.conf ,astcrm.conf.
Ahora iniciamos GNUDIALER.  con el comando 

#gnudialer

Si lo prefieres usa el modo consola o no daemon ejecutando:

#gnudialer -nd

ingresa a la web del GNUDIALER http://ipdelserver/gnudialer  logueate y veras algo como esto:






LISTO !! GNUDIALER esta instalado y funcionando !!! Espero les sirva !!
Saludos !!

Comentarios

  1. Hola, gracias por la información.
    Apenas ayer me enteré de la existencia de las herramientas GNUDialery Vicidial.
    Estoy en fase de investigación sobre las dos.
    Te comento sin embargo que el sitio de internet de GNUDialer al parecer no tiene mantenimiento, ni mucha actividad...
    Esto me hace dudar un poco el hacer pruebas con GNUDialer.
    Por otro lado, en el sitio de Vici se mira desarrollos y nuevos eventos...
    Tal ves estoy equivocado, pero es mi apreciación.
    Qué opinas..?
    Saludos
    Edwin

    ResponderEliminar
    Respuestas
    1. Hola, pues asi es. GNUDialer no le han dado mas soporte pero es muy maduro funciona en asterisk 1.4 y 1.2. es de hecho muy estable, hace años lo implemento y aun existe quien lo tiene en produccion por lo versatil... aunke Vicidial es muybueno.
      Conclusion prueba los dos y saca conclusiones.

      Eliminar
  2. Hola, Estoy instalando en GNUDialer pero tengo un problema en el CRM,la llamada es existosa y consigo efectuarla pero en el panel del usuario el script que genero para ver los datos de mi DB me sale en blanco, como si no encontrara la DB pero los parametros son correctos pues en el Dialeradmin logro conectarme sin problemas alguna idea, Gracias
    Marlon

    ResponderEliminar
    Respuestas
    1. Hola, eso ocurre cuando no estan configuradas en la plantilla de la campaña, los campos en los objetos para que carge las variables de la base de datos. Debes tener conocimiento de HTML. Saludos !

      Eliminar
    2. Bueno los he llamado correctamente el problema es que no solo son los datos es la pantalla en blanco totalmente, nisiquiere muestra un 'Hola Mundo' con los datos de la DB correcta.

      Eliminar
    3. Bueno, y el script no tiene errores de compilacion? o depronto tienen nombres distintos en la carpeta "/var/www/cgi-bin/"??....

      Eliminar
    4. Este comentario ha sido eliminado por el autor.

      Eliminar
    5. Amigo si gusta puedo ayudarte por msn, agregame es emel_punk de hotmail punto sin costo

      Eliminar
  3. Perfecto ya te agregue estamos en comunicacion

    ResponderEliminar
    Respuestas
    1. Ok pero enviame un correo porfa , q mi AMSN aveces no me deja ver recien agregados

      Eliminar
  4. como cargo la base al gnudialer alguien me puede ayudar?

    ResponderEliminar
  5. como cargo la base al gnudialer alguien me puede ayudar?

    ResponderEliminar
    Respuestas
    1. Ingresa mediante el CGI generado via web normalmente http://localhost/gnudialer dentro estan las opciones de importancion.

      Eliminar
    2. Zerokernel, recuerdas que internet explorer no soporta el astCRM de GNU?

      Eliminar
  6. alguien que sepa el gnudialer por favor contactarse Gracias

    ResponderEliminar
  7. Hola me podrías ayudar a instalar gnudialer o almenos decirme con que versión es compatible.
    Gracias

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Asterisk con WebRTC, TLS, libsrtp

  Cześć !! En esta ocasión vamos a explicar cómo configurar Asterisk para que desde un teléfono web podamos sacar y recibir llamadas. Se usará los siguientes componentes de Asterisk: libsrtp tls Asterisk module http Antes que nada debemos tener un teléfono web(obviamente), en el laboratorio vamos a usar Sipml5 en el siguiente link : https://www.doubango.org/sipml5/call.htm El siguiente paso es instalar libsrtp del enlace: https://github.com/cisco/libsrtp . #git clone https://github.com/cisco/libsrtp.git #cd libsrtp #./configure #make && make install Luego verificamos tener los siguientes módulos activos para compilar en menuconfig de Asterisk: res_crypto res_http_websocket res_srtp Comunmente si res_crypto no está selecionable, le falta la dependencia openssl-devel o su equivalente dependiendo del sistema que tengan. Cuando estemos seguros que están cargados en Asterisk continuamos con la instalación de los certificados locales(Si usa Lets'encrypt omitir la generación de c

Instalar Queuemetrics desde 0.

Cześć. Queuemetrics a pesar de estar casi personalizada su  instalación a Centos, también puede instalarse en otros sistemas operativos, de hecho en cualquier Linux podría hacerse. A continuación describo los pasos para hacerlo. En este demo se usó Suse. Descargar los siguientes paquetes: - Queuemetrics(obviamente XD)      link http://queuemetrics.loway.it/download.jsp      formato tar.gz - Mysql connector      link https://dev.mysql.com/downloads/connector/j/      formato  "platform independent" tar.gz      debe registrarse previamente. - Tomcat      link http://tomcat.apache.org/      formato tar.gz      en este manual se instaló la version 8.5.37 - JDK      link https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html      formato tar.gz      version linux x64 Instalar: - JDK Descomprimir #tar -zxvf jdk-8u201-linux-x64.tar.gz Mover jdk a /usr/local/ #mv jdk1.8.0_201 /usr/local/ - Tomcat Descomprimir #tar -zxvf a