Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / TrixBox, Elastix, FreePbx / Обработка Hangupcause

Обработка Hangupcause

1 2>
Откуда: Казахстан, Петропавловск
Сообщений: 69

Обработка Hangupcause

Здравствуйте. Помогите реализовать следующую конструкцию диалплана: клиент звонит с сотового на астериск (триксбокс с обновленным до 2.6.0 Freepbx-ом), звонит через voip-gsm-шлюз portech mv-372. Если в течение первых 5-8 секунд он продолжает дозваниваться, то попадает в очередь, если же после первых 1-2 гудков сбрасывает вызов (сам ложит трубку, т.е. "маякует"), то запускается алгоритм обратного звонка, астериск сам звонит клиенту и соединяет его с очередью.
Такой сценарий диалплана, полагаю, нужно реализовывать, использую приложение Gotoif, но что подставить в качестве проверки условия, статус NOANSWER dialstatus-а?
Подобный алгоритм я реализовал, используя аналоговый GSM-шлюз, но разница в том, что если клиент не сбрасывает свой вызов, то его принудительно сбрасывает модуль callback и запускает отзвон.
Как мне разъяснили раньше здесь на форуме, от аналогового шлюза невозможно получить статус NOANSWER. Покупаем вышеуказанный voip-gsm-шлюз.
Углубившись в поиски, прихожу к выводу, что статус NOANSWER вообще не причем, т.к. он используется в приложении Dial (о чем, собственно, и говорит название DIALstatus).
Думаю, нужно использовать значение переменной Hangupcause:
exten => 5555,n,Wait(8)
exten => 5555,n,Noop(HANGUPCAUSE is ${HANGUPCAUSE})
exten => 5555,n,Goto(from-did-direct,113,1)
exten => h,1,GotoIf($["${HANGUPCAUSE}" = "19"]?callback,1,1:)
exten => h,n,Noop(HANGUPCAUSE is ${HANGUPCAUSE})
exten => h,n,Hangup

Если продолжать звонить, 113 экстеншн звонит как и полагается спустя 8 секунд, но если позвонить и сбросить после первого гудка, то наблюдаем следующее:
-- Executing [5555@from-trunk:1] Set("SIP/10.8.0.13-09d4eb20", "__FROM_DID=5555") in new stack
-- Executing [5555@from-trunk:2] Wait("SIP/10.8.0.13-09d4eb20", "8") in new stack
== Spawn extension (from-trunk, 5555, 2) exited non-zero on 'SIP/10.8.0.13-09d4eb20'
-- Executing [h@from-trunk:1] GotoIf("SIP/10.8.0.13-09d4eb20", "0?callback|1|1:") in new stack
-- Executing [h@from-trunk:2] NoOp("SIP/10.8.0.13-09d4eb20", "HANGUPCAUSE is 0") in new stack
-- Executing [h@from-trunk:3] Hangup("SIP/10.8.0.13-09d4eb20", "") in new stack
== Spawn extension (from-trunk, h, 3) exited non-zero on 'SIP/10.8.0.13-09d4eb20'
2010-02-17 14:25

Сообщений: 6521

Re: Обработка Hangupcause

А попробуйте-ка вот так:
exten => 5555,n,Wait(8)
.....
exten => 5555,n+101,Goto(callback,1,1)
хотя по-моему надо через марос а не через Goto.
2010-02-17 14:47

Откуда: Казахстан, Петропавловск
Сообщений: 69

Re: Обработка Hangupcause

переделал следующим образом:
exten => 5555,1,Wait(8)
exten => 5555,n,Goto(from-did-direct,113,1)
exten => 5555,n+101,Goto(callback,1,1)
exten => h,n,Hangup


В результате получил следующее:
-- Executing [5555@from-trunk:1] Wait("SIP/10.8.0.13-09cafdd0", "8") in new stack
== Spawn extension (from-trunk, 5555, 1) exited non-zero on 'SIP/10.8.0.13-09cafdd0'
-- Executing [h@from-trunk:1] Hangup("SIP/10.8.0.13-09cafdd0", "") in new stack
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/10.8.0.13-09cafdd0'

"В типичном плане набора, Asterisk очень часто использует приоритет с относительным смещением "+101", для команд, которые будут выполнены в том случае, если выполнение некоторых команд, типа Dial(), закончится неудачей." По логу выходит, строчка 5555,n+101,Goto(callback,1,1) не обрабатывается
2010-02-17 15:20

Avatara of zzuz
Откуда: SPb
Сообщений: 1307

Re: Обработка Hangupcause

а он знает про 5555,n+101, ?
>show dialplan from-trunk
http://линия24.рф - Астериск и прочие бубны!
2010-02-17 15:32

Сообщений: 6521

Re: Обработка Hangupcause

Я думаю там новая версия стоит поэтому
dialplan show from-trunk, а не >show dialplan from-trunk
И это ничего не покажет автору, так как глубокая цепочка вложений.
Которая приводит к настоящему месту, что-то типа:
dialplan show ext-did-0001
'5555' =>          1. Set(__FROM_DID=${EXTEN})                   [pbx_config]

2. Gosub(app-blacklist-check,s,1) [pbx_config]
3. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
4. Set(__CALLINGPRES_SV=${CALLERPRES()}) [pbx_config]
5. Set(CALLERPRES()=allowed_not_screened) [pbx_config]
6. Goto(from-did-direct,401,1) [pbx_config]
где-то там автор и пытается создать свою конструкцию.
2010-02-17 16:06

Откуда: Казахстан, Петропавловск
Сообщений: 69

Re: Обработка Hangupcause

show dialplan from-trunk
[ Context 'from-trunk' created by 'pbx_config' ]
'5555' => 1. Wait(8) [pbx_config]
2. Goto(from-did-direct|113|1) [pbx_config]
104. Goto(callback|1|1) [pbx_config]
'h' => 105. Hangup() [pbx_config]
Include => 'from-pstn' [pbx_config]
2010-02-17 16:18

Откуда: Казахстан, Петропавловск
Сообщений: 69

Re: Обработка Hangupcause

Автор не покажется чересчур наглым и ленивым если попросит еще помощи в указании верного направления?
2010-02-17 16:36

Avatara of zzuz
Откуда: SPb
Сообщений: 1307

Re: Обработка Hangupcause

Читающие просят вывести вывод консоли астериска , где будет отображаться конекст вызова , в котором обрабатывается звонок так , как это видит сам астериск , а не так , как нам высказывает автор.
http://линия24.рф - Астериск и прочие бубны!
2010-02-17 18:46

Откуда: Казахстан, Петропавловск
Сообщений: 69

Re: Обработка Hangupcause

2010-02-17 19:29

Avatara of zzuz
Откуда: SPb
Сообщений: 1307

Re: Обработка Hangupcause

ыыыыыыыы
http://линия24.рф - Астериск и прочие бубны!
2010-02-17 19:49

1 2>
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru