CDR не формируется для dial
Добавлено: 10 янв 2018, 10:46
Есть куча точек входа, сформированных вот так
в нашей процедуре делается вызов Dial c параметрами + макрос для записи разговора
И в логах, и в отчетах переменная total_time почему-то всегда устанавливается в 0.
1) Нашел упоминание в https://www.voip-info.org/wiki/view/Asterisk+cmd+Dial что если мы внутри макроса, то CDR не формируется. Но мы не внутри макроса, он отработал и мы уже снаружи, в процедуре.
2) Попробовал через явное вычисление двух меток времени ${EPOCH} - как разница в начале и в конце разговора, но макрос callLogOutAgent и процедура выполняется для оператора и клиента соответственно, метки ставятся, но в разных контекстах, в h не видны одновременно.
Как это сделать попроще и адекватно?
Код: Выделить всё
сетапим кучу переменных
exten => _XXXXXXXXXX,n,GoSub(goCallManual,s,1)
[goCallManual]
exten => s,1,NoOp(); для ручного вызова. переменные уже установлены
exten => s,n,Set(__MIXMONITOR_FILENAME=unsorted/_-${SIPID}-${EPOCH}-${callphone}.wav)
exten => s,n,Dial(SIP/${account}/+${callphone},3600,M(callLogOutAgent)gec)
exten => s,n,Hangup
exten => h,1,NoOp();
exten => h,n,Set(__total_time=${CDR(duration)})
Код: Выделить всё
[macro-callLogOutAgent]
exten => s,1,NoOp();
exten => s,n,MixMonitor(${MIXMONITOR_FILENAME},b,report_talk.php ${CONSOLE_PARAMS} &);
1) Нашел упоминание в https://www.voip-info.org/wiki/view/Asterisk+cmd+Dial что если мы внутри макроса, то CDR не формируется. Но мы не внутри макроса, он отработал и мы уже снаружи, в процедуре.
2) Попробовал через явное вычисление двух меток времени ${EPOCH} - как разница в начале и в конце разговора, но макрос callLogOutAgent и процедура выполняется для оператора и клиента соответственно, метки ставятся, но в разных контекстах, в h не видны одновременно.
Как это сделать попроще и адекватно?