Помогите получить длительность дозвона... Сборка freePBX14 на asterisk14
входящий вызов попадает в annoncements -> queue где по Fail Over Destination отправляется в Custom Destination) -> 5-minunts-waiting,${EXTEN},1
[5-minunts-waiting]
exten => _.,1,NoOp(${CALLERID(number)})
exten => _.,n,NoOp(${CDR(duration)})
exten => _.,n,NoOp(${CDR(billsec)})
exten => _.,n,NoOp(${CDR(start)})
exten => _.,n,GotoIf($["${CDR(duration)}" > "30"]?hang:notwork)
exten => _.,n(hang),Goto(app-announcement-2,s,1)
exten => _.,n(notwork),Goto(app-announcement-3,s,1)
Так вот у меня ${CDR(duration)} и ${CDR(billsec)} = 0.
выдержки из лога
-- Executing [374176@from-pstn:1] NoOp("PJSIP/374176-00000037", "Catch-All DID Match - Found 374176 - You probably want a DID for this.") in new stack
...
-- Executing [s@ext-did:21] Goto("PJSIP/374176-00000037", "app-announcement-1,s,1") in new stack
-- Goto (app-announcement-1,s,1)
-- Executing [s@app-announcement-1:1] GotoIf("PJSIP/374176-00000037", "0?begin") in new stack
-- Executing [s@app-announcement-1:2] Answer("PJSIP/374176-00000037", "") in new stack
== Begin MixMonitor Recording PJSIP/374176-00000037
-- Executing [s@app-announcement-1:3] Wait("PJSIP/374176-00000037", "1") in new stack
-- Executing [s@app-announcement-1:4] NoOp("PJSIP/374176-00000037", "Playing announcement Privetstvie1") in new stack
-- Executing [s@app-announcement-1:5] Playback("PJSIP/374176-00000037", "custom/hi1,noanswer") in new stack
-- <PJSIP/374176-00000037> Playing 'custom/hi1.ulaw' (language 'ru')
-- Executing [s@app-announcement-1:6] Goto("PJSIP/374176-00000037", "ext-queues,0001,1") in new stack
-- Goto (ext-queues,0001,1)
...
-- Executing [0001@ext-queues:54] GotoIf("PJSIP/374176-00000037", "1?5-minunts-waiting,0001,1:,,") in new stack
-- Goto (5-minunts-waiting,0001,1)
-- Executing [0001@5-minunts-waiting:1] NoOp("PJSIP/374176-00000037", "234448") in new stack
-- Executing [0001@5-minunts-waiting:2] NoOp("PJSIP/374176-00000037", "0") in new stack **<- вот здесь хочу увидеть ${CDR(duration)}**
-- Executing [0001@5-minunts-waiting:3] NoOp("PJSIP/374176-00000037", "0") in new stack
-- Executing [0001@5-minunts-waiting:4] NoOp("PJSIP/374176-00000037", "2017-08-10 13:36:01") in new stack
-- Executing [0001@5-minunts-waiting:5] GotoIf("PJSIP/374176-00000037", "0?hang:notwork") in new stack
-- Goto (5-minunts-waiting,0001,7)
https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+Function_CDR
Пробуйте CDR(start) и от онимите его от текущего времени.
сначала в epoch(количество секунд с начала эры) переведите, и от EPOCH отнимите.
Задан: 2017-08-10 14:50:01 +0400
Просмотрен: 370 раз
Обновлен: Aug 10 '17
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Мне это нужно было, чтоб определить рабочее/не рабочее время. Если клиент выскочил из очереди, потому что там нет агентов - значит не рабочее, а если ждал 5 мин и ему не ответили, значит рабочее.
Решил проблему другой переменной.
exten => .,n,GotoIf($["${QUEUEMEMBER(0001,count)}" > "0"]?hang:notwork)
Хотя, очень хочется понять, почему ${CDR(duration)} и ${CDR(billsec)} = 0.
wellus ( 2017-08-10 17:20:43 +0400 )редактироватьвы забиваете гвозди микроскопом. можно запретить вход в очередь по отсутствию агентов. например. а CDR(duration) если не ошибаюсь, пишется после окончания канала.
someuserman ( 2017-08-10 17:52:41 +0400 )редактироватьможно, но что в вашем варианте, что в моем далее выполнится сценарий - fail over destination. А мне нужно различать причину fail over destination
wellus ( 2017-08-10 18:41:09 +0400 )редактировать