Страница 1 из 1

Выполнение AGI по Hangup если вызываемый не поднял трубу

Добавлено: 21 июн 2012, 23:09
zoleg
Подскажите как реализовать такую фичу:

Перед выполнением DIAL выполняется скриптюля, которая создает запись в БД сторонней проги о том кому адресован звонок (с кучей атрибутов).
Задача:
Проставить отметку о том, что звонок был сброшен звонящим, подправив флаг в БД сторонней проги.
Типа так

Код: Выделить всё

exten => call,1,Playback(taxi/general/${language}/calltaxiinprogress)
exten => call,n,AGI(/usr/share/call-taxi/soother-order,${CALLERID(num)},${idsdb},${driver},${drivershift},${phone},${carclass},${stopid})
exten => call,n,Dial(${${OPSOS}}/${phone})
exten => call,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?lbl_CHA:)
exten => call,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?lbl_CON:)
exten => call,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?lbl_NOA:)
exten => call,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?lbl_BU:)
exten => call,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?lbl_CAN:)
exten => call,n(lbl_NOA),AGI(/usr/share/call-taxi/no-answer,${idsdb},${driver},${orderid})
Все работает как надо по CANCEL если вызываемый поднял трубу, но как выполнить exten => call,n(lbl_NOA) если этого не произошло ????????????????
Пробовал запустить через " exten => h,1,........... " не цепляется.

Попутно, подскажите пожалуйста, как поставить отсечку по количеству гудков (типа если 4 звонка пропущено - считаем что абонент не отвечает и запускаем его по GotoIf($["${DIALSTATUS}" = "NOANSWER"]?на путь истинный) )

Re: Выполнение AGI по Hangup если вызываемый не поднял трубу

Добавлено: 21 июн 2012, 23:19
Evgen
Статус NOANSWER присваивается только при запуске DIAL с опцией таймаута. Команда Dial(SIP/test,45) будет звонить 45 секунд. Если за это время вызывающий абонент не поднимет трубку, то Dial выдаст статус NOANSWER.

Re: Выполнение AGI по Hangup если вызываемый не поднял трубу

Добавлено: 22 июн 2012, 07:38
zoleg
Dial(SIP/test,45)
Спасибо.