Здравствуйте! Подскажите, в чем может быть причина, если отвеченный вызов выходит из очереди с CDR(disposition) = NO ANSWER. Проблема возникает только при полной загрузке, т.е. при добавление в очередь всех 6-ти операторов. Если в очереди 1 оператор, то проблемы нет - очередь закрывается с статусом ANSWERED.
UPD CDR(disposition) берет информацию от другого оператора, т.е. того кто не ответил. Есть идеи почему он может так безобразничать?
app_queue.c: SIP/209-00000004 connected line has changed. Saving it until answer for SIP/trunk-00000000
app_queue.c: SIP/209-00000004 answered SIP/trunk-00000000
res_musiconhold.c: Stopped music on hold on SIP/trunk-00000000
bridge_channel.c: Channel SIP/209-00000004 joined 'simple_bridge' basic-bridge <462b5ab2-822a-41bd-a888-abb20754a19f>
bridge_channel.c: Channel SIP/trunk-00000000 joined 'simple_bridge' basic-bridge <462b5ab2-822a-41bd-a888-abb20754a19f>
bridge_channel.c: Channel SIP/209-00000004 left 'simple_bridge' basic-bridge <462b5ab2-822a-41bd-a888-abb20754a19f>
bridge_channel.c: Channel SIP/trunk-00000000 left 'simple_bridge' basic-bridge <462b5ab2-822a-41bd-a888-abb20754a19f>
pbx.c: Spawn extension (ext-queues, 881, 40) exited non-zero on 'SIP/trunk-00000000'
pbx.c: Executing [h@ext-queues:1] Set("SIP/trunk-00000000", "WAITTIME=0") in new stack
pbx.c: Executing [h@ext-queues:2] Set("SIP/trunk-00000000", "CTALL=1") in new stack
pbx.c: Executing [h@ext-queues:3] Set("SIP/trunk-00000000", "CTANSWER=1") in new stack
pbx.c: Executing [h@ext-queues:4] Set("SIP/trunk-00000000", "CTDTIME=1") in new stack
pbx.c: Executing [h@ext-queues:5] NoOp("SIP/trunk-00000000", "NO ANSWER") in new stack
pbx.c: Executing [h@ext-queues:6] NoOp("SIP/trunk-00000000", "1") in new stack
pbx.c: Executing [h@ext-queues:7] NoOp("SIP/trunk-00000000", "SIP/210-00000006") in new stack
UPD2 Победить не удалось. Решил пойти другим путем; опишу его здесь - возможно кому-то поможет. Вызов отвечен, следовательно, какой-то оператор подключился, и мы имеем у этого ID признак "CONNECT" в базе.
Запрос к базе:
/etc/asterisk/func_odbc.conf
[queue]
dsn=asteriskcdrdb
readsql=SELECT `callid`,`event` FROM `queue_log` WHERE callid='${ARG1}' AND event='CONNECT' OR callid='${ARG1}' AND event='ABANDON'
Сравнение значения:
/etc/asterisk/extensions_override_freepbx.conf
exten => h,n,Set(ARRAY(var1,var2)=${ODBC_queue(${CDR(uniqueid)})})
exten => h,n,NoOP(${var2})
exten => h,n,GotoIf($["${var2}" != "CONNECT"]?misscall:n1)
exten => h,n(n1),GotoIf($["${var2}" = "CONNECT"]?hang)
смотрите queue_log
cdr для очереди, особенно в freepbx, малоинформативны.
Задан: Feb 15 '17
Просмотрен: 1,360 раз
Обновлен: Feb 23 '17
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
быть такого не может.
zzuz (Feb 15 '17)editсогласен, но это факт.
RedDevil (Feb 15 '17)editqueue_log не вариант, я не смотрю CDR, а беру значение переменной.
RedDevil (Feb 15 '17)edit