Добрый день.
имею: asterisk 14 с настроенным модулем cdr_adaptive (postgre)
Хочу: логгировать в базу адекватные CDR в случае, если абонент сделал attended transfer (Хотя бы исходящий абонента "Б" и исходящий от абонента "А" после перевода).
Логика такова:
абонент "А" звонит абоненту "Б" - создается канал (заполняется всякими переменными), формируется 1 CDR запись. Тут проблем нет (пока).
Затем абонент Б делает attended transfer абоненту "В", общается с ним какое-то время и кладет трубку.
Создаются 3 CDR записи, из которых одна - исходящий звонок "Б"-"В" (ловлю её и заполняю нужными переменными с помощью AGI в момент Hangup абонента "Б",
используя h - extension )
А далее, нерешаемая проблема:
после того, как абонент "А" поговорит с абонентом "С" (кладет трубку) с помощью той же h - extension, я формирую CDR запись успешно переведенного звонка с правильнйо длительностью, но ! Остальные переменные канала остаются точно такими же, как и до осуществления перевода. и по записи этой не ясно, был ли вообще
attended transfer или нет.
PS. Читал вот это: https://wiki.asterisk.org/wiki/display/ ... cification
И это: https://wiki.asterisk.org/wiki/display/ ... ation_Dial
Суть проихсходящего то ясна. Не ясно только как именно (в каком месте диалплана) можно управлять переменными из которых формуруются все CDR (при attended transfer). Т. е. как модифицировать переменные самого начального канала, чтобы он "знал", что он уже не входищий от абонента "А", а исходящий от абонента "Б"?
Смотрел в консоль при cdr set debug on. Интересующий меня момент - когда абонент "Б" кладет трубку. Но дальше, не получается.
PPSS. Смотрел в сторону CEL - 30 записей за один attended transfer - это круто.