Не получается выполнить действия после совершения вызова, если никто не ответил и вызывающий абонент сам положил трубку. exten => h обрабатывается только при условии, что вызывающая сторона ответила на вызов. По идее, время на выполнение вызова не установлено, и если положить трубу должно приходить в DIALSTATUS = CANCEL, но ничего вообще не приходит. Куда копать, подскажите?
Сделайте exten => h,1,NoOp(${DIALSTATUS}) и смотрите, что там получается. У меня всё работает. Но ежели Вы пользуетесь макросами, то, начиная, по-моему, с версии 1.6, каждый макрос имеет свой собственный h extension. Соответственно, вызов сначала проходит через h exten макроса, а потом ещё через h exten диалплана.
[macro-1]
exten => s,1,Set(param=${ARG1})# save param
exten => s,2,Goto(macro-1,s,3)# need for h exten
exten => s,3,Dial(SIP/something/12345,,og)
exten => h,1,Noop(${DIALSTATUS})
Советую астер 1.8 для подобной темы. в 1.6 к сожалению не всё реализовано для обработки h.
давай я поразузнаю и завтра отпишу. Просто буквально сегодня из-за этого h пришлось 1.8 ставить и разруливать изменения в конфиге chan_dahdi.conf :) Голова кругом
Zavr2008 ( 2012-02-02 20:13:41 +0400 )редактироватьне используй макросы, а используй DIALSTATUS вот пример на скорую руку
exten => 095XXXXXXX,2,SET(GLOBAL(NOMERTO_MTC)=${EXTEN})
exten => 095XXXXXXX,n,Dial(SIP/${NOMERTO_MTC}@3003)
exten => _095XXXXXXX,n,NoOp( Dial Status: ${DIALSTATUS})
exten => _095XXXXXXX,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CANCEL,1,Hangup
exten => s-BUSY,1,Dial(SIP/${NOMERTOMTC}@3004)
exten => s-CHANUNAVAIL,1,Dial(SIP/${NOMERTOMTC}@3004)
Задан: 2011-08-24 16:31:14 +0400
Просмотрен: 2,756 раз
Обновлен: Feb 02 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.