Проблемы с DISA и с заменой DISA
Проблемы с DISA и с заменой DISA на WaitExten'ах
Сообщений: 21
|
Проблемы с DISA и с заменой DISA
Здравствуйте всем.
Значится такая проблема, звоню на номер астериска, нажимаю * и попадаю на дису.
[pstn-disa-in]
exten => *,1,Set(TIMEOUT(response)=15)
exten => *,n,Set(TIMEOUT(digit)=10)
exten => *,n,DISA(/etc/asterisk/disa_users.list)
В disa_users.list: пароль, контекст и каллер
Так вот, бывают случаи когда отрубает(в короткие гудки) на вводе пароля, либо на вводе номера куда собираемся звонить.
Причем десять раз может пройти дозвон нормально, а на 11-й отруб.
Подумал и решил ну его эту дису сделаю все на waitexten'ах, наваял типа этого:
[disa-step-1]
exten => s,1,Set(CHANNEL(language)=ru)
exten => s,n,Background(vvedite)
exten => s,n,Background(parol)
exten => s,n,Set(TIMEOUT(response)=15)
exten => s,n,Set(TIMEOUT(digit)=10)
exten => s,n,Waitexten(8)
exten => _X.,1,AGI(disa|${EXTEN})
exten => _X.,n,GotoIf($[ "${DISA-ANSWER}" != "YAS" ]?hang)
exten => _X.,n,Goto(disa-step-2,s,1)
exten => _X.,n(hang),Hangup
; special cases
exten => i,1,Background(nevernyj-vybor);
exten => i,n,Hangup
exten => t,1,Background(vremja-ozhidanija-isteklo)
exten => t,n,Hangup
[disa-step-2]
exten => s,1,Set(CHANNEL(language)=ru)
exten => s,n,Set(CALLERID(num)=${DISA-CID}${CALLERID(num)})
exten => s,n,Background(vvedite)
exten => s,n,Background(nomer)
exten => s,n,Set(TIMEOUT(response)=15)
exten => s,n,Set(TIMEOUT(digit)=10)
exten => s,n,Waitexten(8)
exten => _X.,1,Dial(LOCAL/${EXTEN}@${DISA-CONTEXT})
; special cases
exten => i,1,Background(nevernyj-vybor);
exten => i,n,Hangup
exten => t,1,Background(vremja-ozhidanija-isteklo)
exten => t,n,Hangup
Так чтобы вы думали, та же самая петрушка.
Раз 10-ть дозвон проходит нормально, а один,два при непонятных условиях срывается в короткие гудки либо на наборе пароля либо на наборе номера.
Запарился уже в конец, как победить?
Зарание спасибо.
|
Откуда: SPb
Сообщений: 1307
|
Re: Проблемы с DISA и с заменой DISA
Логи.. дебаг и логи.. может дело не в контекстах.
|
Сообщений: 21
|
Re: Проблемы с DISA и с заменой DISA
То что дело не в контекстах и так ясно.
Значится так, вот что в консоли:
-- Executing [*@menu-work-time:1] Goto("Zap/5-1", "disa-step-1|s|1") in new stack
-- Goto (disa-step-1,s,1)
-- Executing [s@disa-step-1:1] Set("Zap/5-1", "CHANNEL(language)=ru") in new stack
-- Executing [s@disa-step-1:2] BackGround("Zap/5-1", "vvedite") in new stack
-- <Zap/5-1> Playing 'vvedite' (language 'ru')
-- Executing [s@disa-step-1:3] BackGround("Zap/5-1", "parol") in new stack
-- <Zap/5-1> Playing 'parol' (language 'ru')
-- Executing [s@disa-step-1:4] Set("Zap/5-1", "TIMEOUT(response)=30") in new stack
-- Response timeout set to 30
-- Executing [s@disa-step-1:5] Set("Zap/5-1", "TIMEOUT(digit)=10") in new stack
-- Digit timeout set to 10
-- Executing [s@disa-step-1:6] WaitExten("Zap/5-1", "8") in new stack
-- Hungup 'Zap/5-1'
А вот что в full:
DEBUG[22680] chan_zap.c: DTMF digit: * on Zap/5-1
DEBUG[22680] channel.c: Scheduling timer at 0 sample intervals
DEBUG[22680] channel.c: Set channel Zap/5-1 to write format ulaw
DEBUG[22680] pbx.c: Oooh, got something to jump out with ('*')!
VERBOSE[22680] logger.c: == CDR updated on Zap/5-1
DEBUG[22680] pbx.c: Launching 'Goto'
VERBOSE[22680] logger.c: Goto("Zap/5-1", "disa-step-1|s|1") in new stack
VERBOSE[22680] logger.c: -- Goto (disa-step-1,s,1)
DEBUG[22680] pbx.c: Launching 'Set'
VERBOSE[22680] logger.c: Set("Zap/5-1", "CHANNEL(language)=ru") in new stack
DEBUG[22680] pbx.c: Launching 'BackGround'
VERBOSE[22680] logger.c: BackGround("Zap/5-1", "vvedite") in new stack
DEBUG[22680] channel.c: Set channel Zap/5-1 to write format slin
DEBUG[22680] channel.c: Scheduling timer at 160 sample intervals
VERBOSE[22680] logger.c: -- <Zap/5-1> Playing 'vvedite' (language 'ru')
DEBUG[22680] channel.c: Scheduling timer at 110 sample intervals
DEBUG[22680] channel.c: Scheduling timer at 0 sample intervals
DEBUG[22680] channel.c: Scheduling timer at 0 sample intervals
DEBUG[22680] channel.c: Set channel Zap/5-1 to write format ulaw
DEBUG[22680] pbx.c: Launching 'BackGround'
VERBOSE[22680] logger.c: BackGround("Zap/5-1", "parol") in new stack
DEBUG[22680] channel.c: Set channel Zap/5-1 to write format slin
DEBUG[22680] channel.c: Scheduling timer at 160 sample intervals
VERBOSE[22680] logger.c: -- <Zap/5-1> Playing 'parol' (language 'ru')
DEBUG[22680] channel.c: Scheduling timer at 78 sample intervals
DEBUG[22680] channel.c: Scheduling timer at 0 sample intervals
DEBUG[22680] channel.c: Scheduling timer at 0 sample intervals
DEBUG[22680] channel.c: Set channel Zap/5-1 to write format ulaw
DEBUG[22680] pbx.c: Launching 'Set'
VERBOSE[22680] logger.c: Set("Zap/5-1", "TIMEOUT(response)=30") in new stack
VERBOSE[22680] logger.c: -- Response timeout set to 30
DEBUG[22680] pbx.c: Launching 'Set'
VERBOSE[22680] logger.c: Set("Zap/5-1", "TIMEOUT(digit)=10") in new stack
VERBOSE[22680] logger.c: -- Digit timeout set to 10
DEBUG[22680] pbx.c: Launching 'WaitExten'
VERBOSE[22680] logger.c: WaitExten("Zap/5-1", "8") in new stack
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] pbx.c: Oooh, got something to jump out with ('цифра')!
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] dsp.c: ast_dsp_busydetect detected busy, avgtone: 105, avgsilence 305
DEBUG[22680] channel.c: Soft-Hanging up channel 'Zap/5-1'
DEBUG[22680] channel.c: Hanging up channel 'Zap/5-1'
DEBUG[22680] chan_zap.c: zt_hangup(Zap/5-1)
DEBUG[22680] chan_zap.c: Hangup: channel: 5 index = 0, normal = 31, callwait = -1, thirdcall = -1
DEBUG[22680] chan_zap.c: disabled echo cancellation on channel 5
DEBUG[22680] chan_zap.c: Set option TDD MODE, value: OFF(0) on Zap/5-1
DEBUG[22680] chan_zap.c: Updated conferencing on 5, with 0 conference users
VERBOSE[22680] logger.c: -- Hungup 'Zap/5-1'
Тока, что это значит и как поправить?
|
Сообщений: 6521
|
Re: Проблемы с DISA и с заменой DISA
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1 набрана 8 - признак звонка наружу
DEBUG[22680] pbx.c: Oooh, got something to jump out with ('цифра')! соответствующее замечание по этому поводу
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1 пошли цифры набора
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: цифра on Zap/5-1 после пятой цифры -
DEBUG[22680] dsp.c: ast_dsp_busydetect detected busy, avgtone: 105, avgsilence 305 обнаружено, что линия тутукает короткими гудками, примерно 105 мсек гудит и 305 мсек тишина. То есть вызов судя по всему. Но это ZAP определяется как занято.
DEBUG[22680] channel.c: Soft-Hanging up channel 'Zap/5-1' и он вешает трубу.
|
Сообщений: 21
|
Re: Проблемы с DISA и с заменой DISA
ded там нет никакой 8-ки и цифр набора номера, вы не правильно поняли.
Строки:
VERBOSE[22680] logger.c: BackGround("Zap/5-1", "vvedite") in new stack
VERBOSE[22680] logger.c: BackGround("Zap/5-1", "parol") in new stack
говорят о том, что я набираю WaitExten'ом пароль, астрока:
VERBOSE[22680] logger.c: WaitExten("Zap/5-1", "8") in new stack
это всего лишь - WaitExten(8)
То есть, к примеру если пароль типа 123456, то в full'е будет:
DEBUG[22680] chan_zap.c: DTMF digit: 1 on Zap/5-1
DEBUG[22680] pbx.c: Oooh, got something to jump out with ('1')!
DEBUG[22680] chan_zap.c: DTMF digit: 2 on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: 3 on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: 4 on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: 5 on Zap/5-1
DEBUG[22680] chan_zap.c: DTMF digit: 6 on Zap/5-1
И то же самое при удачном наборе, просто в листинге выше срыв в короткие пошёл на наборе пароля.
И как раз начиная со строки:
DEBUG[22680] dsp.c: ast_dsp_busydetect detected busy, avgtone: 105, avgsilence 305
А звоню я по другому посмотрите первый пост.
|
Сообщений: 6521
|
Re: Проблемы с DISA и с заменой DISA
А как Вы могли бы интерпретировать фразу Oooh, got something to jump out with ('1')!??
Это воспринимается как дозвон out через ваш неведомый disa AGI, и оттуда
dsp.c: ast_dsp_busydetect detected busy, avgtone: 105, avgsilence 305 обнаружено, что линия тутукает короткими гудками, примерно 105 мсек гудит и 305 мсек тишина.
Если это проблема распознавания DTMF в канале chan_zap, то есть такой кастомный параметр - relaxdtmf=yes.
Честно говоря - анализировать чужой код (который наваял) - не хочется, неблагодарное занятие. Это ещё один деревянный велосипед. Можно приложить тонну усилий, и он даже будет ездить.
Как часто и не без резона пишет switch - поставьте Trix и не парьтесь.
|
Сообщений: 21
|
Re: Проблемы с DISA и с заменой DISA
А как Вы могли бы интерпретировать фразу Oooh, got something to jump out with ('1')!??
Это воспринимается как дозвон out через ваш неведомый disa AGI, и оттуда
dsp.c: ast_dsp_busydetect detected busy, avgtone: 105, avgsilence 305 обнаружено, что линия тутукает короткими гудками, примерно 105 мсек гудит и 305 мсек тишина.
На счет AGI скрипта disa, да вы правы стоило наверное его листинг запостить, но судя по вашему подходу вы бы его не осилили бы. Если бы вы потрудились посмотреть на первый пост, то вы бы увидели, что в скрипт передается только пароль(мы же не можем звонить на пароль :-)). На основании которого из того же файла disa_users.list и с тем же синтаксисом вытаскивается контекст и каллер. И если совпадения найдены устанавливаются три переменные DISA-ANSWER(собственно можно звонить или нет), DISA-CID(callerid), DISA-CONTEXT(контекст) и ВСЕ.
Теперь по поводу Oooh, got, а как вы могли бы интерпретировать эту фразу при удачном срабатывании диса, вы бы это то же воспринимали как дозвон out на этапе ввода пароля.
Честно говоря - анализировать чужой код (который наваял) - не хочется, неблагодарное занятие. Это ещё один деревянный велосипед. Можно приложить тонну усилий, и он даже будет ездить.
Как часто и не без резона пишет switch - поставьте Trix и не парьтесь.
Придержите свое не обоснованное мнение и советы не касающиеся самой проблемы при себе.
|
Откуда: SPb
Сообщений: 1307
|
Re: Проблемы с DISA и с заменой DISA
Оверквотинг - это наверно от отчаяния возникает , я наконец-то понял.
Ooh тут возникает потому, что по время бекграунда пользователь набирает цифры , а модуль не знает что с этим делать. А случается это скорее всего и за времени срабатывания скрипта.
Если хотите честно брать пароль от пользователя, используйте Read(), ибо waitexten() хорош , когда надо передать 1 цифру (аля IVR).
Я бы на Вашем месте проверил быстродействие скрипта, хотя сам бы вообще его тут не использовал (замечательно можно всё решать глобалами или внутренней ДБ астериска), не тот случай.
|
Сообщений: 21
|
Re: Проблемы с DISA и с заменой DISA
Ooh тут возникает потому, что по время бекграунда пользователь набирает цифры , а модуль не знает что с этим делать. А случается это скорее всего и за времени срабатывания скрипта.
Вы притворяетесь или на самом деле такой умный? Ooh появляется до того как EXTEN уходит скрипту, то есть до того как WaitExten(8) перезагрузит контекст, да, может вас это удивит но набранный пароля уходит в скрипт весь после 8 секунд ожидания, а не по одной цифре.
С DB я уже делал, та же петрушка.
Вы поймите дело не в скрипте и не в WaitExten'е, а в чем то другом. Этот злосчастный Ooh к которому вы прицепились появляется всегда и при удачном срабатывании и при срыве и при наборе пароля и при наборе номера.
Ту что то другое, а вот что я думал вы мне подскажите.
|
Сообщений: 6521
|
Re: Проблемы с DISA и с заменой DISA
tetris, придержите свой необоснованное раздражение и язвительность при себе.
Вот тут >>>>Вы были более адекватны.
|
|