All pastes #832909 Raw Edit

Anonymous

public text v1 · immutable
#832909 ·published 2007-12-26 19:35 UTC
rendered paste body
This describes a context that is a wrapper for a generic call file format. The idea is to do some processing of variables in a call file before deciding to make the outbound call.

The problem is that two processes run in Asterisk. I used to be able to tell the difference between the two and route one to 'nullcontext' below so that I didn't get duplication of the call.

Here is a call file:

---
Channel: Local/s@timedcontext/n
Callerid:XXXXXXXXXX
RetryTime:300
WaitTime:30
MaxRetries: 3
Context: timedcontext
Extension:s
Priority:1
SetVar:INTERNAL_MACRO_EXTENSION=wo-reminder
SetVar:CALL_EXPIRATION=20071227000000
SetVar:PLAYFILE=2a0103d439882c9e6dc344949efbd198
SetVar:TZ_OFFSET=-1
SetVar:PHONE_NUMBER=17817619228
SetVar:DAVESVAR=<<xmlcalldata>>
SetVar:EARLIEST_CALLTIME=09
SetVar:LATEST_CALLTIME=08
SetVar:IVRUNIQUEID=2a0103d439882c9e6dc344949efbd198
---

[timedcontext]
exten => s,1,SetCDRUserField(${DAVESVAR})
exten => s,2,Answer
exten => s,3,Gotoif($[${LEN(${CALL_EXPIRATION})} <= 0]?timed-nullcontext,s,1:s,4)   ;this used to be where I could re-route one of the processes and kill it when the other one finished
exten => s,4,NoOp('~~~~~~~~~~~~~ FRAMEWORK CHANNEL IN PROGRESS ~~~~~~~~~~~~~~')
exten => s,5,SetGlobalVar(TIME_RESTRICTION_LATE=21)                                     ;set latest call time to 8pm (20:00)  put into main extension file??
exten => s,6,SetGlobalVar(TIME_RESTRICTION_EARLY=09)                                    ;set earliest call time to 9pm (9)  put into main extension file??
exten => s,7,Macro(channel-ok-to-call,s,10,${CALL_EXPIRATION},${TZ_OFFSET})
exten => s,8,SetVar(TEMP=${UNIQUEID:0:10}${UNIQUEID:11:1})
exten => s,9,Dial(${OUT_3}/${PHONE_NUMBER}|60|gM(${INTERNAL_MACRO_EXTENSION}^${PLAYFILE}^${TEMP}^${IVRUNIQUEID})) ;dave added the g
exten => s,10,NoOp('~~~~~~~~~~~~~ LEAVING FRAMEWORK CHANNEL ~~~~~~~~~~~~~~')
exten => s,11,Hangup;end the call

[macro-channel-ok-to-call]
exten => s,1,SetVar(currentHour=$[${TIMESTAMP:9:2} + ${ARG4}])
exten => s,2,SetVar(TSFORMATTED=${TIMESTAMP:0:8}${TIMESTAMP:9:6})
exten => s,3,GotoIf($[${currentHour} < 0]?s,4:s,5});check to see if current hour < 0 ie 1-3 is 1am + -3 hour offest which is -2 or 20:00 (24+-2)
exten => s,4,SetVar(currentHour=$[24 + ${currentHour}])
exten => s,5,NoOp(checking if ${TSFORMATTED} is < ${ARG3}...)
exten => s,6,GotoIf($[${TSFORMATTED} < ${ARG3}]?s,8:s,7);check if the call has expired
exten => s,7,Goto(${MACRO_CONTEXT},${ARG1},${ARG2})
exten => s,8,GotoIf($[${currentHour} < ${TIME_RESTRICTION_LATE}]?s,9:${MACRO_CONTEXT},${ARG1},${ARG2});check if we are past the late time boundary
exten => s,9,GotoIf($[${currentHour} >= ${TIME_RESTRICTION_EARLY}]?s,10:${MACRO_CONTEXT},${ARG1},${ARG2});check if we are before the early time boundary
exten => s,10,NoOp('~~~~~~~~~~~ LEAVING OK TO CALL CHECK - IT IS OK TO CALL ~~~~~~~~~~~~~')

[timed-nullcontext]
exten => s,1,NoCDR()
exten => s,2,SetVar(TEMP=${UNIQUEID:0:10}${UNIQUEID:11:1})
exten => s,3,NoOp('~~~~~~~~~~~~ WAITING IN NULL CONTEXT ~~~~~~~~~~~~~')
exten => s,4,Wait(5)
exten => s,5,NoOp('~~~~~~~~~~~~ CHECKING IF CALL FINISHED - GLOBAL VAR IS: FINISHED_'${TEMP}' value is: '${FINISHED_${TEMP}}'~~~~~~~~~~~~~')
exten => s,6,GoToIf($[${LEN(${FINISHED_${TEMP}})} >= 1]?timedcontext,s,10:s,7)
exten => s,7,Goto(s,2)

[macro-wo-reminder]
exten => s,1,Wait(2)
exten => s,2,Background(wo-reminder-start)
exten => s,3,Background(/var/www/html/asterisk/sound/${ARG1})
exten => s,4,Background(wo-reminder-repeat)
exten => s,5,Wait(3)
exten => s,6,Background(wo-reminder-start)
exten => s,7,Background(/var/www/html/asterisk/sound/${ARG1})
exten => s,8,Background(wo-reminder-finish)
exten => s,9,SetGlobalVar(FINISHED_${ARG2}=true)
exten => s,10,Hangup