VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Проблема с очередью если участники по IAX2

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
shadrint
Сообщения: 4
Зарегистрирован: 25 мар 2014, 08:47

Проблема с очередью если участники по IAX2

Сообщение shadrint »

Всем доброго времени!
Помогите пожалуйста разобраться.
Имеем 2 Asterisk соединенных по IAX2. На одном из серверов настроена очередь обработки входящих вызовов. Участники очереди добавляются через asterisk management interface. Если участник очереди с другой АТС и он занят - то очередь валится.

queues.conf

Код: Выделить всё

[general]
persistentmembers = yes
autofill = no
monitor-type = MixMonitor

[oit-work]
strategy = ringall
musicclass=default
servicelevel = 60
timeout = 20
retry = 1
wrapuptime = 0
autopause=no
maxlen = 0
setinterfacevar=yes ; TODO: check it!
joinempty = yes
eventwhencalled = no
eventmemberstatus = no
ringinuse = no
announce-holdtime = yes
announce-frequency = 15
Смотрим что добавлено в очередь
queue show oit-work
  • skl5-ast*CLI> queue show oit-work
    oit-work has 0 calls (max unlimited) in 'ringall' strategy (15s holdtime, 2s talktime), W:0, C:2, A:3, SL:100.0% within 60s
    Members:
    Local/1361@context-for-tehnical with penalty 1 (dynamic) (Not in use) has taken no calls yet
    Local/1461@context-for-tehnical with penalty 1 (dynamic) (Not in use) has taken no calls yet
как звоним и как попадаем в очередь:
extensions_custom.conf

Код: Выделить всё

[local-users]
exten => 2397,1,Answer
exten => 2397,n,Queue(oit-work,tT,,,300)
exten => 2397,n,Hangup


[context-for-tehnical]
exten => _1XXX,1,Macro(trunkdial,IAX2/sklad5:sklad5pass@192.168.2.8/${EXTEN})
exten => _1XXX,n,Hangup

[macro-trunkdial]
;
; Standard trunk dial macro (hangs up on a dialstatus that should
; terminate call)
;   ${ARG1} - What to dial
;
exten => s,1,Dial(${ARG1})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Hangup
exten => _s-.,1,NoOp
И собственно финал:
Имеем 2 участника из другой АТС, вызываются они по IAX2, если один из участников занять то очередь падает.
Если подключены участники по SIP, не важно внутренний номер этой АТС или внешний через SIP транк, то очередь не падает при любом из занятых.

Лог:
  • -- Executing [2397@context-for-all-users:1] Answer("IAX2/saratov-1098", "") in new stack
    -- Executing [2397@context-for-all-users:2] Queue("IAX2/saratov-1098", "oit-work,tT,,,300") in new stack
    -- Started music on hold, class 'default', on IAX2/saratov-1098
    -- Executing [1461@context-for-tehnical:1] Macro("Local/1461@context-for-tehnical-0000002a;2", "trunkdial,IAX2/sklad5:sklad5pass@192.168.2.8/1461") in n
    ew stack
    -- Executing [1361@context-for-tehnical:1] Macro("Local/1361@context-for-tehnical-0000002b;2", "trunkdial,IAX2/sklad5:sklad5pass@192.168.2.8/1361") in n
    ew stack
    -- Executing [s@macro-trunkdial:1] Dial("Local/1461@context-for-tehnical-0000002a;2", "IAX2/sklad5:sklad5pass@192.168.2.8/1461") in new stack
    -- Executing [s@macro-trunkdial:1] Dial("Local/1361@context-for-tehnical-0000002b;2", "IAX2/sklad5:sklad5pass@192.168.2.8/1361") in new stack
    -- Called IAX2/sklad5:sklad5pass@192.168.2.8/1461
    -- Called IAX2/sklad5:sklad5pass@192.168.2.8/1361
    -- Call accepted by 192.168.2.8 (format alaw)
    -- Format for call is alaw
    -- Call accepted by 192.168.2.8 (format alaw)
    -- Format for call is alaw
    -- IAX2/saratov-16211 answered Local/1461@context-for-tehnical-0000002a;2
    -- Local/1461@context-for-tehnical-0000002a;1 answered IAX2/saratov-1098
    -- Stopped music on hold on IAX2/saratov-1098
    -- Hungup 'IAX2/saratov-1596'
    == Spawn extension (macro-trunkdial, s, 1) exited non-zero on 'Local/1361@context-for-tehnical-0000002b;2' in macro 'trunkdial'
    == Spawn extension (context-for-tehnical, 1361, 1) exited non-zero on 'Local/1361@context-for-tehnical-0000002b;2'
    -- Hungup 'IAX2/saratov-16211'
    == Spawn extension (macro-trunkdial, s, 1) exited non-zero on 'Local/1461@context-for-tehnical-0000002a;2' in macro 'trunkdial'
    == Spawn extension (context-for-tehnical, 1461, 1) exited non-zero on 'Local/1461@context-for-tehnical-0000002a;2'
    == Spawn extension (context-for-all-users, 2397, 2) exited non-zero on 'IAX2/saratov-1098'
    -- Hungup 'IAX2/saratov-1098'
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Проблема с очередью если участники по IAX2

Сообщение ded »

Судя по extensions_custom.conf Вы ломаете freePBX собственными диалпланами, которые уже работают не так как надо.
Зачем создавать exten => 2397,n,Queue(oit-work,tT,,,300) если есть стандартный модуль Очереди со всеми параметрами?
Зачем передавать Macro(trunkdial,IAX2/sklad5:sklad5pass@192.168.2.8/${EXTEN}) - немыслимой строкой, в которой весь смысл мониторинга операторов очереди (InUse/Idle) ломается?
Вам надо завести внутренние номера 1XXX (там реально 900 человек могут работать?) как локальные Custom extensions, обозначить их именами, чтобы не путаться, указать Custom dial string
IAX2/sklad5:sklad5pass@192.168.2.8/1001
IAX2/sklad5:sklad5pass@192.168.2.8/1002
IAX2/sklad5:sklad5pass@192.168.2.8/1003
IAX2/sklad5:sklad5pass@192.168.2.8/1004
для каждого работника склада, не лениться, организовать их в очередь. И тогда всё будет красиво.
Или забить болт с левой резьбой в эту дырку, и не гимориться.
shadrint
Сообщения: 4
Зарегистрирован: 25 мар 2014, 08:47

Re: Проблема с очередью если участники по IAX2

Сообщение shadrint »

Может проблема во втором asterisk'е, к сожелению доступа туда нет
но вот код которым набираются внутренние номера:

Код: Выделить всё

[macro-stdexten];
include => post-hangup
exten => s,1,Set(__BLINDTRANSFER=${BLINDTRANSFER})
exten => s,n,Set(CF_TYPE=uncond)
;exten => s,n,ExecIf($["${FROM_OUTSIDE}" != "1"]?Gosub(activate-user,${CALLERID(num)},1)) ;.
exten => s,n,Gosub(check-meetme,${MACRO_EXTEN},1)
exten => s,n,Gosub(check-cf,${MACRO_EXTEN},1)
exten => s,n,Gosub(check-dnd,${MACRO_EXTEN},1)
exten => s,n,Gosub(call-record,${MACRO_EXTEN},1)  ; Включение\отключение записи
exten => s,n,Gosub(check-simult,${MACRO_EXTEN},1)
exten => s,n,ExecIf($[ "${FROM_OUTSIDE}" != "1"]?Set(INDIAL_OPTS=${INDIAL_OPTS}${OUTDIAL_OPTS})); combine opts for internal calls
exten => s,n,Set(DIAL_TIMEOUT=${DB(dial_timeout/${MACRO_EXTEN})})............................................
exten => s,n,ExecIf($[ "${DIAL_TIMEOUT}" = "" ]?Set(DIAL_TIMEOUT=${INDIAL_TIMEOUT}))
exten => s,n,Dial(${ARG1}/${ARG2},${INDIAL_TIMEOUT},${INDIAL_OPTS})
exten => s,n,ExecIf($["${BLINDTRANSFER}" != ""]?Dial(${CUT(BLINDTRANSFER,-,1)},${INDIAL_TIMEOUT},${INDIAL_OPTS}))
exten => s,n,Goto(s-${DIALSTATUS},1).
exten => s-NOANSWER,1,Set(CF_TYPE=onunavail)
exten => s-NOANSWER,2,Gosub(check-cf,${MACRO_EXTEN},1)
exten => s-NOANSWER,3,Voicemail(${ARG2},u)
exten => s-NOANSWER,104,Answer
exten => s-NOANSWER,105,Wait(${AFTER_ANSWER_PAUSE})
exten => s-NOANSWER,106,Playback(abonent)
exten => s-NOANSWER,107,Playback(ne-otvechaet)
exten => s-NOANSWER,108,Hangup
exten => s-BUSY,1,Set(CF_TYPE=onbusy)
exten => s-BUSY,2,Gosub(check-cf,${MACRO_EXTEN},1)
exten => s-BUSY,3,Voicemail(${ARG2},bj).
exten => s-BUSY,104,Answer
exten => s-BUSY,105,Playtones(busy)
exten => s-BUSY,106,Wait(5)
exten => s-BUSY,107,Hangup
exten => s-CHANUNAVAIL,1,Set(CF_TYPE=onunavail)
;exten => s-CHANUNAVAIL,n,Gosub(check-cf,${MACRO_EXTEN},1)
;exten => s-CHANUNAVAIL,n,Gosub(menu-user-unavail,s-${MACRO_EXTEN},1) - personal menu for user, disabled by default
exten => s-CHANUNAVAIL,n,Answer
exten => s-CHANUNAVAIL,n,Wait(${AFTER_ANSWER_PAUSE})
exten => s-CHANUNAVAIL,n(vm),Voicemail(${ARG2},u)
exten => s-CHANUNAVAIL,n,Return
exten => s-CHANUNAVAIL,vm+101,Playback(abonent)
exten => s-CHANUNAVAIL,vm+102,Playback(ne-podkljuchen)
exten => s-CHANUNAVAIL,vm+103,Return
exten => _s-.,1,Goto(s-NOANSWER,1)
как видно что при занято идет ответ каналу или я ошибаюсь
exten => s-BUSY,104,Answer
exten => s-BUSY,105,Playtones(busy)
exten => s-BUSY,106,Wait(5)
exten => s-BUSY,107,Hangup
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Проблема с очередью если участники по IAX2

Сообщение ded »

Я повторюсь, ибо Вы это как будто не видите, не читаете:
ded писал(а):Судя по extensions_custom.conf Вы ломаете freePBX собственными диалпланами, которые уже работают не так как надо.
Зачем создавать exten => 2397,n,Queue(oit-work,tT,,,300) если есть стандартный модуль Очереди со всеми параметрами?
Зачем передавать Macro(trunkdial,IAX2/sklad5:sklad5pass@192.168.2.8/${EXTEN}) - немыслимой строкой, в которой весь смысл мониторинга операторов очереди (InUse/Idle) ломается?
Вам надо завести внутренние номера 1XXX (там реально 900 человек могут работать?) как локальные Custom extensions, обозначить их именами, чтобы не путаться, указать Custom dial string
IAX2/sklad5:sklad5pass@192.168.2.8/1001
IAX2/sklad5:sklad5pass@192.168.2.8/1002
IAX2/sklad5:sklad5pass@192.168.2.8/1003
IAX2/sklad5:sklad5pass@192.168.2.8/1004
для каждого работника склада, не лениться, организовать их в очередь. И тогда всё будет красиво.
Или забить болт с левой резьбой в эту дырку, и не гимориться.
shadrint
Сообщения: 4
Зарегистрирован: 25 мар 2014, 08:47

Re: Проблема с очередью если участники по IAX2

Сообщение shadrint »

К сожелению не FreePBX а AstPbx. По крайней мере конфиги от туда и обнавлен до 1.8
exten => 2397,n,Queue(oit-work,tT,,,300) создан для теста

тут немного не понятно
Вам надо завести внутренние номера 1XXX (там реально 900 человек могут работать?) как локальные Custom extensions, обозначить их именами, чтобы не путаться, указать Custom dial string
там реально под 600 чел сидят.
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Проблема с очередью если участники по IAX2

Сообщение ded »

Ну не все же 600 являются операторами очереди!
Определите кто является агентами (операторами) в этой очереди, и создайте для них внутренние номера без всяких макросов
exten => _100X,1,Dial(IAX2/sklad5:sklad5pass@192.168.2.8/${EXTEN})
shadrint
Сообщения: 4
Зарегистрирован: 25 мар 2014, 08:47

Re: Проблема с очередью если участники по IAX2

Сообщение shadrint »

Спасибо ded!!!
Чтобы не ломать созданное не мной в очереди добавляю
допустим
Local/6001361@context-for-tehnical
в [context-for-tehnical] добавил
exten => _6001XXX,1,Dial(IAX2/sklad5:sklad5pass@192.168.2.8/${EXTEN})

На АТС 192.168.2.8 соответственно добавил
exten => _6001XXX,1,Dial(SIP/${EXTEN:3})

Макросы во всем виноваты
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH