⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extensions.ael

📁 asterisk 是一个很有知名度开源软件
💻 AEL
字号:
context dialextens{	/* 		101 thru 123, 149 thru 152        */	_10X => Dial(Zap/${EXTEN:2},30,Ttw);	_1ZX => Dial(Zap/${EXTEN:1},30,Ttw);}/*     Due to extenal wiring:  dialing 125 will ring 101  dialing 126 will ring 102   and so on until  dialing 147 will ring 123We can dial out on zap 69 thru 72; and 25-47*/context dialthrus{	/*  369-372; 325-347 */	_3XX => Dial(Zap/${EXTEN:1},30,Ttw);}context t1incoming{	includes	{		dialextens;		parkedcalls;	}	s => {		Answer();		Background(welcome-to-test-machine);	}}context t1extension{	includes	{		dialextens;		dialthrus;	}}context incoming{	includes	{		dialextens;		parkedcalls;	}	s => {		Answer();		Background(welcome-to-test-machine);	}}context incoming{	s => {		Answer();	}}macro std-priv-exten( dev, ext , timeout, opts, torcont, dontcont ){        // &increment_chosecount();        dial_again:        Dial(${dev},${timeout},${opts});        switch(${DIALSTATUS})                {        case TORTURE:                goto ${torcont}|s|begin;                break;        case DONTCALL:                goto ${dontcont}|s|begin;                break;        case BUSY:        label_busy:                Read(reply|work-exten-busy|1||2|15);		if ("${reply}"=="")			goto label_busy; // infinite loop if Read has probs!!                switch(${reply})                {                case 1:                       Set(time1=${EPOCH});                  label_redial:                       WaitMusicOnHold(5);                       Dial(${dev},${timeout},${opts});                       switch(${DIALSTATUS})                       {                       case BUSY:                                if(${EPOCH}-${time1} >= 20)                                        goto label_busy;                                goto label_redial;                       default:                                return;// goto work_line|s|loopback;                       }                       break;                case 2:                       Voicemail(${ext}|b);                       break;                case 3:                       return; // goto work_line|s|loopback;                default:                       Background(invalid);                        goto label_busy;                }                break;        case ANSWER:                break;        case NOANSWER:        noanswer_label:                Read(reply|work-exten-noanswer|1|skip|2|15);                switch(${reply})                {                case 1:                       switch(${ext})                       {                       case 10:                                Background(no-cell);                                break;                       case 11:                                // &ciddial(2729495,3072729495,30,tw,${GRAMS_TELCO},${WORK_TELCO});                                break;                       case 12:                                // &ciddial(2725560,3072725560,30,tw,${GRAMS_TELCO},${WORK_TELCO});                                break;                       case 13:                                // &ciddial(2720197,3072720197,30,tw,${GRAMS_TELCO},${WORK_TELCO});                                break;                       case 14:                                // &ciddial(2501174,3072501174,30,tw,${GRAMS_TELCO},${WORK_TELCO});                                break;                       case 15:                                Background(no-cell);                                break;                       case 16:                                Background(no-cell);                                break;                       default:                                Background(invalid);                                break;                       }                       goto noanswer_label;                       break;                case 2:                       Voicemail(${ext}|u);                       break;                case 3:                       return; // goto work_line|s|loopback;                default:                       Background(invalid);                       goto noanswer_label;                }                Voicemail(${ext}|u);                break;        default:                Voicemail(${ext}|u);        }}/* Putting these 3 funcs in extensions.conf!macro funcC(a,b){	Set(Key=);      menu:	Read(Key,main-menu,1,n,1,5);	if("${Key}" = "2")		goto y,lab1;	catch y	{	lab1:		&funcB(${a},${b});		}}macro funcB(a,b){	Set(Key=);      menu:	Read(Key,tt-monkeys,1,n,1,5);	if("${Key}" = "2")		goto z,lab2;	catch z	{	lab2:		&funcC(${a},${b});		}}macro funcA(){	&funcB(1,2);}*/context extension{	includes	{		dialextens;		dialthrus;		parkedcalls;	}	5 => {		Record(recording:wav);		Background(recording);	}	81 => {		iterations=1000000;		Set(time1=${EPOCH});		for(i=1; ${i}<${iterations}; i=${i}+1)		{			NoOp(Hello);		}		Set(time2=${EPOCH});		Verbose(The time diff is $[${time2} - ${time1} ] seconds);		Verbose(Which means that the priorities/sec = $[4* ${iterations} / (${time2} - ${time1}) ]);		SayNumber($[4 * ${iterations} / (${time2} - ${time1}) ]);	}	82 => {			&ndeep(100000);			Verbose(Finished 100000 levels deep call!);		}	83 => {		switch (${EXTEN}) 		{		pattern 8X:    			Verbose(do something to prepare it);		pattern 9X:    			Verbose(handle both 1xx and 2xx calls);		pattern [4-7]X:			Verbose(and this too!);		}		Set(junky=${RAND(0|99999)});		Verbose(Here is a random number: ${junky}.);	}	84 => {		agi(agi://192.168.134.252/|hello|goodbye|whatever|whoknows,hell2,hello3);	}	85 => {		&std-priv-exten( Zap/50, 150 , 25, mtw, torcont, dontcont );	}	86 => {		Verbose(The version is: ${VERSION()} );		Verbose(The versionnum is: ${VERSION(ASTERISK_VERSION_NUM)} );		Verbose(The user is: ${VERSION(BUILD_USER)} );		Verbose(The hostname is: ${VERSION(BUILD_HOSTNAME)} );		Verbose(The machine is: ${VERSION(BUILD_MACHINE)} );		Verbose(The OS is: ${VERSION(BUILD_OS)} );		Verbose(The date is: ${VERSION(BUILD_DATE)} );		Verbose(The kernel is: ${VERSION(BUILD_KERNEL)} );		Set(vinf=${VERSION()});		Set(vrand=${RAND()});		if( ${ISNULL(${vinf})} )		{			if( ${ISNULL(${vrand})} )				Verbose(Version 1.2 or earlier);			else				Verbose(Version 1.4!!!);		}		else			Verbose(${vinf} indicates version pre-1.6 or higher);	}	871 => {		NoOp(                                                                                                    1         1         1          1         1         1         1);		NoOp(          1         2         3         4         5         6         7         8         9         0         1         2          3         4         5         6);		NoOp(012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678890123456789012345678901234567890);		NoOp(${EXTEN:1:2}   ${EXTEN}   ${EXTEN:1}                                                                                                    1         1         1          1         1     1         1);		&dialoutpstn(${TDIRECTCALL-PST}/0${EXTEN},${E${CALLERID(num)}-OPT},${TDIRECTCALL-CID},${TDIRECTCALL-MAX},RotaPadrao) ;	}	872 => {		Set(ChannelOnly=${CUT(CHANNEL||1)});		Verbose(ChannelOnly=${ChannelOnly}; neat huh?);		Set(ChannelOnly=${CUT(CHANNEL,,1)});		Verbose(ChannelOnly=${ChannelOnly}; neat huh?);	}		873 => {		NOOP(this is a forkcdr test);		Set(CALLERID(num)=1234567890);		Set(CALLERID(name)=before fork);		Forkcdr(v);		Set(CALLERID(num)=0987654321);		Set(CALLERID(name)=after fork);		Answer();		Echo();		Hangup();	}        874 => {		SayDigits(307-754-5675);                SayPhoneNumber(307-754-5675);                SayDigits(--);                SayPhoneNumber(123-456-7890);                SayDigits(++);                SayPhoneNumber(307-754-4454);        }	875 => {		&funcA();		&funcD();	}	876 => {		NoOp(Query resultid ${connid} SELECT var1\, var2 FROM did);		NoOp($["Query resultid ${connid} SELECT var1\, var2 FROM did"]);		NoOp($["Query resultid ${connid} SELECT var1, var2 FROM did"]);		goto test5,s,1;	}	88 => {		SET(LIMIT_PLAYAUDIO_CALLER=yes);		SET(LIMIT_PLAYAUDIO_CALLEE=no);		SET(LIMIT_TIMEOUT_FILE=timeup);		SET(LIMIT_CONNECT_FILE=limit60);		SET(LIMIT_WARNING_FILE=almostup);		Dial(Zap/51,20,L(60000:30000:8000));	}	89 => {		goto callbackmenu|100|1;	}}context income1{	s => {		Answer();		Dial(Zap/50,20,m);	}	150 => Dial(Zap/50,20,m);}context callbackmenu{	_X. => {			Answer();			Wait(1);			Set(TIMEOUT(digit)=5);			Set(TIMEOUT(response)=30);			DISA(no-password,callbackdialout);	}}context callbackdialout{	_X. => {			Dial(Zap/51,20,w);		}}macro dialoutpstn(something1, something2, something3, something4, something5){	Verbose(${something1}--- ${something2}--- ${something3}--- ${something4}--- ${something5});}macro ndeep(level){        if( ${level} == 0)        {                Verbose(2|Got to Level 0);                return;        }        &ndeep($[${level}-1]);        return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -