mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	deprecate the Math() application git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5895 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
 | 
						|
Mathematical dialplan function
 | 
						|
 | 
						|
Yeah, I thought it was a little insane too.. 
 | 
						|
 | 
						|
adds:
 | 
						|
 | 
						|
Sum, Multiply, Divide, Subtract, Modulus, GT, LT, GTE, LTE, EQ functions to Asterisk
 | 
						|
 | 
						|
All functions follow the same basic pattern for parameters:
 | 
						|
 | 
						|
parameter 1 = the math expression
 | 
						|
parameter 2 = the type of result
 | 
						|
 | 
						|
Perform calculation on number 1 to number 2. Valid ops are:
 | 
						|
    +,-,/,*,%,<,>,>=,<=,==
 | 
						|
and behave as their C equivalents.
 | 
						|
 | 
						|
<type_of_result> - wanted type of result:
 | 
						|
	f, float - float(default)
 | 
						|
	i, int - integer,
 | 
						|
	h, hex - hex,
 | 
						|
	c, char - char
 | 
						|
 | 
						|
Each math expression is performed as
 | 
						|
 | 
						|
 Action param1 on param2
 | 
						|
 | 
						|
eg: 
 | 
						|
 | 
						|
 Action = Divide
 | 
						|
 Param1 = 10
 | 
						|
 Param2 = 2
 | 
						|
 | 
						|
Results in 
 | 
						|
 | 
						|
 Divide 10 by 2
 | 
						|
 | 
						|
 | 
						|
Example dialplan:
 | 
						|
 | 
						|
exten => 11099,1,Set(RV=${MATH(1+20)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(10*2)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(10*2)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(10-2)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(2%10)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(10/0)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(10-200)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(1-20)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(1<20)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(1>=20)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(101>20)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(1==20)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(20<=20)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 | 
						|
exten => 11099,n,Set(RV=${MATH(123%16,int)})
 | 
						|
exten => 11099,n,NOOP(${RV})
 |