This help me to make the round-robin on trunks of outbound route.
We can add into /admin/modules/core/functions.inc.php instead (lines from line 1802 )
…
foreach ($trunks as $trunk_id) {
if (isset($trunk_table[$trunk_id])) switch(strtolower($trunk_table[$trunk_id][‘tech’])) {
case ‘dundi’:
$trunk_macro = ‘dialout-dundi’;
break;
case ‘enum’:
$trunk_macro = ‘dialout-enum’;
break;
default:
$trunk_macro = ‘dialout-trunk’;
break;
}
$ext->add($context, $exten, ‘’, new ext_macro($trunk_macro,$trunk_id.’,’.$pattern[‘prepend_digits’].’${EXTEN’.$offset.’},’.$password));
$password = ‘’;
}
…
following lines:
…
$nl = 1;
$dbrt = $route['name'].'/trunk'; //DB family key the number of current trunk of outboud route trunks
$cnt_trunks = count($trunks);
$ext->add($context, $exten, '', new ext_gotoif('$[${DB_EXISTS('.$dbrt.')} = 1]','dbexist'));
$ext->add($context, $exten, '', new ext_setvar('DB('.$dbrt.')',1));
$ext->add($context, $exten, 'dbexist', new ext_noop('DB '.$dbrt.' has value: ${DB('.$dbrt.')}'));
$ext->add($context, $exten, 'dbexist', new ext_gotoif('$[${DB('.$dbrt.')} != 0]','dbok'));
$ext->add($context, $exten, '', new ext_setvar('DB('.$dbrt.')',1));
$ext->add($context, $exten, 'dbok', new ext_noop('DB '.$dbrt.' has value: ${DB('.$dbrt.')}'));
$ext->add($context, $exten, 'dbok', new ext_gotoif('$[${DB('.$dbrt.')} <= '.$cnt_trunks.']','dbok1'));
$ext->add($context, $exten, '', new ext_setvar('DB('.$dbrt.')',1));
$ext->add($context, $exten, 'dbok1', new ext_noop('DB '.$dbrt.' has value: ${DB('.$dbrt.')}'));
foreach ($trunks as $trunk_id) {
$ext->add($context, $exten, '', new ext_gotoif('$[${DB('.$dbrt.')} = '.$nl.']', 'tr'.$nl));
$nl=$nl+1;
}
$nl=1;
foreach ($trunks as $trunk_id) {
if (isset($trunk_table[$trunk_id])) switch(strtolower($trunk_table[$trunk_id]['tech'])) {
case 'dundi':
$trunk_macro = 'dialout-dundi';
break;
case 'enum':
$trunk_macro = 'dialout-enum';
break;
default:
$trunk_macro = 'dialout-trunk';
break;
}
$ext->add($context, $exten, 'tr'.$nl, new ext_setvar('DB('.$dbrt.')','$[${DB('.$dbrt.')}+1]'));
$ext->add($context, $exten, '', new ext_macro($trunk_macro,$trunk_id.','.$pattern['prepend_digits'].'${EXTEN'.$offset.'},'.$password));
$nl = $nl + 1;
$password = '';
}
…
and we get the following lines in the extensions_additional.conf
…
[outrt-7] ; Mobile
include => outrt-7-custom
exten => _039XXXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _039XXXXXXX,n,Noop(Calling Out Route: Mobile)
exten => _039XXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _039XXXXXXX,n,Set(_NODEST=)
exten => _039XXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _039XXXXXXX,n,GotoIf($[${DB_EXISTS(Mobile/trunk)} = 1]?dbexist)
exten => _039XXXXXXX,n,Set(DB(Mobile/trunk)=1)
exten => _039XXXXXXX,n(dbexist),GotoIf($[${DB(Mobile/trunk)} != 0]?dbok)
exten => _039XXXXXXX,n,Set(DB(Mobile/trunk)=1)
exten => _039XXXXXXX,n(dbok),GotoIf($[${DB(Mobile/trunk)} <= 2]?dbok1)
exten => _039XXXXXXX,n,Set(DB(Mobile/trunk)=1)
exten => _039XXXXXXX,n(dbok1),Noop(DB Mobile/trunk info - Next Trunk is: ${DB(Mobile/trunk)})
exten => _039XXXXXXX,n,GotoIf($[${DB(Mobile/trunk)} = 1]?tr1)
exten => _039XXXXXXX,n,GotoIf($[${DB(Mobile/trunk)} = 2]?tr2)
exten => _039XXXXXXX,n(tr1),Set(DB(Mobile/trunk)=$[${DB(Mobile/trunk)}+1])
exten => _039XXXXXXX,n,Macro(dialout-trunk,8,${EXTEN},)
exten => _039XXXXXXX,n(tr2),Set(DB(Mobile/trunk)=$[${DB(Mobile/trunk)}+1])
exten => _039XXXXXXX,n,Macro(dialout-trunk,9,${EXTEN},)
exten => _039XXXXXXX,n,Macro(outisbusy,)
…
And then we can add checkbox on the page.routing.php and set variable that stored in the mysql.
And control round-robin trunks of outbound route.