Коротко задача:
Нужно при поступлении звонка на экстеншн очереди запускать 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)
| Код: |
| --- 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, и сую в очередь.
Вообще, с очередями рекомендую работать через chan_local, т.е. queue membres звонились черех Local/xxxx. Там в диалплане, куда Local попадают, уже и AGI и DeadAGI выполняйте спокойно.