Принцип работы опишу, но Вам под себя подпилить придется.
Записываем в базу (в данном случае внутреннюю "родную" базу астериска) номер кому звоним. Потом при входящем звонке сверяем и маршрутизируем.
[outgoing]
exten => _98XXXXXXXXXX,1,Set(DB(outg/${EXTEN:2})=${CALLERID(num)}) #записываем в базу набираемый номер.
[call_back_to_caller] #Если звонок пришел от абонента, которому ранее звонил менеджер
exten => dfg,1,Dial(SIP/${DB(outg/${CALLERID(num)})},,Tt)
exten => dfg,n,Hangup
[inbound]
exten => ваш_внешний_номер,n,GotoIf(${DB_EXISTS(outg/${CALLERID(number)})}?call_back_to_caller,dfg,1:reception,cc,1) #сверяем наличие в базе номера и отправляем в соотвествующий экстеншн.
[reception] #если звонок приходит от любого другого номера, которого нет в базе)
exten => cc,1,Dial(SIP/1099,12,Tt)
Это рабочий вариант. Но, как сказал, вам надо подпилить под себя, и понятное дело, что здесь лишь те строчки, которые отвечают за логику в соотвествии с вашим вопросом. Так или иначе, ознакомьтесь с документацией по DB и DB_EXISTS и поработайте с записями в базе, чтоб было понимание.