VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Originate и корректный billsec в CDR

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
aclz
Сообщения: 14
Зарегистрирован: 03 апр 2014, 19:07

Originate и корректный billsec в CDR

Сообщение aclz »

День добрый.

Перерыл массу форумов, но не могу взять в толк, можно так сделать или нет:

Два абонента, внутренний и внешний соединяются с помощью 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
Делал вышеперечисленное как перед Dial на внешнего абонента, так и в обработчиках по ключам "b" и "B" как у app.dial(), так и у app.originate().

Читал https://wiki.asterisk.org/wiki/display/ ... cification, в примере "Local channel between bridges" всё по красоте, но у меня как у них записи CDR не формируются, время ответа не равно времени соединения абонентов, а равно времени нахождения первого абонента на линии.

У кого-то это работает? Что я делаю не так? Как сделать, чтобы первый абонент после поднятия трубки (никаких answer() в диалплане нет) не менял статус канала на answered и не запускал счетчик billsec? :oops: Если официальных путей нет, то костыли тоже приветствуются.
aclz
Сообщения: 14
Зарегистрирован: 03 апр 2014, 19:07

Re: Originate и корректный billsec в CDR

Сообщение aclz »

Если несколько переформулировать проблему:

1. Когда я напрямую звоню с экстеншена Х на экстеншен Y, то пока идет вызов второго абонента, у канала X статус Ring, у канала Y - Ringing. Поэтому биллинг не начинается, пока второй абонент не поднимет трубку.

2. Когда я звоню с экстеншена Х на экстеншен Y через originate, то пока идет вызов второго абонента, у канала X статус уже Up, у канала Y - Ringing. Поэтому биллинг уже запущен и тикает ещё до того, как второй абонент поднял трубку.

Если бы как-то можно было повлиять на такой характер работы и привести вариант 2 к варианту 1...
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Originate и корректный billsec в CDR

Сообщение Zavr2008 »

В опциях Dial при originate макрос при Answer - там уже просто и сохранять в своей БД таймстемп и uniqueid. Также в CDR в юзерфилд как вариант.
Также где-то юзал просто запись в переменную, далее при Hangup в хандлере и разруливал.
Тоже думал глюк какой-то.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
aclz
Сообщения: 14
Зарегистрирован: 03 апр 2014, 19:07

Re: Originate и корректный billsec в CDR

Сообщение aclz »

Спасибо, из общения на официальном форуме и курения сурсов для себя тоже сделал вывод, что это единственный приемлемый вариант. Второй вариант: написать свое приложение диалплана по образу и подобию ResetCDR, но с возможностью сброса/установки руками поля answer из макроса, и тогда при финализации CDR billsec посчитается относительно нового значения answer.

То, что разрабы с момента выхода Астера 13 отпинываются от проблемы, это, конечно, печалька :roll:
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Originate и корректный billsec в CDR

Сообщение Zavr2008 »

Свое приложение это конечно хорошо, только сразу тонны проблем - обновления астера и необходимость пересборки своего C-кода вместе с ним ну или свой реп с данным обновлением итп.
так что костыль забиваем и давим на мозоль ребятам из Сангомы)
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH