casoft Hola Casoft, siento la tardanza pero ando bastante liado hoy he tenido alguna hora libre y he podido revisar el código y ponerme con ello.
He modificado algunas cosas ya que en el listado que añadiste nuevo ( muy bueno eso por cierto
), pasaba lo mismo, solo salían los Agentes (Agents) y no los call back, así que he modificado algunas cosas del código para que se muestren los agentes y los Call back también.
También aparecía debajo la casilla de agentes vacía y lo he modificado para que salga bien ( simplemente en el index.php de campaign monitoring es cambiar esto
$cont = count($datos);
for ($i=0;$i<=$cont;$i++)
por
//le restamos 1 al total para evitar que añadia fila ultima sin datos hgmnetwork.com 29-07-2018
for ($i=0;$i<=$cont -1;$i++)
con los cambios que he realizado solo queda hacer que al cambiar de agente lo almacene en la db que esto ya lo dejo para otro dia porque hoy ni tiempo , pero ya va teniendo mas forma 
esta quedando muy bien creo
.
Te digo los cambios que he realizado, para que puedas hacerlos y ver los resultados y comentar que te parecen
y a los demás que lo tengan para pruebas tambien.
modulo /var/www/html/modules/campaign_monitoring/index.php
vi /var/www/html/modules/campaign_monitoring/index.php
modifique el index.php y busque esto
$oBreaks = new PaloSantoBreaks($pD
;
$oAgentes = new Agentes($pD
;
$listaAgentes = $oAgentes->getAgents();
y cambie por
$oBreaks = new PaloSantoBreaks($pD
;
$oAgentes = new Agentes($pD
;
//modificamos getAgenttodos para obtener agentes y calback hgmnetwork.com 29-07-2018
$listaAgentes = $oAgentes->getAgentsTodos();
luego en esa misma pagina
buscar debajo
foreach (array_keys($listaAgentes) as $k)
{
$agnum=split('/',$datos[$i][19]);
$nag=$listaAgentes[$k]['number'];
if ($nag==$agnum[1])
$issel="selected";
else
$issel="";
$miag.="<option value='$nag' $issel>Agent/$nag</option>";
}
y cambiar por
foreach (array_keys($listaAgentes) as $k)
{
$tipo=$listaAgentes[$k]['type'];
$numero=$listaAgentes[$k]['number'];
if ($listaAgentes[$k]['number']==$numero)
$issel="selected";
else
$issel="";
$miag.="<option value='$tipo/$numero' $issel>$tipo/$numero</option>";
}
luego en
/var/www/html/modules/agents/libs
vi /var/www/html/modules/agents/libs/Agentes.class.php
cree la función de agentes todos es básicamente una replica de la otra pero evitando mostrar solo Agentes así muestro todos agentes y Call back Activos y añadiendo el tipo de agente SIP o Agent y añado el tipo de agente ( type).
//funcion creada para obtener todos los agentes y extensiones call back loging hgmnetwork.com 29-07-2018
function getAgentsTodos($id=null)
{
// CONSULTA DE LA BASE DE DATOS LA INFORMACIÓN DE LOS AGENTES
$paramQuery = array(); $where = array("estatus = 'A'"); $sWhere = '';
if (!is_null($id)) {
$paramQuery[] = $id;
$where[] = 'number = ?';
}
if (count($where) > 0) $sWhere = 'WHERE '.join(' AND ', $where);
$sQuery =
"SELECT id, number, name, password, estatus, eccp_password,type ".
"FROM agent $sWhere ORDER BY number";
echo " query: $sQuery";
$arr_result =& $this->DB->fetchTable($sQuery, true, $paramQuery);
if (is_array($arr_result)) {
if (is_null($id) || count($arr_result) <= 0) {
return $arr_result;
} else {
return $arr_result[0];
}
} else {
$this->errMsg = 'Unable to read agent information - '.$this->DB->errMsg;
return NULL;
}
}
y listo ya obtenemos los agentes ( Agents y los callback login
)
otro pequeño cambio fue en lo que tenias
cambie
$agnum=split('/',$datos[$i][19]);
por
$agnum=explode('/',$datos[$i][19]);
ya que split esta obsoleto a partir de php 5 para evitar errores futuros
espero que sea de ayuda y guste
espero en estos dias tener un hueco para poder hacer lo del cambio con jquery si puedes ir haciendo tu un php o similar que se le pueda pasar por get valores como el id y el agente por ejemplo para actualizar la tabla de llamadas y que quede cambiado seria genial 
lo mismo para cambiar la fecha y hora de la llamada, espero en estos dias poder hacerlo, asi entre los dos lo dejamos terminado o al menos funcional al completo 