All pastes #49570 Raw Edit

Something

public text v1 · immutable
#49570 ·published 2006-04-17 04:34 UTC
rendered paste body
;ROOMMATES IN A HAT
;SPEC:  Every roommate gets a respective weight, based on which two are chosen (not the same two)
;       to clean the house.
;       Using a "pseudo-array" of strings bsaed on $ROOMMATE[1-6], we'll prompt the
;       caller for a weight [1-9], and make a corresponding array of integers (called $MATEWEIGT[1-6]).
;       Finally, bsaed on roommates weight, roommates are given a relative probability of drawing the
;       cleaning straw.  Two separate winners are put into $ClEANER[1] and $CLEANER[2]


[riah]
;who are the roommates?
exten => s,1,set(__ROOMMATE[1]="Brad")
exten => s,n,set(__ROOMMATE[2]="Brian")
exten => s,n,set(__ROOMMATE[3]="James")
exten => s,n,set(__ROOMMATE[4]="Jeff")
exten => s,n,set(__ROOMMATE[5]="Marc")
exten => s,n,set(__ROOMMATE[6]="Aubrey")

;for each roommate prompt for a weight
exten => s,n,set(__COUNT=1)                             ;set roommate counter
exten => s,n,while($[${COUNT}<7])                       ;while we havent assigned a weight to all the roommates...
exten => s,n,background(beep)                           ;prompt with a tone...
exten => s,n,waitexten(5)                               ;and givem five seconds to enter an extension 0-9
exten => s,n(repeat),set(__COUNT=$[${COUNT}+1])      ;then increment the counter
exten => s,n,endwhile

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;take the weight and build the array;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        exten => _X,1,set(__MATEWEIGHT[${COUNT}]= ${EXTEN})     ;give each roommate a relative weight using the counter
        exten => _X,n,goto(s,repeat)                            ;then repeat
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;after weights are assigned, pick roommates until we have two winners
exten => s,n,set(__WINNERS=0)                           ;at first we have no winners
exten => s,n,set(__LASTCOUNT=1)                         ;and we'll use a new counter
exten => s,n(draw),while(${WINNERS} < 2)                        ;while we dont have two winners...
        exten => s,n,while(${LASTCOUNT} < 6)                    ;and while we havent checked all the roommates
        exten => s,n,goto(${ROOMMATE[${LASTCOUNT}]})            ;go to an extension based on roommate name below
        exten => s,n,set(__LASTCOUNT= $[${LASTCOUNT} + 1 ])     ;should i just reset the old counter?  who cares.
        exten => s,n,endwhile                                   ;
exten => s,n,set(__LASTCOUNT = 1)                               ;reset counter if we dont have two winners and try again
exten => s,n,endwhile


        ;;;;;;;;Go to exten ${ROOMMATEN[1-6], and use their weight to "draw" for a "win";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        exten => _${ROOMMATE[${LASTCOUNT}]},1,random(${MATEWEIGHT[${LASTCOUNT}]},${ROOMMATE[${LASTCOUNT}]},3)           ;jump to three if we have a winner
        exten => _${ROOMMATE[${LASTCOUNT}]},2,goto(s,draw)                                                              ;or else draw again.  LABEL BROKEN?
        exten => _${ROOMMATE[${LASTCOUNT}]},3,gotoif("${ROOMMATE[${LASTCOUNT} != $[${ROOMMATE[$[${LASTCOUNT} - 1]]}?4|6);did we just pick him?
        exten => _${ROOMMATE[${LASTCOUNT}]},4,set(__WINNERS = $[${WINNERS} + 1])                                        ;if not we have a winner
        exten => _${ROOMMATE[${LASTCOUNT}]},5,set(__CLEANER[${WINNERS}]="${ROOMMATE[${LASTCOUNT}]}")                    ;and we set the CLEANER variable
        exten => _${ROOMMATE[${LASTCOUNT}]},6,goto(s,draw)                                                              ;or else we draw again
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;spit out the winners at the end
exten => s,n,noop("${CLEANER[1]} and ${CLEANER[2]} are the winners."








  == Parsing '/etc/asterisk/sip_notify.conf': Found
    -- Hungup 'Zap/2-1'
    -- Starting simple switch on 'Zap/2-1'
    -- Executing Goto("Zap/2-1", "riah|s|1") in new stack
    -- Goto (riah,s,1)
    -- Executing SetVar("Zap/2-1", "__ROOMATE[1]="Brad"") in new stack
    -- Executing SetVar("Zap/2-1", "__ROOMATE[2]="Brian"") in new stack
    -- Executing SetVar("Zap/2-1", "__ROOMATE[3]="James"") in new stack
    -- Executing SetVar("Zap/2-1", "__ROOMATE[4]="Jeff"") in new stack
    -- Executing SetVar("Zap/2-1", "__ROOMATE[5]="Marc"") in new stack
    -- Executing SetVar("Zap/2-1", "__ROOMATE[6]="Aubrey"") in new stack
    -- Executing SetVar("Zap/2-1", "__COUNT=1") in new stack
    -- Executing While("Zap/2-1", "1") in new stack
    -- Executing NoOp("Zap/2-1", "1") in new stack
    -- Executing BackGround("Zap/2-1", "beep") in new stack
    -- Playing 'beep' (language 'en')
    -- Executing WaitExten("Zap/2-1", "5") in new stack
  == CDR updated on Zap/2-1
    -- Executing SetVar("Zap/2-1", "_MATEWEIGHT[1]= 1") in new stack
    -- Executing Goto("Zap/2-1", "s|repeat") in new stack
    -- Goto (riah,s,12)
    -- Executing SetVar("Zap/2-1", "__COUNT=2") in new stack
    -- Executing EndWhile("Zap/2-1", "") in new stack
    -- Executing While("Zap/2-1", "1") in new stack
    -- Executing NoOp("Zap/2-1", "2") in new stack
    -- Executing BackGround("Zap/2-1", "beep") in new stack
    -- Playing 'beep' (language 'en')
    -- Executing WaitExten("Zap/2-1", "5") in new stack
  == CDR updated on Zap/2-1
    -- Executing SetVar("Zap/2-1", "_MATEWEIGHT[2]= 2") in new stack
    -- Executing Goto("Zap/2-1", "s|repeat") in new stack
    -- Goto (riah,s,12)
    -- Executing SetVar("Zap/2-1", "__COUNT=3") in new stack
    -- Executing EndWhile("Zap/2-1", "") in new stack
    -- Executing While("Zap/2-1", "1") in new stack
    -- Executing NoOp("Zap/2-1", "3") in new stack
    -- Executing BackGround("Zap/2-1", "beep") in new stack
    -- Playing 'beep' (language 'en')
    -- Executing WaitExten("Zap/2-1", "5") in new stack
  == CDR updated on Zap/2-1
    -- Executing SetVar("Zap/2-1", "_MATEWEIGHT[3]= 3") in new stack
    -- Executing Goto("Zap/2-1", "s|repeat") in new stack
    -- Goto (riah,s,12)
    -- Executing SetVar("Zap/2-1", "__COUNT=4") in new stack
    -- Executing EndWhile("Zap/2-1", "") in new stack
    -- Executing While("Zap/2-1", "1") in new stack
    -- Executing NoOp("Zap/2-1", "4") in new stack
    -- Executing BackGround("Zap/2-1", "beep") in new stack
    -- Playing 'beep' (language 'en')
    -- Executing WaitExten("Zap/2-1", "5") in new stack
  == CDR updated on Zap/2-1
    -- Executing SetVar("Zap/2-1", "_MATEWEIGHT[4]= 4") in new stack
    -- Executing Goto("Zap/2-1", "s|repeat") in new stack
    -- Goto (riah,s,12)
    -- Executing SetVar("Zap/2-1", "__COUNT=5") in new stack
    -- Executing EndWhile("Zap/2-1", "") in new stack
    -- Executing While("Zap/2-1", "1") in new stack
    -- Executing NoOp("Zap/2-1", "5") in new stack
    -- Executing BackGround("Zap/2-1", "beep") in new stack
    -- Playing 'beep' (language 'en')
    -- Executing WaitExten("Zap/2-1", "5") in new stack
  == CDR updated on Zap/2-1
    -- Executing SetVar("Zap/2-1", "_MATEWEIGHT[5]= 5") in new stack
    -- Executing Goto("Zap/2-1", "s|repeat") in new stack
    -- Goto (riah,s,12)
    -- Executing SetVar("Zap/2-1", "__COUNT=6") in new stack
    -- Executing EndWhile("Zap/2-1", "") in new stack
    -- Executing While("Zap/2-1", "1") in new stack
    -- Executing NoOp("Zap/2-1", "6") in new stack
    -- Executing BackGround("Zap/2-1", "beep") in new stack
    -- Playing 'beep' (language 'en')
    -- Executing WaitExten("Zap/2-1", "5") in new stack
  == CDR updated on Zap/2-1
    -- Executing SetVar("Zap/2-1", "_MATEWEIGHT[6]= 6") in new stack
    -- Executing Goto("Zap/2-1", "s|repeat") in new stack
    -- Goto (riah,s,12)
    -- Executing SetVar("Zap/2-1", "__COUNT=7") in new stack
    -- Executing EndWhile("Zap/2-1", "") in new stack
    -- Executing While("Zap/2-1", "0") in new stack
  == CDR updated on Zap/2-1
    -- Executing Random("Zap/2-1", "||3") in new stack
    -- Executing Goto("Zap/2-1", "s|draw") in new stack
Apr 16 07:20:07 NOTICE[14458]: pbx.c:1741 pbx_extension_helper: No such label 'draw' in extension 's' in context 'riah'
Apr 16 07:20:07 WARNING[14458]: pbx.c:6486 ast_parseable_goto: Priority 'draw' must be a number > 0, or valid label
  == Spawn extension (riah, , 2) exited non-zero on 'Zap/2-1'
    -- Hungup 'Zap/2-1'