ВидеоКонф(ВКС)  ::   Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы и их решения Asterisk как такового

Модератор: april22

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

Сообщение aclz » 22 янв 2022, 13:53

День добрый.

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

Два абонента, внутренний и внешний соединяются с помощью 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/AST/Asterisk+12+CDR+Specification, в примере "Local channel between bridges" всё по красоте, но у меня как у них записи CDR не формируются, время ответа не равно времени соединения абонентов, а равно времени нахождения первого абонента на линии.

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

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

Сообщение aclz » 24 янв 2022, 00:40

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

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

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

Если бы как-то можно было повлиять на такой характер работы и привести вариант 2 к варианту 1...
aclz
 
Сообщений: 14
Зарегистрирован: 03 апр 2014, 19:07

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

Сообщение Zavr2008 » 24 янв 2022, 01:09

В опциях Dial при originate макрос при Answer - там уже просто и сохранять в своей БД таймстемп и uniqueid. Также в CDR в юзерфилд как вариант.
Также где-то юзал просто запись в переменную, далее при Hangup в хандлере и разруливал.
Тоже думал глюк какой-то.
Российские шлюзы E1 Alvis-GW. Voip-Модернизация УПАТС, FreePBX, CRM. Продолжаем работать, импортозамещаем!
Аватар пользователя
Zavr2008
 
Сообщений: 1940
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение aclz » 25 янв 2022, 18:42

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

То, что разрабы с момента выхода Астера 13 отпинываются от проблемы, это, конечно, печалька :roll:
aclz
 
Сообщений: 14
Зарегистрирован: 03 апр 2014, 19:07

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

Сообщение Zavr2008 » 26 янв 2022, 00:01

Свое приложение это конечно хорошо, только сразу тонны проблем - обновления астера и необходимость пересборки своего C-кода вместе с ним ну или свой реп с данным обновлением итп.
так что костыль забиваем и давим на мозоль ребятам из Сангомы)
Российские шлюзы E1 Alvis-GW. Voip-Модернизация УПАТС, FreePBX, CRM. Продолжаем работать, импортозамещаем!
Аватар пользователя
Zavr2008
 
Сообщений: 1940
Зарегистрирован: 27 янв 2011, 01:35


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

© 2008 — 2022 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH