call файл исполняется замечательно, за одним исключением: в случае, если линия, на которую совершаем вызов, занята, он все равно исполняет контекст. Так и задумано? либо где-то я ошибся? И не совсем ясно, почему контекст начинает исполняться ДО того, как понимает, что линия занята... Можно ли это как-то вылечить? сборка elastix
К примеру звоним на номер 85700293, срабатывает handup, но уже перед ним идет исполнение контекста autodial-dial, хотя по сути номер телефона занят
-- IAX2/gsm-13171 is making progress passing it to Local/85700293@from-internal-000004aa;2
-- IAX2/gsm-13171 answered Local/85700293@from-internal-000004aa;2
-- Executing [666@autodial-dial:1] Playback("Local/85700293@from-internal-000004aa;1", "ozhidajte-soedinenija") in new stack
-- <Local/85700293@from-internal-000004aa;1> Playing 'ozhidajte-soedinenija.slin' (language 'ru')
-- Executing [h@from-internal:1] Macro("Local/85700293@from-internal-000004aa;2", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("Local/85700293@from-internal-000004aa;2", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("Local/85700293@from-internal-000004aa;2", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("Local/85700293@from-internal-000004aa;2", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,28)
-- Executing [s@macro-hangupcall:28] NoOp("Local/85700293@from-internal-000004aa;2", "End of MEETME check") in new stack
-- Executing [s@macro-hangupcall:29] GotoIf("Local/85700293@from-internal-000004aa;2", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] NoOp("Local/85700293@from-internal-000004aa;2", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:35] GotoIf("Local/85700293@from-internal-000004aa;2", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,41)
-- Executing [s@macro-hangupcall:41] NoOp("Local/85700293@from-internal-000004aa;2", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:42] GotoIf("Local/85700293@from-internal-000004aa;2", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,45)
-- Executing [s@macro-hangupcall:45] GotoIf("Local/85700293@from-internal-000004aa;2", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,48)
-- Executing [s@macro-hangupcall:48] GotoIf("Local/85700293@from-internal-000004aa;2", "1?theend") in new stack
-- Goto (macro-hangupcall,s,50)
-- Executing [s@macro-hangupcall:50] AGI("Local/85700293@from-internal-000004aa;2", "hangup.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
-- <Local/85700293@from-internal-000004aa;2>AGI Script hangup.agi completed, returning 0
-- Executing [s@macro-hangupcall:51] Hangup("Local/85700293@from-internal-000004aa;2", "") in new stack
== Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'Local/85700293@from-internal-000004aa;2' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'Local/85700293@from-internal-000004aa;2'
== Spawn extension (from-internal, 85700293, 5) exited non-zero on 'Local/85700293@from-internal-000004aa;2'
-- Executing [666@autodial-dial:2] Dial("IAX2/gsm-13171", "SIP/666,,tT") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/666
call файл такой:
Channel: local/85700293@from-internal
MaxRetries: 5
RetryTime: 60
WaitTime: 30
Callerid: "85700293" <666>
Context: autodial-dial
Extension: 666
Priority: 1
ну так у вас происходит ответ:
IAX2/gsm-13171 answered Local/85700293@from-internal-000004aa;2
разбирайтесь почему у канал сразу в статусе Answer, вы случаем GSM шлюз не используете?
Задан: Sep 16 '14
Просмотрен: 251 раз
Обновлен: Sep 16 '14
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
так у вас вроде 5 попыток ?
awsswa (Sep 16 '14)editпопыток-то 5, но он после первой неудачной (если линия занята), уже начинает иполнять контекст и удаляет call файл, считая, что вызов успешно выполнен, хотя по сути должен "уйти на второй круг". Если трубку не подыдмать, то идет повторный вызов, контекст не исполняется. Проблема только, когда линия занята, на которую дозваниваемся
nyll (Sep 16 '14)editautodial-dial может покажете.
romariosar (Sep 16 '14)edit[autodial-dial]
exten => _XXX,1,Playback(ozhidajte-soedinenija)
exten => _XXX,2,Dial(SIP/${EXTEN},,tT)
exten => _XXX,3,Hangup()
Так а что на него смотреть, когда он выполняться должен только в случае успешного дозвона?)
nyll (Sep 16 '14)editromariosar,есть такое... шлюз gsm, но он вроде как дает отбой, но похоже, что АТС видит его позже, чем понимает, что номер телефона занят...
nyll (Sep 16 '14)editну вы дебаг посмотрите а сразу поймете что у вас приходит от шлюза.
romariosar (Sep 16 '14)editну все верно, шлюз сперва как я понял устанавливает соединение, а потом сразу его скидывает... Не подскажете, как вообще это можно обойти, не затрагивая настройки шлюза? Можно ли эту линию как-то грамотно отследить на состояние в самом контексте?
зы Заметил, что с городскими та же беда... Город по E1, шлюз и e1 и gsm - yeastar, внутри них только маршрутизация на сервер elastix...
nyll (Sep 16 '14)editскорее всего придется вам ваши шлюзы донастраивать.
romariosar (Sep 16 '14)editВсем спасибо. Решил проблему в транке на outgoing вместо type=peer поменял на type=friend, все стало на свои места :)
nyll (Sep 16 '14)edit