exten = s-BUSY,1,Playback(${CallisBusy})
Не делай так, это устаревшая конструкция ломающая CDR. Не надо менять EXTEN.
Для решения твоей проблемы, попробуй вот так. Я не тестировал этот код, написал из головы.
Через MOH
- создаешь папку с новым MOH, например тут /usr/share/asterisk/moh_busy
- кладешь в эту папку два файла, 01_busy.slm и 02_ring.slm.
- правишь musiconhold.conf, добавляешь
[busy]
mode=files
directory=moh_busy
не забудь сделать moh reload
В результате Dial будет проигрывать файлы из этой директории (moh_busy) во время звонка по очереди.
exten => _X.,1,NoOp(-------MAIN-DIALPLAN---------)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "UNKNOWN"]?unknown)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "INVALID"]?invalid)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "UNAVAILABLE"]?unavailable)
same => n,ExecIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "INUSE"]?SET(MOH_FILE=busy))
same => n,ExecIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "BUSY"]?SET(MOH_FILE=busy))
same => n,Dial(PJSIP/${EXTEN},60,m(${MOH_FILE}))
;; Unavailable
same => n(unavailable),Noop(---Unavailable---)
same => n,PlayBack(unavailable)
same => n,HangUp()
;; Unknown
same => n(unknown),Noop(----Unknown----)
same => n,PlayBack(unknown)
same => n,HangUp()
;; Invalid
same => n(invalid),Noop(----Invalid----)
same => n,PlayBack(invalid)
same => n,HangUp()
или так
exten => _X.,1,NoOp(-------MAIN-DIALPLAN---------)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "UNKNOWN"]?unknown)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "INVALID"]?invalid)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "UNAVAILABLE"]?unavailable)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "INUSE"]?busy)
same => n,GotoIf($["${DEVICE_STATE(PJSIP/${EXTEN})}" = "BUSY"]?busy)
same => n,Dial(PJSIP/${EXTEN},60)
same => n,HangUp()
same => n(busy),Dial(PJSIP/${EXTEN},60,m(busy))
same => n,HangUp()
;; Unavailable
same => n(unavailable),Noop(---Unavailable---)
same => n,PlayBack(unavailable)
same => n,HangUp()
;; Unknown
same => n(unknown),Noop(----Unknown----)
same => n,PlayBack(unknown)
same => n,HangUp()
;; Invalid
same => n(invalid),Noop(----Invalid----)
same => n,PlayBack(invalid)
same => n,HangUp()