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 шлюз не используете?
Задан: 2014-09-16 13:44:07 +0400
Просмотрен: 247 раз
Обновлен: Sep 16 '14
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
так у вас вроде 5 попыток ?
awsswa ( 2014-09-16 13:55:12 +0400 )редактироватьпопыток-то 5, но он после первой неудачной (если линия занята), уже начинает иполнять контекст и удаляет call файл, считая, что вызов успешно выполнен, хотя по сути должен "уйти на второй круг". Если трубку не подыдмать, то идет повторный вызов, контекст не исполняется. Проблема только, когда линия занята, на которую дозваниваемся
nyll ( 2014-09-16 13:58:21 +0400 )редактироватьautodial-dial может покажете.
romariosar ( 2014-09-16 14:20:26 +0400 )редактировать[autodial-dial]
exten => _XXX,1,Playback(ozhidajte-soedinenija)
exten => _XXX,2,Dial(SIP/${EXTEN},,tT)
exten => _XXX,3,Hangup()
Так а что на него смотреть, когда он выполняться должен только в случае успешного дозвона?)
nyll ( 2014-09-16 14:50:35 +0400 )редактироватьromariosar,есть такое... шлюз gsm, но он вроде как дает отбой, но похоже, что АТС видит его позже, чем понимает, что номер телефона занят...
nyll ( 2014-09-16 16:21:14 +0400 )редактироватьну вы дебаг посмотрите а сразу поймете что у вас приходит от шлюза.
romariosar ( 2014-09-16 16:26:41 +0400 )редактироватьну все верно, шлюз сперва как я понял устанавливает соединение, а потом сразу его скидывает... Не подскажете, как вообще это можно обойти, не затрагивая настройки шлюза? Можно ли эту линию как-то грамотно отследить на состояние в самом контексте?
зы Заметил, что с городскими та же беда... Город по E1, шлюз и e1 и gsm - yeastar, внутри них только маршрутизация на сервер elastix...
nyll ( 2014-09-16 16:46:07 +0400 )редактироватьскорее всего придется вам ваши шлюзы донастраивать.
romariosar ( 2014-09-16 17:30:27 +0400 )редактироватьВсем спасибо. Решил проблему в транке на outgoing вместо type=peer поменял на type=friend, все стало на свои места :)
nyll ( 2014-09-16 17:40:30 +0400 )редактировать