Намедни обновился с 11 до 13 версии.
Обнаружил особенность работы CDR в 13 версии.
При совершении исходящих вызовов через транк с множеством номеров необходимо указать номер с которого будет осуществляться вызов, делается это так:
- Код: выделить все
...
exten => s,n,Set(extline=${DB(extline/${CALLERID(num)})}) ; если у абонента есть привязанный номер то подставляем его
exten => s,n,Execif($["test${extline}" = "test"]?Set(extline=8314351xyz)) ; если нет то подставляем дефолтный
exten => s,n,Set(CALLERID(num)=${extline})
...
exten => s,n(tryagain),Dial(SIP/rt_trunk/${ARG2},${ARG3},${ARG4})
...
В 11 версии по окончании вызова в CDR(src) пишется внутренний номер абонента.
В 13 версии по окончании вызова в CDR(src) пишется ${extline}.
В итоге Asterisk CDR Viewer Mod отображает исходящие не так как надо и процедура возврата с мобильного на внутренний отрабатывает не корректно, так как за основу возврата я брал именно CDR(src).
В общем то поправить процедуру возврата на мобильный на основе других полей(например clid или channel) не сложно, можно даже поправить и код CDR Viewer.
Однако, существует ли возможность вернуть прежний порядок записи CDR без отката версии Asterisk ? Возможно есть другой способ передачи CALLERID(num) в открываемый канал?