Добрый день.
Спасибо Вам за Ваши ответы. Скрипт перенёс.
По поводу перехвата. Я сделал через GoSub
...
same => n,GoToIf($[${moh_call}=1]?dial_with_music)($["${TRANSFER_OPTIONS}x" == "x" || "${ISTRANSFER}x" != "x"]?Set(TRANSFER_OPTIONS=Tt))
same => n,GoSub(dial_with_moh,s,1(${EXTEN}))
same => n(fw_start),NoOp(start dial hangup)
...
[dial_with_moh]
exten => s,1,Verbose(Start dial_with_moh ${ARG1})
same => n,AGI(/storage/usbdisk1/mikopbx/custom_modules/custom_scripts/get_moh_class.sh,${ARG1})
same => n,Set(moh_call_arg=)
same => n,ExecIf($[${moh_call}=1]?Set(moh_call_arg=m(${ARG1})))
same => n,ExecIf($["${DST_CONTACT}x" != "x"]?Dial(${DST_CONTACT},${ringlength},${TRANSFER_OPTIONS}ekKHhU(${ISTRANSFER}dial_answer)b(dial_create_chan,s,1)${moh_call_arg}}):Set(DIALSTATUS=CHANUNAVAIL))
same => n,return
естественно с возвратом.
По поводу TRANSFER_OPTIONS, я честно говоря несколько опасаюсь лезть в чужие переменные, да бы не сломать их логику, проще на мой взгляд вклинится в текущий контекст и далее вернутся обратно и продолжить выполнение.
Заранее спасибо.