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