ID Asterisk

[Help] Bedakan nada hold di queue dan agent

Selamat Pagi, Siang, Sore dan Malam mastah

mau minta pencerahan nih, jadi ceritanya ane lagi setup server issabel asterisk
di queue kan ada settingan MOH Class itu ane pilih custom yang udah aneh upload dan di pilih always
pas ada call masuk kan jadinya nada tunggu kalo agent belum ada yang available
nah ane mau pas telepon udah di angkat sama agent, tapi pas agent itu hold nada-nya gak sama kayak nada tunggu yang di set di queue, itu caranya gimana ya ? mohon pencerahannya karna selama ini nada hold pas orang lagi nunggu agent yang angkat, sama nada hold yang sesudah agent angkat terus di hold itu sama, mau nya bisa di bedain

terima kasih semuanya

Halo,

Saya lihat di Issabel itu tiap user extension ga ada setingan MoH nya.

Jadi kalo mau bedakan MoH nada tunggu pada saat masuk ke Qeueu dan pada saat Hold yang sebenarnya dari agent saat call berlangsung, diperlukan perubahan sedikit pada dialplan, yaitu menggunakan/memanfaatkan system override dialplan, pada issabel bisa ditambahkan pada file /etc/asterisk/extensions_override_issabel.conf.

Disini saya contohkan override context dialplan macro-exten-vm, cukup sisipkan saja dialplan berikut tanpa merubah dialplan yang sudah ada pada file extensions_override_issabel.conf :

[macro-exten-vm]
include => macro-exten-vm-custom
exten => s,1,Macro(user-callerid,)

; Ini dialplan tambahan untuk handling MOHCLASS apabila call dari Qeueue
; cc2 ini adalah MOHCLASS yang sudah dibuat 
exten => s,n,ExecIf($["${QAGENT}" != ""]?Set(MOHCLASS=cc2))

exten => s,n,Set(RingGroupMethod=none)
exten => s,n,Set(__EXTTOCALL=${ARG2})
exten => s,n,Set(__PICKUPMARK=${ARG2})
exten => s,n,Set(RT=${IF($["${ARG1}"!="novm" | "${DB(CFU/${EXTTOCALL})}"!="" | "${DB(CFB/${EXTTOCALL})}"!="" | "${ARG3}"="1" | "${ARG4}"="1" | "${ARG5}"="1"]?${RINGTIMER}:)})
exten => s,n(checkrecord),Gosub(sub-record-check,s,1(exten,${EXTTOCALL},))
exten => s,n(macrodial),Macro(dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL})
exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS})
exten => s,n(calldocfu),GosubIf($[("${SV_DIALSTATUS}"="NOANSWER"|"${SV_DIALSTATUS}"="CHANUNAVAIL") & "${DB(CFU/${EXTTOCALL})}"!="" & "${SCREEN}"=""]?docfu,1())
exten => s,n(calldocfb),GosubIf($["${SV_DIALSTATUS}"="BUSY" & "${DB(CFB/${EXTTOCALL})}"!="" & "${SCREEN}"=""]?docfb,1())
exten => s,n,Set(DIALSTATUS=${SV_DIALSTATUS})
exten => s,n,ExecIf($[("${DIALSTATUS}"="NOANSWER"&"${ARG3}"="1")|("${DIALSTATUS}"="BUSY"&"${ARG4}"="1")|("${DIALSTATUS}"="CHANUNAVAIL"&"${ARG5}"="1")]?MacroExit())
exten => s,n,GotoIf($["${ARG1}"="novm"]?s-${DIALSTATUS},1)
exten => s,n,Macro(vm,${ARG1},${DIALSTATUS},${IVR_RETVM})

exten => docfu,1(docfu),ExecIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG3}"="1")]?StackPop())
exten => docfu,n,GotoIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG3}"="1")]?from-internal,${DB(CFU/${EXTTOCALL})},1)
exten => docfu,n,Set(RTCF=${IF($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="0"]?${RT}:${DB(AMPUSER/${EXTTOCALL}/cfringtimer)})})
exten => docfu,n,Dial(Local/${DB(CFU/${EXTTOCALL})}@from-internal/n,${RTCF},${DIAL_OPTIONS})
exten => docfu,n,Return()

exten => docfb,1(docfu),ExecIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG4}"="1")]?StackPop())
exten => docfb,n,GotoIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG4}"="1")]?from-internal,${DB(CFB/${EXTTOCALL})},1)
exten => docfb,n,Set(RTCF=${IF($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="0"]?${RT}:${DB(AMPUSER/${EXTTOCALL}/cfringtimer)})})
exten => docfb,n,Dial(Local/${DB(CFB/${EXTTOCALL})}@from-internal/n,${RTCF},${DIAL_OPTIONS})
exten => docfb,n,Return()

exten => s-BUSY,1,GotoIf($["${IVR_RETVM}"="RETURN" & "${IVR_CONTEXT}"!=""]?exit,1)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

exten => _s-!,1,GotoIf($["${IVR_RETVM}"="RETURN" & "${IVR_CONTEXT}"!=""]?exit,1)
exten => _s-!,n,Playtones(congestion)
exten => _s-!,n,Congestion(10)

exten => exit,1,Playback(beep&line-busy-transfer-menu&silence/1)
exten => exit,n,MacroExit()

;--== end of [macro-exten-vm] ==--;