[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()