Здравствуйте! Подскажите, в чем может быть причина, если отвеченный вызов выходит из очереди с 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, малоинформативны.
Задан: 2017-02-15 15:44:03 +0400
Просмотрен: 1,348 раз
Обновлен: Feb 23 '17
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
быть такого не может.
zzuz ( 2017-02-15 17:02:32 +0400 )редактироватьсогласен, но это факт.
RedDevil ( 2017-02-15 17:09:21 +0400 )редактироватьqueue_log не вариант, я не смотрю CDR, а беру значение переменной.
RedDevil ( 2017-02-15 18:31:23 +0400 )редактировать