AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Проблема с выполнением AGI после очереди [РЕШЕНО]

Asterisk IP PBX 4 сообщений -
#1

Здравствуйте!
Коротко задача:
Нужно при поступлении звонка на экстеншн очереди запускать php скрипт AGI, он в делает только что, что добавляет в базу MySQL строку с названием канала, и названием очереди. Эти значения я передаю параметрами функции AGI.
После этого нужно поместить звонок в очередь.
Когда звонок уходит из очереди, потому что он повесил трубку.
И вот тут как раз у меня начались проблемы. В версии 1.4 у функции Queue есть параметр AGI, но как я понял из описания ему нельзя передать параметры, а мне нужно передать ${CHANNEL}. И так же он выполнится только когда звонок примет оператор, а когда трубку положат не дождавшись ответа он не сработает. Эксперименты доказали это.
Я попробовал прописать AGI следующим после Queue приоритетом, к сожалению не вышло, замена AGI на DeadAGI тоже успехов не принесла.
После этого в принципе ошибку я кажется нашёл.
На мой взгляд дело в том что я использую для диалплана не только файл но и Realtime, и как раз очереди у меня прописаны в реалтайме. ТАк вот в CLI консоли видны такие строки:
Код:
-- Started music on hold, class 'default', on SIP/128-081db028
-- Stopped music on hold on SIP/128-081db028
== Spawn extension (spbnews-int, 444, 3) exited non-zero on 'SIP/128-081db028'

Проблема в том что в RealTime у меня Queue вызывается из (fedot-int, 444, 2) а потом почему то смотри именно в файл extensions.conf где и есть spbnews-int.
В Realtime перебрасывается как раз из spbnews-int с помощью switch в самом начале секции. Скажу так же что в базе есть (fedot-int, 444, 3).

Собственно вот такая проблема.
Подскажите пожалуйста возможно ли как-нибудь заставить после queue смотреть в базу, а не в файл?

У меня установлен Asterisk 1.4.10.1 и asterisk-addons 1.2.8.
Возможно ли что проблема в версии?

Зарание спасибо!


Решение:
Незнаю почему я раньше так не сделал, но нужно было просто при поступлении звонка запускать DeadAGI и уже в скрипте сувать его в очередь и псоответственно делать после очереди что угодно. =)


Последний раз редактировалось: Федот (Ср Авг 06, 2008 10:46)
#2

Покажите вырезку из extensions.conf
#3

Код:
--- extensions.conf ---
[spbnews-int] ; internal context

include => default

switch => Realtime/fedot-int@realtime_ext

; to office (standart,100-199)

exten => _1[0-9][0-9],hint,NoOp(office-hint)
exten => _1[0-9][0-9],1,Set(XFERER=${EXTEN})
exten => _1[0-9][0-9],2,Goto(spbnews-local,main,1)

Вот вырезка из файла extensions.conf.
Я не совсем понял что именно нужно показать =) Если надо погу написать как у меня в базе это выглядит, но там всё стандартно, отвечаю Answer, и сую в очередь.
#4

Именно то, что проводит звонок через команду Queue покажите. 5 exten => до Queue и все оставшиеся exten =>, что идут после Queue покажите.

Вообще, с очередями рекомендую работать через chan_local, т.е. queue membres звонились черех Local/xxxx. Там в диалплане, куда Local попадают, уже и AGI и DeadAGI выполняйте спокойно.