mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9047 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| 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})
 |