[test]
exten => _XXXX,n,Verbose(0,-----Call-Start-----)
same => n,Set(CHANNEL(hangup_handler_push)=hdlr-call-end,s,1)
same => n,Dial(SIP/${EXTEN},10,U(sub-answ-call-start))
same => n,HangUp()
[sub-answ-call-start]
;;записываем в переменную канала UNIX время старта звонка
exten => s,1,Set(__ANSWER_CALL_START=${STRFTIME(${EPOCH},,%s)}))
same => n,return
[hdlr-call-end]
exten => s,1,Verbose(0,-----hdlr-call-stats-----)
;; записываем в переменную UNIX время окончания звонка
same => n,Set(ANSWER_CALL_END=${STRFTIME(${EPOCH},,%s)}))
;; получаем продолжительность звонка в секундах
same => n,Set(CALL_TIME=${MATH(${ANSWER_CALL_END}-${ANSWER_CALL_START},int)})
same => n,return
ProxyPass /audio https://localhost:8000/audio
ProxyPassReverse /audio https://example.com/audio
[trunk-bitrix]
exten => _X.,1,Noop(------Incoming-Call-From-Bitrix------) ;;; просто вывод для дебага в консоли
same => n,Set(CALLERID(num)=${PJSIP_HEADER(read,X-Extension-Number)}) ;;; назначение переменной
same => n,Goto(from-trunk,${EXTEN},1) ;;; прыгает в контекст по умолчанию для обработки транков
О каком устройстве речь?
Если у Вас серый адрес на роутере, как клиент сможет подключиться к Вам из мира?