All pastes #774295 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-11-15 04:32 UTC
rendered paste body
[general]
persistentmembers = yes
eventwhencalled = yes

[queue-2]
;maxlen = 0
timeout = 10
;wrapuptime = 0
;announce-frequency = 0
joinempty = strict
leavewhenempty = strict

periodic-announce-frequency=120
periodic-announce = queue-periodic-announce    ;       ("All reps busy / wait for next")

member => Local/700@parkedcalls
member => Local/701@parkedcalls
;member => Local/702@parkedcalls
;member => Local/703@parkedcalls
;member => Local/704@parkedcalls
;member => Local/705@parkedcalls




[nextnum]
;set next number
exten => _set-XXX,1,GotoIf($["${DB(nextnum/${EXTEN:-3})}" != "1"]?found)
exten => _set-XXX,n,Goto(set-$[${EXTEN:-3}+1],1)
exten => _set-XXX,n(found),Set(RESULT=${EXTEN:-3})
exten => _set-XXX,n,Verbose(3|Found next number: ${RESULT})
exten => _set-XXX,n,Set(DB(nextnum/${RESULT})=1)
exten => _set-XXX,n,Return()

;free number
exten => _del-XXX,1,Set(RESULT=${DB_DELETE(nextnum/${EXTEN:-3})})
exten => _del-XXX,n,Return()



[queue-support2]
exten => s,1,Set(DATEFMT=${STRFTIME(${EPOCH}|EST5EDT|%Y%m%d\-%T)})
exten => s,n,Set(CDR(userfield)=/home/asterisk/calls/SUPPORT-${DATEFMT}.mp3)

; remote call center
exten => s,n,Set(DIALSTR=SIP/jon)

; inherite variables
exten => s,n,GoSub(nextnum,set-500|1)
exten => s,n,Set(_CONFNUM=${RESULT})
exten => s,n,Set(CIDNUM=${CALLERID(num)})

; build support queue and email notifications
exten => s,n,TrySystem(/home/asterisk/notify-callqueues2 Support \'${CALLERID(name)}\' \'${CALLERID(num)}\' \'${PGSQL_GET_AREACODE(${CALLERID(num):0:3})}\' \'${CONFNUM}\' \'${DIALSTR}\' \'${KAYAKO_GET_PHONE(${CALLERID(num)})}\')

; join customer to conference
;; thank you for calling queue outlook, your call will be answered by the next available representative ;;

; instead of joining the caller and queue member,
; we are going to put them both in a conference.
exten => s,n,Dial(Local/support@queue-support2||G(s^pickup))

exten => s,n(pickup),Goto(queue-support2-calling,s,calling) ; calling (customer)
exten => s,n(called),NoOp(Called Party...) ; called (remote call center)

; answering the call does not remove the local channel used to get here
; that doesn't know the variables. The other choice is to __ the variables.
exten => s,n,Wait(.1)
;exten => s,n,RemoveQueueMember()
exten => s,n,GoSub(nextnum|del-${PARKINGEXTEN}|1)
;exten => s,n,Ringing() ; called (support queue)
;exten => s,n,Wait(3)
exten => s,n,MeetMe(${CONFNUM}|1DAqx|${CONFPIN})

exten => support,1,Queue(queue-2|t|||1800) ; timeout after 30min

[queue-support2-calling]
exten => s,1(calling),NoOp(Calling party...) ; (customer)
;exten => s,n,Ringing()
;exten => s,n,Wait(3)
exten => s,n,MeetMe(${CONFNUM}|1Dqx|${CONFPIN})

exten => h,1,Verbose(4|Calling party left Conference)
exten => h,n,MeetMeAdmin(${CONFNUM}|K)
exten => h,n,GoSub(nextnum|del-${CONFNUM}|1)
exten => h,n,Hangup()

[queue-support-remoteagent]
; the callerID must be the CALLERS number...
exten => s,1,Answer()
exten => s,n(loop),Background(custom/support-accept)
exten => s,n,Background(custom/support-accept-number${IF($["${CIDNUM}"="restricted"]?-restricted)})
exten => s,n,SayDigits(${CIDNUM})
exten => s,n,WaitExten(5)
exten => s,n,Goto(loop)

; this number is removed from database when the call is unparked.
exten => _X,1,GoSub(nextnum|set-700|1)
exten => _X,n,Set(_PARKINGEXTEN=${RESULT})
exten => _X,n,Park()