; Asterisk Extensions file for MisterHouse ; ; Copyright (c) 2005 Ed Guy, edguy@eGuy.org ; GPL ; ;put theses in your internal dialing context... ; enter mh menu exten => 64,1,Goto(MisterHouse,s,1) ; play message.wav file, (called by spool file) exten => 999999999,1,Goto(MisterHouse,p,1) [MisterHouse] ; ask "press one for on, 2 for off, 3 to replay last message" exten => s,1,setvar(CMD=ON) exten => s,2,background(mh/mh-intro) exten => s,3,Goto(MisterHouse,s,2) exten => 1,1,setvar(CMD=ON) exten => 2,1,setvar(CMD=OFF) exten => 3,1,playback(/tmp/message) exten => _[12],2,Goto(MisterHouse-sub1,s,1) exten => 3,2,hangup ; play message file. usually called by spool file. exten => p,1,answer exten => p,2,playback(/tmp/message) exten => p,3,hangup [MisterHouse-sub1] ; ask user to enter code for lights to tuen on or off. ; code is one to three digits representing a bit mask ; for non-techies, you'll want to make up specifc codes.. exten => s,1,noop exten => s,2,background(mh/mh-select) exten => s,3,Goto(MisterHouse-sub1,s,1) ; todo: should limit retries... ;set variable exten => _XXX,1,SetVar(MASK=${EXTEN}) exten => _XX,1,SetVar(MASK=${EXTEN}) exten => _X,1,SetVar(MASK=${EXTEN}) exten => _X#,1,goto(MisterHouse-sub1,${EXTEN:0:1},1) exten => _XX#,1,goto(MisterHouse-sub1,${EXTEN:0:2},1) exten => _XXX#,1,goto(MisterHouse-sub1,${EXTEN:0:3},1) ; now run macro-MH on lights. Least significant bit is controls first exten => _X.,2,Macro(MH,${MASK},${CMD},\$LRlight) exten => _X.,3,Macro(MH,${MASK},${CMD},\$office) exten => _X.,4,Macro(MH,${MASK},${CMD},\$DnHallLight) exten => _X.,5,Macro(MH,${MASK},${CMD},\$UpHallLight) exten => _X.,6,Macro(MH,${MASK},${CMD},\$TVLight) exten => _X.,7,Macro(MH,${MASK},${CMD},\$HallLight) exten => _X.,8,playback(auth-thankyou) exten => _X.,9,hangup ; Special code FishTank ('ft' =38) exten => 38,1,system(/misterhouse/mh/bin/mhsend -host 192.168.1.1 -password xxxx -run \'set \$FishTank \'${CMD}\'\') exten => 38,2,playback(auth-thankyou) exten => 38,3,HangUp exten => i,1,Goto(MisterHouse,s,1) exten => t,1,playback(auth-thankyou) exten => t,2,hangup [macro-MH] ; test LSB of ARG1, if set issue mh command 'set ${ARG3} ${ARG2}' ie. 'set $LRlight ON' ; side effect. set channel variable MASK to ARG1/2 (Shift Right) exten => s,1,noop(${ARG1},${ARG2},${ARG3}) exten => s,2,SetVar(VAL=$[${ARG1} % 2]) exten => s,3,SetVar(MASK=$[${ARG1} / 2]) exten => s,4,gotoif($[${VAL} = 0 ]?99) exten => s,5,system(/misterhouse/mh/bin/mhsend -host 192.168.1.1 -password xxxx -run \'set ${ARG3} \'${ARG2}\'\') exten => s,6,playback(beep) exten => s,7,SayPhonetic(${ARG3}) exten => s,99,noop(${ARG1},${ARG2})