Здравствуйте, прошу подсказки у Гуру. Есть Asterisk 1.8 В Диалплане есть несколько контекстов содержащие h-exten. Не могу понять как работает h-exten, по идее должен он отработать в том контескте из которого запущен, макросы не использую.
extensions.conf
#include extensions_prov1.conf #include extensions_prov2.conf [from_server] include => from_prov1 include => from_prov2
в файле extensions_prov1.conf
[from_prov1] include => to_prov1_vc [to_prov1_vc] exten => _9379,1,NoOp(================= Incoming call from PROV ${CALLERID(num)} to IVR ${EXTEN}) exten => _9379,n,Set(CDR(accountcode)=xcall_in) exten => _9379,n,Answer() exten => _9379,n,Wait(1) exten => _9379,n,AGI(/var/lib/asterisk/agi-bin/VC/ver-1.01/VC_main.php) exten => h,1,NoOP(DIALEDTIME=${DIALEDTIME} ANSWEREDTIME=${ANSWEREDTIME}) exten => h,n,NoOP(==CALLDATE ${CDR(calldate)} ===UNIQUEID ${UNIQUEID} ===CDR(billsec)=${CDR(billsec)} ====CDR_duration = ${CDR(duration)} ====My_CDR_Duration = ${MY_CDR_DURATION}) exten => h,n,System(/var/lib/asterisk/agi-bin/VC/ver-1.01/VC_insert_CDR.pl ${CALLERID(num)},${UNIQUEID},${CDR(duration)},${CDR(billsec)},${DIALEDTIME},${ANSWEREDTIME},${MY_CDR_DURATION}) exten => h,n,Hangup()
в файле extensions_prov2.conf
[from_prov2] include => to_prov2_voicecard [to_prov2_voicecard] exten => 9999,1,NoOp(================= Incoming call from PROV ${CALLERID(num)} to IVR ${EXTEN}) exten => 9999,n,Set(CDR(accountcode)=voicecard) exten => 9999,n,Answer() exten => 9999,n,Wait(1) exten => 9999,n,AGI(/var/lib/asterisk/agi-bin/voicecard/ver-1.00/VoiceCard_main.php) exten => 9999,n,Hangup() exten => h,1,NoOP(DIALEDTIME=${DIALEDTIME} ANSWEREDTIME=${ANSWEREDTIME}) exten => h,n,Hangup()
Когда вызываю экстэн 9379 и послушав, ложу трубку отрабатывается нужный h-exten. Если набираю 9999, то почему то h-exten в своем контексте не отрабатывается, а выполняется h-exten из контекста 9379.
Пробовал менять местами h-extenы, но всеравное происходит отработка одного h-extenа.
В "Asterisk - Будущее телефонии", 2 издание на русском языке:
184 страница - как работают include
у вас их два становиться. выполняется первый. чтоб работало так как вы ожидаете надо первую строку менять вот на такую:
exten => 9999,1,Goto(to_prov2_voicecard,${EXTEN},2)
exten => 9999,n,NoOp(================= Incoming call from PROV ${CALLERID(num)} to IVR ${EXTEN})
можно проверить вот так
asterisk -rx "show dialplan 9999@from_server"
Задан: 2011-06-13 17:20:11 +0400
Просмотрен: 3,910 раз
Обновлен: Jun 13 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.