System:
Centos 5 (AsteriskNow)
Asterisk 1.6.2.17.2
FreePBX 2.8.1.4
FOP2 2.20
Hello,
so far my FOP2 installation is running fine. Login and call status is indicated without any big trouble. Unfortunately the Do not Disturb status of the users does not reach the FOP. What I checked so far:
Manager permissions:
read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
extensions_override_freepbx.conf in /etc/asterisk (from FOP 2.20, no changes made):
[app-dnd-on] include => app-dnd-on-custom exten => *78,1,Answer exten => *78,n,Wait(1) exten => *78,n,Macro(user-callerid,) ; added for fop2 exten => *78,n,Set(DB(DND/${AMPUSER})=YES) exten => *78,n,Set(CHAN=${CUT(CHANNEL,-,1)}) exten => *78,n,Set(DB(fop2state/${CHAN})=Do not Disturb) exten => *78,n,UserEvent(FOP2ASTDB,Family: fop2state,Channel: ${CHAN},Value: Do not Disturb) ; end fop2 addition exten => *78,n,Set(DB(DND/${AMPUSER})=YES) exten => *78,n,Set(STATE=BUSY) exten => *78,n,Gosub(app-dnd-on,sstate,1) exten => *78,n,Playback(do-not-disturb&activated) exten => *78,n,Macro(hangupcall,) exten => sstate,1,Set(DEVSTATE(Custom:DND${AMPUSER})=${STATE}) exten => sstate,n,Set(DEVICES=${DB(AMPUSER/${AMPUSER}/device)}) exten => sstate,n,GotoIf($["${DEVICES}" = "" ]?return) exten => sstate,n,Set(LOOPCNT=${FIELDQTY(DEVICES,&)}) exten => sstate,n,Set(ITER=1) exten => sstate,n(begin),Set(DEVSTATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})=${STATE}) exten => sstate,n,Set(ITER=$[${ITER} + 1]) exten => sstate,n,GotoIf($[${ITER} <= ${LOOPCNT}]?begin) exten => sstate,n(return),Return() [app-dnd-off] include => app-dnd-off-custom exten => *79,1,Answer exten => *79,n,Wait(1) exten => *79,n,Macro(user-callerid,) ; added for fop2 exten => *79,n,Set(CHAN=${CUT(CHANNEL,-,1)}) exten => *79,n,dbDel(fop2state/${CHAN}) exten => *79,n,UserEvent(FOP2ASTDB,Family: fop2state,Channel: ${CHAN},Value: ) ; end fop2 addition exten => *79,n,dbDel(DND/${AMPUSER}) exten => *79,n,Set(STATE=NOT_INUSE) exten => *79,n,Gosub(app-dnd-off,sstate,1) exten => *79,n,Playback(do-not-disturb&de-activated) exten => *79,n,Macro(hangupcall,) exten => sstate,1,Set(DEVSTATE(Custom:DND${AMPUSER})=${STATE}) exten => sstate,n,Set(DEVICES=${DB(AMPUSER/${AMPUSER}/device)}) exten => sstate,n,GotoIf($["${DEVICES}" = "" ]?return) exten => sstate,n,Set(LOOPCNT=${FIELDQTY(DEVICES,&)}) exten => sstate,n,Set(ITER=1) exten => sstate,n(begin),Set(DEVSTATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})=${STATE}) exten => sstate,n,Set(ITER=$[${ITER} + 1]) exten => sstate,n,GotoIf($[${ITER} <= ${LOOPCNT}]?begin) exten => sstate,n(return),Return() [app-dnd-toggle] include => app-dnd-toggle-custom exten => *76,1,Answer exten => *76,n,Wait(1) exten => *76,n,Macro(user-callerid,) exten => *76,n,GotoIf($["${DB(DND/${AMPUSER})}" = ""]?activate:deactivate) exten => *76,n(activate),Set(DB(DND/${AMPUSER})=YES) exten => *76,n,Set(CHAN=${CUT(CHANNEL,-,1)}) exten => *76,n,Set(DB(fop2state/${CHAN})=Do not Disturb) exten => *76,n,UserEvent(FOP2ASTDB,Family: fop2state,Channel: ${CHAN},Value: Do not Disturb) exten => *76,n,Set(STATE=BUSY) exten => *76,n,Gosub(app-dnd-toggle,sstate,1) exten => *76,n,Playback(do-not-disturb&activated) exten => *76,n,Macro(hangupcall,) exten => *76,n(deactivate),dbDel(DND/${AMPUSER}) exten => *76,n,Set(CHAN=${CUT(CHANNEL,-,1)}) exten => *76,n,dbDel(fop2state/${CHAN}) exten => *76,n,UserEvent(FOP2ASTDB,Family: fop2state,Channel: ${CHAN},Value: ) exten => *76,n,Set(STATE=NOT_INUSE) exten => *76,n,Gosub(app-dnd-toggle,sstate,1) exten => *76,n,Playback(do-not-disturb&de-activated) exten => *76,n,Macro(hangupcall,) exten => sstate,1,Set(DEVSTATE(Custom:DND${AMPUSER})=${STATE}) exten => sstate,n,Set(DEVICES=${DB(AMPUSER/${AMPUSER}/device)}) exten => sstate,n,GotoIf($["${DEVICES}" = "" ]?return) exten => sstate,n,Set(LOOPCNT=${FIELDQTY(DEVICES,&)}) exten => sstate,n,Set(ITER=1) exten => sstate,n(begin),Set(DEVSTATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})=${STATE}) exten => sstate,n,Set(ITER=$[${ITER} + 1]) exten => sstate,n,GotoIf($[${ITER} <= ${LOOPCNT}]?begin) exten => sstate,n(return),Return() [app-cf-off] include => app-cf-off-custom exten => *73,1,Answer exten => *73,n,Wait(1) exten => *73,n,Macro(user-callerid,) exten => *73,n,dbDel(CF/${AMPUSER}) exten => *73,n,Set(CHAN=${CUT(CHANNEL,-,1)}) exten => *73,n,UserEvent(FOP2CUST,Family: astdbcust,Channel: ${CHAN},Value: ) exten => *73,n,Playback(call-fwd-unconditional&de-activated) exten => *73,n,Macro(hangupcall,) exten => _*73.,1,Answer exten => _*73.,n,Wait(1) exten => _*73.,n,Set(fromext=${EXTEN:3}) exten => _*73.,n,dbDel(CF/${fromext}) exten => _*73.,n,Set(CHAN=${DB(DEVICE/${fromext}/dial)}) exten => _*73.,n,UserEvent(FOP2CUST,Family: astdbcust,Channel: ${CHAN},Value: ) exten => _*73.,n,Playback(call-fwd-unconditional&for&extension) exten => _*73.,n,SayDigits(${fromext}) exten => _*73.,n,Playback(cancelled) exten => _*73.,n,Macro(hangupcall,) [app-cf-on] include => app-cf-on-custom exten => *72,1,Answer exten => *72,n,Wait(1) exten => *72,n,Macro(user-callerid,) exten => *72,n,Playback(call-fwd-unconditional) exten => *72,n,Playback(please-enter-your&extension) exten => *72,n,Read(fromext,then-press-pound,,,,) exten => *72,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}) exten => *72,n,Wait(1) exten => *72,n(startread),Playback(ent-target-attendant) exten => *72,n,Read(toext,then-press-pound,,,,) exten => *72,n,GotoIf($["foo${toext}"="foo"]?startread) exten => *72,n,Wait(1) exten => *72,n,Set(DB(CF/${fromext})=${toext}) exten => *72,n,Set(CHAN=${DB(DEVICE/${fromext}/dial)}) exten => *72,n,UserEvent(FOP2CUST,Family: astdbcust,Channel: ${CHAN},Value: ${toext} ) exten => *72,n,Playback(call-fwd-unconditional&for&extension) exten => *72,n,SayDigits(${fromext}) exten => *72,n,Playback(is-set-to) exten => *72,n,SayDigits(${toext}) exten => *72,n,Macro(hangupcall,) exten => _*72.,1,Answer exten => _*72.,n,Wait(1) exten => _*72.,n,Macro(user-callerid,) exten => _*72.,n,Set(DB(CF/${AMPUSER})=${EXTEN:3}) exten => _*72.,n,Set(CHAN=${DB(DEVICE/${AMPUSER}/dial)}) exten => _*72.,n,UserEvent(FOP2CUST,Family: astdbcust,Channel: ${CHAN},Value: ${EXTEN:3} ) exten => _*72.,n,Playback(call-fwd-unconditional&for&extension) exten => _*72.,n,SayDigits(${AMPUSER}) exten => _*72.,n,Playback(is-set-to) exten => _*72.,n,SayDigits(${EXTEN:3}) exten => _*72.,n,Macro(hangupcall,) [fop2-park] exten => _X.,1,Set(ARRAY(RETURN_EXTENSION,RETURN_CONTEXT)=${CUT(EXTEN,:,1)}\,${CUT(EXTEN,:,2)}) exten => _X.,n,ParkAndAnnounce(PARKED,,Console/dsp,${RETURN_CONTEXT},${RETURN_EXTENSION},1) exten => _X.,n,Goto(${RETURN_CONTEXT},${RETURN_EXTENSION},1) exten => _X.,n,Hangup [fop2-dummy] exten => dummy,1,Answer exten => dummy,2,Wait(1) exten => dummy,3,Hangup ;[fop2-park] ; Alternative fop2-park for asterisk 1.6 and up, using parkinglots and Park application ;exten => _X.,1,Set(ARRAY(RETURN_EXTENSION,RETURN_CONTEXT)=${CUT(EXTEN,:,1)},${CUT(EXTEN,:,2)}) ;exten => _X.,n,Set(PARKINGLOT=parkinglot_${RETURN_CONTEXT}) ;exten => _X.,n,Park(,${RETURN_CONTEXT},${RETURN_EXTENSION},1,s)
log during DND dial via *78 my phone is 1007 my user exten is 9666
127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: MACRO_DEPTH 127.0.0.1 <- Value: 1 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: Newexten 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Context: macro-hangupcall 127.0.0.1 <- Extension: s 127.0.0.1 <- Priority: 4 127.0.0.1 <- Application: GotoIf 127.0.0.1 <- AppData: 1?skipblkvm 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: MACRO_DEPTH 127.0.0.1 <- Value: 1 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: Newexten 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Context: macro-hangupcall 127.0.0.1 <- Extension: s 127.0.0.1 <- Priority: 7 127.0.0.1 <- Application: GotoIf 127.0.0.1 <- AppData: 1?theend 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: MACRO_DEPTH 127.0.0.1 <- Value: 1 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: Newexten 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Context: macro-hangupcall 127.0.0.1 <- Extension: s 127.0.0.1 <- Priority: 9 127.0.0.1 <- Application: Hangup 127.0.0.1 <- AppData: 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: MACRO_DEPTH 127.0.0.1 <- Value: 0 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: RTPAUDIOQOS 127.0.0.1 <- Value: ssrc=164155281;themssrc=1923237859;lp=0;rxjitter=0.000215;rxcount=152;txjitter=0.000000;txcount=179;rlp=0;rtt=0.000000 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: RTPAUDIOQOSJITTER 127.0.0.1 <- Value: minrxjitter=0.000001;maxrxjitter=0.009601;avgrxjitter=0.001482;stdevrxjitter=16831570662546681178158623672130372778864813544777170415896070931141270497851246435101681526382304928610904811525591468605440.000000;reported_minjitter=0.000000;reported_maxjitte 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: RTPAUDIOQOSLOSS 127.0.0.1 <- Value: lost=0;expected=152; 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: RTPAUDIOQOSRTT 127.0.0.1 <- Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: VarSet 127.0.0.1 <- Privilege: dialplan,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Variable: RTPAUDIOQOS 127.0.0.1 <- Value: 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: Hangup 127.0.0.1 <- Privilege: call,all 127.0.0.1 <- Channel: SIP/1007-00003937 127.0.0.1 <- Uniqueid: 1305630186.72219 127.0.0.1 <- CallerIDNum: 9666 127.0.0.1 <- CallerIDName: Simon 127.0.0.1 <- Cause: 16 127.0.0.1 <- Cause-txt: Normal Clearing 127.0.0.1 <- Server: 0 127.0.0.1 <- Event: ExtensionStatus 127.0.0.1 <- Privilege: call,all 127.0.0.1 <- Exten: 9666 127.0.0.1 <- Context: ext-local 127.0.0.1 <- Hint: SIP/1007&Custom:DND9666 127.0.0.1 <- Status: 0 127.0.0.1 <- Server: 0
what else can I check to make this working?
btw. while reading I also found that some have trouble with the Pause/Unpause status not getting updated. I seem to have that too, but it's a feature we didn't use so far.
Thanks in advance
Simon