У нас на фирме кроме нескольких софт-фонов, есть подавляюще большиснтво SIP телефонов Sipura SPA-941 на две линии. Отличные аппараты ничего не скажешь. Так вот захотелось что бы на них при входящем звонке, определялся не только CellerID, но и, какая то другая информация (ФИО, фирма, отдел). Очевидно что такой функционал можно будет сделать на стороне Asterisk.
Погуглив по интернету пришел к выводу что задача имеет несколько решений. Из которых был выбран наиболее простой с моей стороны. Суть заключается в следующем, создается и заполняется некая таблица в базе данных с парами значений телефон-имя. При входящем звонке, Asterisk будет смотреть базу и при наличии номера выводить на экран телефона, в нагрузку к CallerID и дополнительную информацию по нему.
Итак создадим базу, в которой создадим таблицу, в которой будет находится адресная книга, из которой будет брать Asterisk данные. Структура таблиы будет следующая:

CREATE TABLE `t_book` (
  `id` int(9) unsigned NOT NULL AUTO_INCREMENT,
  `phone` varchar(80) NOT NULL DEFAULT '',
  `name` varchar(80) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `phone` (`phone`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

Теперь настроим диалплан в Asterisk. Редактируем файл extensions.conf. Уменя входящие звонки попадают в контекст – check_number. Если некоторые комманды диалплана не понятны, лучше обратиться к документации по Asterisk.

[check_number]

exten => s,1,NoOp(================ Incoming call from ${CALLERID(number)} to: ${SIP_HEADER(TO):5:6})
exten => s,n,GotoIf($[  ${LEN(${CALLERID(number)})} > 6 ]?mob:gorod)
exten => s,n(mob),Set(_MY_NUM=373${IF($[ ${CALLERID(number):0:1} = 0]?${CALLERID(number):1}:${CALLERID(number)})})                      

exten => s,n,Goto(check_number,s,mysql)

exten => s,n(gorod),Set(__MY_NUM=37322${CALLERID(number)})}

exten => s,n(mysql),MYSQL(Connect connid localhost asterisk_user Some_
Password09 address_book)

exten => s,n,MYSQL(Query resultid ${connid} SELECT phone,name FROM address_book.t_book WHERE phone=${MY_NUM} LIMIT 1)
exten => s,n,MYSQL(Fetch fetchid ${resultid} MY_PHONE MY_NAME)
exten => s,n,GotoIf($["${fetchid}" = "1"]?s,found)
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,Goto(inbound_otdel,${SIP_HEADER(TO):5:6},1)

exten => s,n(found),NoOP(===${MY_PHONE}  ===${MY_NAME})
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,Set(CALLERID(all)=${MY_NAME} <${CALLERID(number)}>)
exten => s,n,Goto(inbound_odtel,${SIP_HEADER(TO):5:6},1)
exten => s,n,Hangup()

Все база создана и дилплан на работу с ней отредактирован, осталось только наполинть базу.