В качестве телефона оператора колл-центра, мы выбрали телефон Grandstream GXP-2020. К нему подключаются дополнительные блоки кнопок и он умеет показывать статус линии (занята/свободна). Именно этим статусом и займемся.
Сначала добавим в таблицу tbl_sip_conf два столбца:
subscribecontext varchar(80) NOT NULL default 'sip_subscribe'
Первый позволит уведомлять телефон колл-центра не только о разговаривающих абонентах, но и об абонентах, которым звонят. Второй предназначен для задания контекста, в который будет направляться телефон при подписке.
Из-за того, что указание в диалплане метки hint(а именно она нам и нужна) нельзя использовать шаблоны, придется немного схитрить.
В основной контекст я добавил следующие строки (они включают внешний файл /etc/asterisk/rittal/hints.conf):
#include /etc/asterisk/rittal/hints.conf
Для формирования этого файла из базы я использовал скрипт
// добавляем в мониторинг (hints)
// все записи из tbl_sip_conf
$file_content="";
$SQL="SELECT name FROM tbl_sip_conf";
$rez_sql=mysql_query($SQL);
while ($row = mysql_fetch_assoc($rez_sql))
{
$file_content=$file_content.'exten=> '.$row['name'].',hint,SIP/'
.$row['name']."\r\n";
}
$fh = fopen('/etc/asterisk/rittal/hints.conf', 'w') or die("can't open file");
fwrite($fh, $file_content);
fclose($fh);
// в конце - перегрузим sip на астериске
shell_exec('sudo /usr/sbin/asterisk -rx "sip reload"');
?>
Этот скрипт создает файл вида
exten=> 1261,hint,SIP/1261
Теперь осталось в настройках телефона прописать на кнопку мониторинг.