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
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 !!
Hola, gracias por la información.
ResponderEliminarApenas 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
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.
EliminarConclusion prueba los dos y saca conclusiones.
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
ResponderEliminarMarlon
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 !
EliminarBueno 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.
EliminarBueno, y el script no tiene errores de compilacion? o depronto tienen nombres distintos en la carpeta "/var/www/cgi-bin/"??....
EliminarEste comentario ha sido eliminado por el autor.
EliminarAmigo si gusta puedo ayudarte por msn, agregame es emel_punk de hotmail punto sin costo
EliminarPerfecto ya te agregue estamos en comunicacion
ResponderEliminarOk pero enviame un correo porfa , q mi AMSN aveces no me deja ver recien agregados
Eliminarcomo cargo la base al gnudialer alguien me puede ayudar?
ResponderEliminarcomo cargo la base al gnudialer alguien me puede ayudar?
ResponderEliminarIngresa mediante el CGI generado via web normalmente http://localhost/gnudialer dentro estan las opciones de importancion.
EliminarZerokernel, recuerdas que internet explorer no soporta el astCRM de GNU?
Eliminaralguien que sepa el gnudialer por favor contactarse Gracias
ResponderEliminarSi deseas un conctacto favor dejar un correo o algo.
EliminarHola me podrías ayudar a instalar gnudialer o almenos decirme con que versión es compatible.
ResponderEliminarGracias
Este comentario ha sido eliminado por el autor.
Eliminar