Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

${CDR(duration)} - пусто

0

Помогите получить длительность дозвона... Сборка 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)
удалить закрыть спам изменить тег редактировать

спросил 2017-08-10 14:50:01 +0400

wellus Gravatar wellus
49 19 10

Comments

Мне это нужно было, чтоб определить рабочее/не рабочее время. Если клиент выскочил из очереди, потому что там нет агентов - значит не рабочее, а если ждал 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 )редактировать

1 Ответ

1

https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+Function_CDR

Пробуйте CDR(start) и от онимите его от текущего времени.

сначала в epoch(количество секунд с начала эры) переведите, и от EPOCH отнимите.

https://www.voip-info.org/wiki/view/Asterisk+func+strptime

https://www.voip-info.org/wiki/view/Asterisk+func+strftime

ссылка удалить спам редактировать

ответил 2017-08-10 23:19:21 +0400

meral Gravatar meral flag of Ukraine
22367 24 20 173
http://pro-sip.net/

обновил 2017-08-10 23:21:59 +0400

Comments

Это хороший вариант. Возьму на заметку. Спасибо.

wellus ( 2017-08-11 09:11:42 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2017-08-10 14:50:01 +0400

Просмотрен: 52 раз

Обновлен: Aug 10

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.