Перерыл массу форумов, но не могу взять в толк, можно так сделать или нет:
Два абонента, внутренний и внешний соединяются с помощью Originate (по AMI или из диалплана или из консоли, не важно, результат один).
И проблема следующая: начиная с Астериска 12-13 статус звонка в CDR считается Answered (и начинают тикать billsec), когда трубку берет первый вызываемый абонент.
На Астериске 11 и ранее звонок начинал считаться Answered, когда трубку брал второй абонент, и устанавливался bridge между двумя каналами.
На форуме астера люди так и не смогли победить, разрабы уклончиво отвечают, что типа так и должно быть. Кто-то говорит юзать CEL.
Перепробовал все советы из инета, какими костылями обойти, ничего не помогло. Пробовал:
- Nocdr / CDR_PROP("disable") + локальные каналы --отключал cdr звонящего, просто запись CDR отсутствует
ResetCDR со всеми комбинациями ключей --просто секунды тикают с момента ResetCDR, а не с ответа вызываемого. Если ответа вызываемого нет, то получаем NO_ANSWER и billsec > 0
ForkCDR со всеми комбинациями ключей --почти те же яица, только в профиль
CDR_PROP("party_a") = "true"/"false" менять местами абонентов --ноль реакции
Вызов через локальные каналы (/n) --никаких изменений
Dial с опцией C --почти то же самое, что ResetCDR
Читал https://wiki.asterisk.org/wiki/display/ ... cification, в примере "Local channel between bridges" всё по красоте, но у меня как у них записи CDR не формируются, время ответа не равно времени соединения абонентов, а равно времени нахождения первого абонента на линии.
У кого-то это работает? Что я делаю не так? Как сделать, чтобы первый абонент после поднятия трубки (никаких answer() в диалплане нет) не менял статус канала на answered и не запускал счетчик billsec? Если официальных путей нет, то костыли тоже приветствуются.