globals
{
	static=yes;
	writeprotect=yes;
	CONSOLE=Console/dsp;        // Console interface for demo
	IAXINFO=murf:tlhfckoct;     // IAXtel username/password
	FWDNUMBER=544788 ;          // your calling number
	FWDCIDNAME="Joe-Worker";    // your caller id
	FWDPASSWORD=zingledoodle ;  // your password
	FWDRINGS=Zap/6 ;            // the phone to ring
	FWDVMBOX=1 ;                // the VM box for this user
}

macro std-exten( ext , dev )
{
        Dial(${dev}/${ext},20);
        switch(${DIALSTATUS})
		{
        case BUSY:
                Voicemail(b${ext});
                break;
	case NOANSWER:
		Voicemail(u${ext});
		break;
	case ANSWER:
		break;
        default:
                Voicemail(u${ext});
        }
        catch a {
                VoiceMailMain(${ext});
        }
}

macro std-priv-exten_1( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_2( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_3( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_4( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_5( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_6( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_7( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_8( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_9( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_10( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_11( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_12( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_13( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_14( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_15( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_16( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_17( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_18( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_19( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_20( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_21( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_22( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_23( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_24( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_25( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_26( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_27( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_28( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_29( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_30( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_31( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_32( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_33( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_34( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_35( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_36( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_37( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_38( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_39( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_40( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_41( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_42( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_43( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_44( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_45( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_46( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_47( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_48( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_49( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_50( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_51( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_52( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_53( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_54( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_55( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_56( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_57( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_58( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_59( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_60( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_61( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_62( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_63( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_64( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_65( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_66( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_67( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_68( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_69( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_70( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_71( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_72( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten_73( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}


macro std-priv-exten( dev, ext , timeout, opts, torcont, dontcont )
{
        Dial(${dev},${timeout},${opts});
	NoOp(${DIALSTATUS} was chosen);
        switch(${DIALSTATUS})
		{
        case TORTURE:
		goto ${torcont}|s|begin;
                break;
        case DONTCALL:
		goto ${dontcont}|s|begin;
                break;
        case BUSY:
                Voicemail(b${ext});
                break;
        case ANSWER:
		break;
        case NOANSWER:
                Voicemail(u${ext});
                break;
        default:
                Voicemail(u${ext});
        }
}

macro fillcidname()
{
        if( "${CALLERID(num)}" = "" )   // nothing to work with, quit!!!
                return;
        Set(cidn=${DB(cidname/${CALLERID(num)})});
        if( "${CALLERID(name)}" != "" )
        {
                if( ("${cidn}" = "Privacy Manager" & "${CALLERID(name)}" != "Privacy Manager") | "${cidn}" = "" ) // if the entry isn't in the database,
                                                                                // or if an entry exists, and it's "Privacy Manager", empty, (or add other useless possibilities).
                {
                       Set(DB(cidname/${CALLERID(num)})=${CALLERID(name)});     // then set or override what's in the DB
                }
        }
        // Now, we fill in the callerid info from the incoming entry, if it's stuff worth using
        // Ignore fundamentally semi-anonymous information from local cell phones
        // if the db has an entry for this number, and it's not a canned string from a cell phone company
        if(  ( "${cidn}" != "" ) & ( "${CALLERID(name)}" = ""
                                                  | "${CALLERID(name)}" = "CODY,WY        "
                                                  | "${CALLERID(name)}" = "POWELL,WY      "
                                                  | "${CALLERID(name)}" = "WIRELESS CALLER"
                                                  | "${CALLERID(name)}" = "SUBSCRIBER,WIRE"
                                                  | "${CALLERID(name)}" = "CELLULAR ONE"
                                                  | "${CALLERID(name)}" = "Cellular One Customer"
                                                  | "${CALLERID(name)}" = "CELLULAR ONE   "
                                                  | "${CALLERID(name)}" = "Privacy Manager"
                                                  | "${CALLERID(name)}" = "RIVERTON,WY    "
                                                  | "${CALLERID(name)}" = "BASIN,WY       "
                                                  | "${CALLERID(name)}" = "BILLINGS,MT    "
                                                  | "${CALLERID(name)}" = "PROVO,UT       "
                                                  | "${CALLERID(name)}" = "TOLL FREE      " ) )  // put stuff in the above, that the phone company tends to put in your callerid,
                                                                                                 // that you would rather override with DB info
                                                                                                 // there's no way to guess them all, but you can get the most popular ones...
                                                                                                 // why cell phones can't do CID like everybody else, ....?
        {
                Set(CALLERID(name)=${cidn});  // Override what the phone company provides with what's in the DB for this number.
        }
}

macro ciddial(dialnum, lookup, waittime, dialopts, ddev)
{
	Set(cidnu=${CALLERID(num)});
	Set(cidn=${DB(cidname/${lookup})});
	Set(CALLERID(name)=${cidn});
	Dial(${ddev}/${dialnum}|${waittime}|${dialopts});
	if( "${DIALSTATUS}" = "CHANUNAVAIL" )
	{
		BackGround(try_voip);
		CALLERID(num)=7075679201;
		Dial(SIP/1${lookup}@tctwest,${waittime},${dialopts});
		if( "${DIALSTATUS}" = "CHANUNAVAIL" )
		{
			BackGround(try_cell);
			CALLERID(num)=${cidnu}; // put the original number back
			Dial(Zap/2/${lookup},${waittime},${dialopts});
		}
	}
}

macro ciddial3(dialnum, lookup, waittime, dialopts, ddev)
{
	Set(cidnu=${CALLERID(num)});
	Set(cidn=${DB(cidname/${lookup})});
	Set(CALLERID(name)=${cidn});
	Dial(${ddev}/${dialnum}|${waittime}|${dialopts});
	if( "${DIALSTATUS}" = "CHANUNAVAIL" )
	{
		BackGround(try_cell);
		Dial(Zap/2/${lookup},${waittime},${dialopts});
	}
}

macro ciddial2(dialnum, lookup, waittime, dialopts, ddev) // give priority to tctwest, then the ZAP in emergencies
{
	Set(cidn=${DB(cidname/${lookup})});
	Set(cidnu=${CALLERID(num)});
	Set(CALLERID(name)=${cidn});
	Set(CALLERID(num)=7075679201);
	Dial(SIP/1${lookup}@tctwest,${waittime},${dialopts});
	if( "${DIALSTATUS}" = "CHANUNAVAIL" )
	{
		Set(CALLERID(num)=${cidnu}); // put the original number back
		BackGround(try_zap);
		Dial(${ddev}/${dialnum},${waittime}|${dialopts});
		if( "${DIALSTATUS}" = "CHANUNAVAIL" )
		{
			BackGround(try_cell);
			Dial(Zap/2/${lookup},${waittime},${dialopts});
		}
	}
}

macro callerid-liar()
{
	TrySystem(/usr/bin/play /var/lib/asterisk/sounds/priv-callerintros/LIAR.gsm&);
	Background(priv-liar);  // Script: OOOps! Sorry! I don't allow men with ski masks pulled over their
                            //         faces to get in the front door, and unidentified callers won't fair
                            //         any better. You entered *MY* phone number. That won't work.
                            //         If you are telemarketing, cross me off the list, and don't call again.
                            //         If you did this by mistake, forgive my defenses, and call again.
                           // Alternate: (priv-liar2)
				   // Script: You have chosen to try to deceive my system and withhold your CallerID,
                                   //           by entering my own phone number as YOUR CallerID. I find this
                                   //           offensive because you are being dishonest. I will not do business nor
                                   //           waste my time talking to anyone who is less than honest and forthcoming.
                                   //           Take me off your call list and do not call me again.
	Hangup();
}

macro callerid-bad()
{
	mycid=${CALLERID(num)}:"1([0-9]+)";
 	Set(CALLERID(num)=${mycid});
 	Wait(0);
}

context privacyManagerFailed {
 	s => {
		begin:
 		Background(PrivManInstructions);  // Script: OOps, that didn't go well. You need to enter *your* area code, and *your* 7 digit
                                               // phone number, for a total of 10 digits, or you'll be handed over to the monkeys. Let's
                                               // try this again, and hopefully you can get past our front-line defenses!
 		PrivacyManager();
 		if( "${PRIVACYMGRSTATUS}" = "FAILED" )
 		{
 			Background(tt-allbusy);
			Background(tt-somethingwrong);
			Background(tt-monkeysintro);
 			Background(tt-monkeys);
 			Background(tt-weasels);
 			Hangup();
 		}
 		else
 		{
 			goto homeline|s|postPriv;
 		}
 	}
}

// Some comments
// Some more comments

context homeline {
	s => {
	begin:
		Answer();
		Set(repeatcount=0);
		Zapateller(nocallerid);
		PrivacyManager();
		if( "${PRIVACYMGRSTATUS}" = "FAILED" )
		{
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/privmanfailed.gsm);
			&std-priv-exten(Zap/3r1&Zap/5r1,2,25,mtw,telemarket,telemarket);
			Hangup();
			return;
//			goto privacyManagerFailed|s|begin;
		}
	postPriv:
		&fillcidname();
		Set(CONFCIDNA=${CALLERID(name)});
		Set(CONFCIDNU=${CALLERID(num)});
		AGI(callall);
		AGI(submit-announce.agi);
		if( "${CALLERID(num)}" : "1" )
		{
			&callerid-bad();
		}
		if( "${CALLERID(num)}"  = "7077577685" & "${CALLERID(name)}" : "Privacy Manager" )
		{
			&callerid-liar();
		}
		TrySystem(/usr/local/bin/who-is-it ${CALLERID(num)} "${CALLERID(name)}"&);
		Set(lds=${DB(playlds/${CALLERID(num)})});
		if( "${lds}" = "1" )
		{
			SetMusicOnHold(mohlds);
		}
		direct=${DB(DirectCall/${CALLERID(num)})};
		if( "${direct}" != "" & ${direct} != 0 )
		{
			verbose(direct is XXX#${direct}XXXX);
			Playback(greetings/direct); // Welcome to the Murphy residence. This system will automatically try to connect you to...
			Playback(/var/spool/asterisk/voicemail/default/${direct}/greet);
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/${direct}/greet.wav&);
			switch(${direct})
			{
			case 1: //Steve
				&std-priv-exten(Zap/6r3&Sip/murf,1,25,mpA(beep)tw,telemarket,telemarket);
				goto s|loopback;
			case 2: //Sonya
		                &std-priv-exten(Zap/3r1&Zap/5r1,2,25,mtw,telemarket,telemarket);
				goto s|loopback;
			default: // all the kids
				Set(z=${direct}-2);
				goto homeline-kids|${z}|1;
			}
		}
	loopback:
		ifTime(*|*|20-25|dec)
		{
			Playback(greetings/christmas);
		}
		else ifTime(*|*|31|dec)
		{
			Playback(greetings/newyear);
		}
		else ifTime(*|*|1|jan)
		{
			Playback(greetings/newyear);
		}
		else ifTime(*|*|14|feb)
		{
			Playback(greetings/valentines);
		}
		else ifTime(*|*|17|mar)
		{
			Playback(greetings/stPat);
		}
		else ifTime(*|*|31|oct)
		{
			Playback(greetings/halloween);
		}
		else ifTime(*|mon|15-21|jan)
		{
			Playback(greetings/mlkDay);
		}
		else ifTime(*|thu|22-28|nov)
		{
			Playback(greetings/thanksgiving);
		}
		else ifTime(*|mon|25-31|may)
		{
			Playback(greetings/memorial);
		}
		else ifTime(*|mon|1-7|sep)
		{
			Playback(greetings/labor);
		}
		else ifTime(*|mon|15-21|feb)
		{
			Playback(greetings/president);
		}
		else ifTime(*|sun|8-14|may)
		{
			Playback(greetings/mothers);
		}
		else ifTime(*|sun|15-21|jun)
		{
			Playback(greetings/fathers);
		}
		else
		{
			Playback(greetings/hello);   // None of the above? Just a plain hello will do
		}
		Background(murphy-homeline-intro1);  // Script: Hello-- Welcome to the Murphy's! If you already know what
                                                //  option you want, you don't have to wait for this entire spiel-- just
                                                //  have at it.
                                                //  If you are calling because this number is on a list of some sort, dial 6.
                                                //  If you want Sonya, dial 1.
                                                //  If you want one of the kids, dial 2.
                                                //  If you want Steve, dial 3.
						//  to play with your introduction, dial 5.
                                                //  If we don't seem to be giving you the time of day, try 7.
                                                //  Have a good day!

	}
	1 => {  // Sonya
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/2/greet.wav&);
			&std-priv-exten(Zap/3r1&Zap/5r1,2,25,mtw,telemarket,telemarket);
			goto s|loopback;
	}
	2 => {  // Kids
			goto homeline-kids|s|begin;
	}
	21 => {
		Dial(IAX2/seaniax,20,T);
		}
	3 => {  // Steve
			&std-priv-exten(Zap/6r3&Sip/murf,1,25,mpA(beep)tw,telemarket,telemarket);
			goto s|loopback;
	}
	4 => {  // Voicemail
			VoicemailMain();
			goto s|loopback;
	}
	5 => {   // play with intro
			goto home-introduction|s|begin;
	}
	6 => {    // Telemarketers
			goto telemarket|s|begin;
	}
	7 => {    // time of day, riddle
			agi(tts-riddle.agi);
			Background(gsm/what-time-it-is2);
			SayUnixTime();
			goto s|loopback;
	}
	792 => {   // Page All
			goto pageall|s|begin;
	}
	793 => { // check the tone recognition
			Read(zz,,0,,1,0);
			SayDigits(${zz});
	}
	t => {
		Set(repeatcount=${repeatcount} + 1);
		if( ${repeatcount} < 3 )
		{
			goto s|loopback;  // just loopback isn't enough
		}
		Hangup();
	}
	i => {
		Background(invalid);
		goto s|loopback;
	}
	o => {
		Congestion();
	}
	fax => {
		Dial(Zap/4);
	}
}

// Some comments
// Some more comments

context pageall {
	s => {
	begin:
		AGI(callall);
		MeetMe(5555,dtqp);
		MeetMeAdmin(5555,K);
		Hangup();
	}

	h => {
	begin:
		MeetMeAdmin(5555,K);
		Background(conf-muted);
		Hangup();
	}
}

// Some comments
// Some more comments

context add-to-conference {
	start => {
		NoCDR();
		MeetMe(5555,dmqp);
	}
	h => {
		Hangup();
	}
}

context home-introduction {
	s => {
	begin:
		Background(intro-options);   // Script: To hear your Introduction, dial 1.
						//         to record a new introduction, dial 2.
						//         to return to the main menu, dial 3.
						//         to hear what this is all about, dial 4.
	}
	1 => {
		Playback(priv-callerintros/${CALLERID(num)});
		goto s|begin;
	}
	2 => {
		goto home-introduction-record|s|begin;
	}
	3 => {
		goto homeline|s|loopback;
	}
	4 => {
		Playback(intro-intro);     // Script:
				// This may seem a little strange, but it really is a neat
				// thing, both for you and for us. I've taped a short introduction
				// for many of the folks who normally call us. Using the Caller ID
				// from each incoming call, the system plays the introduction
				// for that phone number over a speaker, just as the call comes in.
				// This helps the folks
				// here in the house more quickly determine who is calling.
				// and gets the right ones to gravitate to the phone.
				// You can listen to, and record a new intro for your phone number
				// using this menu.
		goto s|begin;
	}
	t => {
		goto s|begin;
	}
	i => {
		Background(invalid);
		goto s|begin;
	}
	o => {
		goto s|begin;
	}
}

context home-introduction-record {
	s => {
	begin:
		Background(intro-record-choices);    // Script:
				//      If you want some advice about recording your
				// 	introduction, dial 1.
				//      otherwise, dial 2, and introduce yourself after
				//      the beep.
	}
	1 => {
	Playback(intro-record);
				//	Your introduction should be short and sweet and crisp.
				//	Your introduction will be limited to 10 seconds.
				//	This is NOT meant to be a voice mail message, so
				//	please, don't say anything about why you are calling.
				//	After we are done making the recording, your introduction
				//	will be saved for playback.
				//	If you are the only person that would call from this number,
				//	please state your name.  Otherwise, state your business
				//	or residence name instead. For instance, if you are
				//	friend of the family, say, Olie McPherson, and both
				//	you and your kids might call here a lot, you might
				//	say: "This is the distinguished Olie McPherson Residence!"
				//	If you are the only person calling, you might say this:
				//	"This is the illustrious Kermit McFrog! Pick up the Phone, someone!!"
				//	If you are calling from a business, you might pronounce a more sedate introduction,like,
				//	"Fritz from McDonalds calling.", or perhaps the more original introduction:
				//	"John, from the Park County Morgue. You stab 'em, we slab 'em!".
				//	Just one caution: the kids will hear what you record every time
				//	you call. So watch your language!
				//	I will begin recording after the tone.
				//	When you are done, hit the # key. Gather your thoughts and get
				//	ready. Remember, the # key will end the recording, and play back
				//      your intro. Good Luck, and Thank you!"
		goto 2|begin;
	}
	2 => {
		begin:
		Background(intro-start);
				//  OK, here we go! After the beep, please give your introduction.
		Background(beep);
		Record(priv-callerintros/${CALLERID(num)}:gsm,3);
		Background(priv-callerintros/${CALLERID(num)});
		goto home-introduction|s|begin;
	}
	t => {
		goto s|begin;
	}
	i => {
		Background(invalid);
		goto s|begin;
	}
	o => {
		goto s|begin;
	}
}

context homeline-kids {
	s => {
	begin:
		Background(murphy-homeline-kids);        //  Which Kid? 1=Sean, 2:Eric, 3:Ryan, 4:Kyle, 5:Amber, 6:Alex, 7:Neal
	}
	1 => {  // SEAN
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/3/greet.wav&);
			// &std-priv-exten(Zap/3r2&Zap/5r2,3,35,mtw,telemarket,telemarket);
			&std-priv-exten(IAX2/seaniax&Zap/5r2,3,35,mtw,telemarket,telemarket);
			goto homeline|s|loopback;
	}
	2 => {  // ERIC
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/4/greet.wav&);
			Voicemail(u4);
			goto homeline|s|loopback;

			// SetMusicOnHold(erics);
			// TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			// TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/4/greet.wav&);
			// &std-priv-exten(Zap/3r2&Zap/5r2,4,35,mtw,telemarket,telemarket);
			// goto homeline|s|loopback;
	}
	3 => {  // RYAN
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/5/greet.wav&);
			&std-priv-exten(Zap/3r2&Zap/5r2,5,35,mtw,telemarket,telemarket);
			goto homeline|s|loopback;
	}
	4 => {  // KYLE
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/6/greet.wav&);
			&std-priv-exten(Zap/3r2&Zap/5r2,6,35,mtw,telemarket,telemarket);
			goto homeline|s|loopback;
	}
	5 => {
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/7/greet.wav&);
			&std-priv-exten(Zap/3r2&Zap/5r2,7,35,mtw,telemarket,telemarket);
			goto homeline|s|loopback;

	}
	6 => {
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/8/greet.wav&);
			&std-priv-exten(Zap/3r2&Zap/5r2,8,35,mtw,telemarket,telemarket);
			goto homeline|s|loopback;
	}
	7 => {
			TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
			TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/9/greet.wav&);
			&std-priv-exten(Zap/3r2&Zap/5r2,9,35,mtw,telemarket,telemarket);
			goto homeline|s|loopback;
	}
	t => {
		goto s|begin;
	}
	i => {
		Background(invalid);
		goto s|begin;
	}
	o => {
		goto s|begin;
	}
}

context voipworkline {
	s => {
	begin:
		Answer();
		TrySystem(/usr/local/bin/who-is-it ${CALLERID(num)} "${CALLERID(name)}"&);
		goto workline|s|loopback;
	}
	7075679201 => {
		Answer();
		TrySystem(/usr/local/bin/who-is-it ${CALLERID(num)} "${CALLERID(name)}"&);
		goto workline|s|loopback;
	}
}

context workline {
	s => {
	begin:
		Answer();
		Wait(1);
		Set(repeatcount=0);
		Zapateller(nocallerid);
//              PrivacyManager();
//              if( "${PRIVACYMGRSTATUS}" = "FAILED" )
//              {
//                     goto privacyManagerFailed|s|begin;
//              }
		&fillcidname();
		TrySystem(/usr/local/bin/who-is-it ${CALLERID(num)} "${CALLERID(name)}"&);
	loopback:
		Background(greetings/greeting);  //script: Hello
		Background(murphy-office-intro1); //script: welcome to Steve Murphy's office. If you are dialing
                                              //  this number because it was on a calling list of any sort, dial 6.
                                              // Otherwise, dial 1, and hopefully, you will reach Steve.
	}
	1 => {
		TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm);
		TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/1/greet.wav&);

		&std-priv-exten(Zap/6&Sip/murf,1,30,mtw,telemarket,telemarket);
		goto s|loopback;
	}
	4 => {
		VoicemailMain();
		goto s|loopback;
	}
	6 => {
		goto telemarket|s|begin;
	}
	793 => { // check the tone recognition
			Read(zz,,0,,1,0);
			SayDigits(${zz});
	}
	t => {
		repeatcount=${repeatcount} + 1;
		if( ${repeatcount} < 3 )
		{
			goto s|loopback;  // just loopback isn't enough
		}
		Hangup();
	}
	i => {
		Background(invalid);
		goto s|loopback;
	}
	o => {
		Congestion();
	}
	fax => {
		Answer();
		Dial(Zap/4);
	}
}

context dialFWD {
	ignorepat => 8;
	ignorepat => 9;
	_83. => {
		Set(CALLERID(name)=${FWDCIDNAME});
		Dial(IAX2/${FWDNUMBER}:${FWDPASSWORD}@iax2.fwdnet.net/${EXTEN:2},60,r);
		Congestion();
	}
	_82NXX => {
		Set(CALLERID(name)=${FWDCIDNAME});
		Dial(IAX2/${FWDNUMBER}:${FWDPASSWORD}@iax2.fwdnet.net/${EXTEN:2},60,r);
		Congestion();
	}
	_92NXX => {
		Set(CALLERID(name)=${FWDCIDNAME});
		Dial(IAX2/${FWDNUMBER}:${FWDPASSWORD}@iax2.fwdnet.net/${EXTEN:2},60,r);
		Congestion();
	}
}

context dialiaxtel {
	ignorepat => 8;
	ignorepat => 9;
	_81700NXXXXXX => {
		Dial(IAX2/zorch:zilchnoodle@iaxtel.com/${EXTEN:1}@iaxtel);
	}
	_81800NXXXXXX => {
		Dial(IAX2/zorch:zilchnoodle@iaxtel.com/${EXTEN:1}@iaxtel);
	}
	_91700NXXXXXX => {
		Dial(IAX2/zorch:zilchnoodle@iaxtel.com/${EXTEN:1}@iaxtel);
	}
	_91800NXXXXXX => {
		Dial(IAX2/zorch:zilchnoodle@iaxtel.com/${EXTEN:1}@iaxtel);
	}

}

context dialgoiax {
	ignorepat => 9;
	_93. => {
		Set(CALLERID(name)="Joe Worker");
		Dial(IAX2/878201007658:stickyfinger295@server1.goiax.com/${EXTEN:2},60,r);
		Congestion();
	}

}

context homefirst {
	ignorepat => 9;
	_91NXXNXXXXXX => {
		&ciddial(${EXTEN:1},${EXTEN:2},30,TW,Zap/1);
	}
	_9754XXXX => {
		&ciddial(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9574XXXX => {
		&ciddial(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9202XXXX => {
		&ciddial(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9219XXXX => {
		&ciddial(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9254XXXX => {
		&ciddial(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9716XXXX => {
		&ciddial(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9NXXXXXX => {
		&ciddial(1707${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9011. => {
		&ciddial(${EXTEN:1},${EXTEN:1},30,TW,Zap/1);
	}
	_9911 => {
		Dial(Zap/1/911,30,T);
	}
	_9411 => {
		Dial(Zap/1/411,30,T);
	}
}

context workfirst {
	ignorepat => 9;
	_91NXXNXXXXXX => {
		&ciddial2(${EXTEN:1},${EXTEN:2},30,TW,Zap/1);
	}
	_9754XXXX => {
		&ciddial2(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9574XXXX => {
		&ciddial2(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9202XXXX => {
		&ciddial2(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9219XXXX => {
		&ciddial2(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9254XXXX => {
		&ciddial2(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9716XXXX => {
		&ciddial2(${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9NXXXXXX => {
		&ciddial2(1707${EXTEN:1},707${EXTEN:1},30,TW,Zap/1);
	}
	_9911 => {
		Dial(Zap/1/911,30,T);
	}
	_9411 => {
		Dial(Zap/1/411,30,T);
	}
}

context force_cell {
	ignorepat => 8;
	_81NXXNXXXXXX => {
		&ciddial(${EXTEN:1}#,${EXTEN:2},30,TW,Zap/2);
	}
	_8754XXXX => {
		&ciddial(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/2);
	}
	_8574XXXX => {
		&ciddial(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/2);
	}
	_8202XXXX => {
		&ciddial(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/2);
	}
	_8219XXXX => {
		&ciddial(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/2);
	}
	_8254XXXX => {
		&ciddial(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/2);
	}
	_8716XXXX => {
		&ciddial(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/2);
	}
	_8NXXXXXX => {
		&ciddial(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/2);
	}
	_8911 => {
		Dial(Zap/1/911|30|T);
	}
	_8411 => {
		Dial(Zap/1/411|30|T);
	}
}

context force_home {
	ignorepat => 8;
	_81NXXNXXXXXX => {
		&ciddial3(${EXTEN:1}#,${EXTEN:2},30,TW,Zap/1);
	}
	_8754XXXX => {
		&ciddial3(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/1);
	}
	_8574XXXX => {
		&ciddial3(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/1);
	}
	_8202XXXX => {
		&ciddial3(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/1);
	}
	_8219XXXX => {
		&ciddial3(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/1);
	}
	_8254XXXX => {
		&ciddial3(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/1);
	}
	_8716XXXX => {
		&ciddial3(${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/1);
	}
	_8NXXXXXX => {
		&ciddial3(1707${EXTEN:1}#,707${EXTEN:1},30,TW,Zap/1);
	}
	_8911 => {
		Dial(Zap/1/911|30|T);
	}
	_8411 => {
		Dial(Zap/1/411|30|T);
	}
}

context homeext {
	ignorepat => 8;
	ignorepat => 9;
	includes {
		 parkedcalls;
		 homefirst;
		 force_cell;
	}
	s => {
	loopback:
		Wait(0);
	}
	1 => {
		&std-priv-exten(Zap/3&Zap/5,2,35,mtw,telemarket,telemarket);
		goto s|loopback;
	}
	2 => {
		&std-priv-exten(Zap/6&Zap/5,1,35,mpA(beep3)Tt,telemarket,telemarket);
		goto s|loopback;
	}
	4 => {
		VoicemailMain();
	}
	5 => {
		Record(recording:gsm);
		Background(recording);
	}
	6 => {
		Background(recording);
	}
	760 => {
		DateTime();
		goto s|loopback;
	}
	761 => {
		Record(announcement:gsm);
		TrySystem(/usr/bin/play /var/lib/asterisk/sounds/announcement.gsm&);
		goto s|loopback;
	}
	762 => {
		agi(tts-riddle.agi);
		Background(gsm/what-time-it-is2);
		SayUnixTime();
		goto s|loopback;
	}
	763 => {
		Set(CALLERID(num)=);
		Dial(Zap/6r3,35,mptA(beep3));   //results: it should ALWAYS ask for an intro; the intro should not be left behind
		Hangup();
	}
	764 => {
		Set(CALLERID(num)=);
		Dial(Zap/6r3,35,mptnA(beep3));   //results: Don't save the intro; shouldn't anyway if no callerid
		Hangup();
	}
	765 => {
		Set(CALLERID(num)=);
		Dial(Zap/6r3,35,mptNA(beep3));   //results: Don't screen if there's CALLERID; it should screen the call.
		Hangup();
	}
	766 => {
		Dial(Zap/6r3,35,mptNA(beep3));   //results: Don't screen if there's CALLERID; it should screen the call.
		Hangup();
	}
	767 => {
		Dial(Zap/6r3,35,mptnA(beep3));   //results: Don't save the intro; the interesting case, because callerID should be present.
		Hangup();
	}
	769 => {
		Playtones(dial);
		Wait(2);
		Playtones(busy);
		Wait(2);
		Playtones(ring);
		Wait(2);
		Playtones(congestion);
		Wait(2);
		Playtones(callwaiting);
		Wait(2);
		Playtones(dialrecall);
		Wait(2);
		Playtones(record);
		Wait(2);
		Playtones(info);
		Wait(5);
		Hangup();
	}
	790 => {
		MeetMe(790,p);
	}
	792 => {
		goto pageall|s|begin;
	}
	795 => {
		AGI(wakeup.agi);Congestion();
	}
	544716 => {  // Incoming call from FWD
			TrySystem(/usr/local/bin/who-is-it ${CALLERID(num)} "${CALLERID(name)}"&);
			goto s|loopback;
	}

	i => {
		Background(invalid);
		goto s|loopback;
	}
	o => {
		goto s|loopback;
	}
	t => {
		Congestion();
	}
}

context fromvmhome {
	1 => {
		Dial(Zap/6&Sip/murf|20|Tt);
	}
	2 => {
		Dial(Zap/3&Zap/5|20|Tt);
	}
	_707202XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707219XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707254XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707716XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707754XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707574XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_NXXNXXXXXX => {
		&ciddial(1${EXTEN},${EXTEN},30,TW,Zap/1);
	}
	_1NXXNXXXXXX => {                                // HAND DIALING
		&ciddial(${EXTEN},${EXTEN:1},30,TW,Zap/1);
	}
	_754XXXX => {
		&ciddial(${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	_574XXXX => {
		&ciddial(${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	_NXXXXXX => {
		&ciddial(1707${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	_911 => {
		&ciddial(911,911,30,TW,Zap/1);
	}
	_411 => {
		&ciddial(411,411,30,TW,Zap/1);
	}
}

context fromvmwork {
	1 => {
		Dial(Zap/6&Sip/murf|20|Tt);
	}
	2 => {
		Dial(Zap/3&Zap/5|20|Tt);
	}
	_707202XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707219XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707254XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707716XXXX => {
		&ciddial(1${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707754XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707574XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_NXXNXXXXXX => {
		&ciddial(1${EXTEN},${EXTEN},30,TW,Zap/1);
	}
	_1NXXNXXXXXX => {                                // HAND DIALING
		&ciddial(${EXTEN},${EXTEN:1},30,TW,Zap/1);
	}
	_754XXXX => {
		&ciddial(${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	_574XXXX => {
		&ciddial(${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	_NXXXXXX => {
		&ciddial(1707${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	911 => {
		&ciddial(911,911,30,TW,Zap/1);
	}
	411 => {
		&ciddial(411,411,30,TW,Zap/1);
	}
}

context fromSeanUniden {
	includes
	{
		parkedcalls;
	}
	21 => {
		Dial(IAX2/seaniax,20,T);
		}
	_707202XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707219XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707254XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707716XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707754XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_707574XXXX => {
		&ciddial(${EXTEN:3},${EXTEN},30,TW,Zap/1);
	}
	_NXXNXXXXXX => {
		&ciddial(1${EXTEN},${EXTEN},30,TW,Zap/1);
	}
	_1NXXNXXXXXX => {
		&ciddial(${EXTEN},${EXTEN:1},30,TW,Zap/1);
	}
	_754XXXX => {
		&ciddial(${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	_574XXXX => {
		&ciddial(${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	_NXXXXXX => {
		&ciddial(1707${EXTEN},707${EXTEN},30,TW,Zap/1);
	}
	911 => {
		&ciddial(911,911,30,TW,Zap/1);
	}
	411 => {
		&ciddial(411,411,30,TW,Zap/1);
	}
}

context workext {
	ignorepat => 8;
	ignorepat => 9;
	includes {
		 parkedcalls;
		 workfirst;
		 force_home;
		 dialFWD;
		 dialiaxtel;
		 dialgoiax;
	}
	s => {
	loopback:
		Wait(0);
	}
	1 => {
		Dial(Zap/3&Zap/5,20,tT);
	}
	2 => {
		Dial(Zap/5&Zap/6,20,tT);
	}
	21 => {
		Dial(IAX2/seaniax,20,T);
		}
	22 => {
		Set(CALLERID(num)=1234567890);
		Set(CALLERID(name)=TestCaller);
		Dial(Zap/5,20,mP()A(beep)tw);
		NoOp(here is dialstatus: ${DIALSTATUS}...);
		goto s|loopback;
	}
	4 => {
		VoicemailMain();
		goto s|loopback;
	}
	5 => {
		Record(recording:gsm);
		Background(recording);
	}
	6 => {
		ZapBarge();
	}
	760 => {
		DateTime();
		goto s|loopback;
	}
	761 => {
		ZapBarge();
		goto s|loopback;
	}
	765 => {
		Playback(demo-echotest);
		Echo();
		Playback(demo-echodone);
		goto s|loopback;
	}
	766 => {
		Festival(The other thing to watch is neuro-electronics: the ability to interface technology with our neural system: My wife: Sigrid: has had a cochlear implant since 1996. This once profoundly deaf person now uses the phone: recognizes accents: and listens to movies and recorded books.);
		goto s|loopback;
	}
	767 => {
		agi(tts-riddle.agi);
		Background(gsm/what-time-it-is2);
		SayUnixTime();
		goto s|loopback;
	}
	768 => {
		agi(tts-computer.agi);
	}
	771 => {
		eagi(eagi-test);
		agi(my-agi-test);
	}
	772 => {
		agi(wakeup.agi);
	}
	775 => {
		if( ${EXTEN}=${EXTEN} )
		{
			BackGround(digits/1);
		}
		else
		{
			BackGround(digits/0);
		}
		if( ${EXTEN}=${LANGUAGE} )
		{
			BackGround(digits/1);
		}
		else
		{
			BackGround(digits/0);
		}
		BackGround(digits/2);
	}
	776 => {
		Set(TEST=00359889811777);
		if( ${TEST}= 00359889811777 )
		{
			BackGround(digits/1);
		}
		else
		{
			BackGround(digits/0);
		}
		if( ${TEST}= 00359889811888 )
		{
			BackGround(digits/1);
		}
		else
		{
			BackGround(digits/0);
		}
		Hangup();
	}
        790 => {
                MeetMe(790,p);
        }
	792 => {
		goto pageall|s|begin;
	}
	793 => {
		#include "include1.ael2"
	}
	795 => {
		AGI(wakeup.agi);
		Congestion();
	}
	797 => {
		Set(CONFCIDNA=${CALLERID(name)});
		Set(CONFCIDNU=${CALLERID(num)});
		AGI(callall);
		AGI(submit-announce.agi);
		Hangup();
	}
}

context wakeup {
	3 => {
		Dial(Zap/3|30);
	}
	4 => {
		Dial(Zap/4|30);

	}
	5 => {
		Dial(Zap/5|30);

	}
	6 => {
		Dial(Zap/6|30);

	}
	99 => {
		Dial(IAX2/murfiaxphone|30);
	}
	97 => {
		Dial(IAX2/ryaniax|30);
	}
	94 => {
		Dial(IAX2/seaniax|30);
	}
}

context announce-all {
	s => {
	begin:
		MeetMe(5555,dtqp);
		MeetMeAdmin(5555,K);
		Hangup();
	}
	h => {
		MeetMeAdmin(5555,K);
		Hangup();
	}
}

// now include the telemarketer torture scripts!

#include "telemarket_torture.ael2"
