@Elio
Muchas gracias por la info. Elio, la verdad es que ya le eché un vistazo hace unas semanas, pero no llegué a meterle mano. Esta vez he probado a conectarme por Telnet y mandar comandos AMI y he visto como actúa de forma básica el AMI, lo que tengo que ver como funciona el tema de conectar desde PHP a través de los sockets para a continuación mandar comandos y recoger eventos si es necesario ya que no tengo ni idea (además de ver cómo programar mediante PHP en sí para poder interactuar con el AMI) . Del foro obtuve unos ficheros de .php básicos orientados a AMI pero no he conseguido hacerlos funcionar desde mi centralita donde tengo instalado apache, seguro que tendré algo mal configurado, a ver si consigo ver qué.
@Emiliano
No te preocupes Emiliano, entiendo que no lo haces con ningún mal sino todo lo contrario, el problema es que ando bastante perdido con respecto a cómo conseguir lo que quiero puesto que nunca he trabajado ni con AMI,AGI,ARA; llevo varios días leyendo y buscando información y me está costando bastante digerir cómo llegar a poder programar un frontend que me sirva para poder solucionar el problema que tengo con los reportes de los ID de los agentes. Desde los archivos de texto (extensions.conf) sé como conseguir solucionar esto mediante pero ando perdido con respecto a cómo conseguir el mismo resultado usando otras estrategias de manera que pueda tener una consola de agente adecuada(frontend)
@Jose Luis
Hola Jose Luis, pues la verdad es que nunca había usado ARA, hasta ahora la única base de datos que he usado en Asterisk ha sido la interna de Asterisk(AstDB) la cuál entiendo que no me sirve con respecto a configurar en Realtime, he estado leyendo varios documentos acerca de como configurar los archivos asociados a las colas para hacer que dicha parte de mi sistema funcione con ARA:
En mi caso ¿Con disponer de la tabla "queue_members" en realtime sería suficiente ¿No? Las colas en principio las tengo fijas a 2 extensiones que no van a cambiar, a diferencia del problema que estoy teniendo con los agentes que se registran contra las colas de forma dinámica
Me aconsejas trabajar con mysql directamente ¿o mejor a través de odbc?
extconfig.conf:
[settings]
queue_members => mysql,general,queue_member_table
res_config_mysql.conf:
[general]
dbhost = 127.0.0.1
dbname = asteriskrealtime
dbuser = root
dbpass = PassWord
dbport = 3306
dbsock = /tmp/mysql.sock
En estos momentos tengo creados 2 usuarios en la queue_member_table:
mysql> select * from `queue_member_table`;
+----------+------------+------------+-----------+---------+--------+
| uniqueid | membername | queue_name | interface | penalty | paused |
+----------+------------+------------+-----------+---------+--------+
| 1 | Edi | 5001 | SIP/1001 | NULL | 0 |
| 2 | Albert | 5001 | SIP/1004 | NULL | 0 |
+----------+------------+------------+-----------+---------+--------+
2 rows in set (0.00 sec)
Desde el CLI puedo ver algo de este estilo:
CLI> realtime mysql status
CLI> queue show 5001
5001 has 0 calls (max unlimited) in 'fewestcalls' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 60s
Members:
Agent/2005 (ringinuse enabled) (Unavailable) has taken no calls yet
Albert (SIP/1004 from SIP/1004) (ringinuse enabled) (realtime) (Not in use) has taken no calls yet
Agent/2002 (ringinuse enabled) (Unavailable) has taken no calls yet
Edi (SIP/1001 from SIP/1001) (ringinuse enabled) (realtime) (Not in use) has taken no calls yet
Agent/2003 (ringinuse enabled) (Unavailable) has taken no calls yet
Agent/2004 (ringinuse enabled) (Unavailable) has taken no calls yet
Agent/2001 (ringinuse enabled) (Unavailable) has taken no calls yet
No Callers
De tal manera me aparecen los 2 agentes dinámicos que metí a mano. Si llamo a la cola 5001 llego a los agentes sin problemas ;)
Ahora necesito saber como poder "atacar" a dicha tabla desde el interfaz-frontend-consola de agente. La verdad es que sigo sin saber como "atacar" esta parte del problema, no he tocado lenguaje orientado a objetos y no sé por donde empezar para crear un interfaz gráfico que ataque a mi mini base de datos. ¿Alguna idea?
@Raul
Hola Raúl ¿Qué tal? umh, no consigo captar la idea de usar el campo CDR(userfield) para mediante un script de report enlazar tablas con el queue.log ¿A qué te refieres exactamente? ¿A tratar de analizar el cdr.csv y el queue.log y realimentar el queue.log con la info. del cdr.csv?
En extensions.conf había creado un código sencillote de manera que podía añadir miembros dinámicos de esta manera:
exten => 1111,1,NoOp(** Peticion de login de agentes **)
same => n,Authenticate(/tmp/pin.txt,am,4)
same => n,NoOp(${CDR(accountcode)})
same => n,AddQueueMember(5001,SIP/${CALLERID(num)},1,,${CDR(accountcode)},)
same => n,Hangup()
De forma que quedaban registrados en el queue.log con el nombre de usuario que tenían asociados en pin.txt (un poco cutre pero funcionaba), no obstante lo que no he sido capaz es de crear un frontend que pudiera atacar a este código.
un saludo y gracias por vuestra colaboración.