Похожая схема работает у меня уже год
если callerID получен от звоняшего абонента
пишем приложение (благо в аскозии это удобно делать)
которое пишет в базу этот номер как ключ в отдельную ветку
а значением ключа назначаем внутрений номер (если он ранее не был сопоставлен с другим внутреним номером)
далее в редакторе маршрута при входяшем звонке проверяем базу на наличие номера звонящего если таковая запись существует то перенаправляем звонок на значение ключа из базы которое является внутреним номером
таких приложений использую несколько
к примеру
7xxxxxxxxxx привязать набираемый федеральный номер к телефону с каторого его набирали
8хххххххххх просто позвонить на федеральный номер без привязки
87хххххххххх отвязать привязаный номер от телефона к которому он был привязан далее голосовое меню
тут что угодно , привязать к другому номеру, удалить, заблокировать связь на сутки, временно переадресовывать на другой номер и тд и тп (на сколько фантазии хватит)
00хххххххххх удалить федеральный номер из базы
вот както так.
.