Добрый день. Просьба помочь в следующем вопросе есть custom_context
[toRussiaWithLimit_rulematch-custom]
exten => _048XXXXXXX,1,Noop(TRUNK_OPTIONS=${TRUNK_OPTIONS})
exten => _048XXXXXXX,n,Agi(agi://localhost/getTimeout.agi?number=123)
....some logic
agi set debug on
AGI Tx >> agi_network: yes
AGI Tx >> agi_network_script: getTimeout.agi?number=487940663
<SIP/2001-00000014>AGI Tx >> agi_request: agi://localhost/getTimeout.agi?number=123
.................
<SIP/2001-00000014>AGI Rx << SET VARIABLE "dialTimeout" "1481"
<SIP/2001-00000014>AGI Tx >> 200 result=1
<SIP/2001-00000014>AGI Rx << SET VARIABLE "AJ_AGISTATUS" "SUCCESS"
<SIP/2001-00000014>AGI Tx >> 200 result=1
-- <SIP/2001-00000014>AGI Script agi://localhost/getTimeout.agi?number=123 completed, returning 0
<SIP/2001-00000014>AGI Tx >> HANGUP
Мне нужно продолжить звонок, а происходит HANGUP и соответственно получаю No such context 'macro-outisbusy' for macro 'outisbusy'
Мешает, что <sip 2001-00000014="">AGI Tx >> HANGUP. С AGI раньше не работал, подскажите, hangup вызывается по умолчанию или этот как-то в скрипте можно отменить?
FreePBX был создан custom context
toOdessaWithLimit_rulematch' created by 'pbx_config' ]
'h' => 1. Macro(hangupcall,) [pbx_config]
's' => 1. Macro(hangupcall,) [pbx_config]
Include => 'toOdessaWithLimit_rulematch-custom' [pbx_config]
....
В кастом я добавляю нужную логику - там просто нужно из agi вытащить нужно значение и установить в качестве таймаута для dial
[toOdessaWithLimit_rulematch-custom]
exten => _048XXXXXXX,1,Noop(Initial TRUNK_OPTIONS=${TRUNK_OPTIONS})
exten => _048XXXXXXX,n,AGI(agi://localhost/getTimeout.agi)
;exten => _048XXXXXXX,n,Set(dialTimeout=${SHELL(/var/lib/asterisk/agi-bin/getTimeout.sh)})
exten => _048XXXXXXX,n,NoOp(check timeout set up: ${dialTimeout})
exten => _048XXXXXXX,n,Set(TRUNK_OPTIONS=L(920000:30000:10000))
exten => _048XXXXXXX,n,Noop(Changed TRUNK_OPTIONS=${TRUNK_OPTIONS})
Не могу понять, почему вызов agi exten => _048XXXXXXX,n,AGI(agi://localhost/getTimeout.agi) или exten => _048XXXXXXX,n,Set(dialTimeout=${SHELL(/var/lib/asterisk/agi-bin/getTimeout.sh)})
Без вызова agi или shell скрипта звонок нормально проходит.
Задан: 2016-03-13 15:11:58 +0400
Просмотрен: 678 раз
Обновлен: Mar 14 '16
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
hangup вызывается при завершении вызова.
zzuz ( 2016-03-13 18:30:43 +0400 )редактироватьв самом скрипте, нет явной команды hangup. и он вроде завершает работу без hangup: returning 0. Если убрать строку с agi - все работает. Вот я не могу понять откуда появляется последний HANGUP
ipvinner ( 2016-03-13 22:31:41 +0400 )редактироватьну потому что в скрипте не нужно посылать вызов на несуществующий экстеншен . отдайте свой сприпт какому-нибудь фрилансеру, пусть исправляет.
zzuz ( 2016-03-13 23:13:12 +0400 )редактироватьнепонятно что куда отменить. установка переменны не вызывает выключение обычно. смотрите, что ДО этого делает. может таймаут какой.
meral ( 2016-03-14 01:52:55 +0400 )редактироватьzzuz, а как Вы определили что вызов идет на несуществующий екстеншен? там только устанавливаются значения переменных для канала
ipvinner ( 2016-03-14 12:04:23 +0400 )редактироватьВидимо оттуда откуда "No such context 'macro-outisbusy' for macro 'outisbusy'" .
zzuz ( 2016-03-14 12:29:42 +0400 )редактироватьА как тему закрыть? оказалось банальная невнимательность
ipvinner ( 2016-03-14 15:29:10 +0400 )редактировать