mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 05:15:22 +00:00 
			
		
		
		
	Let's try that again, this time removing trailing whitespace and not leading whitespace. I can't believe no one noticed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@197535 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			200 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
 | 
						|
CONSOLE = "Console/dsp" -- Console interface for demo
 | 
						|
--CONSOLE = "DAHDI/1"
 | 
						|
--CONSOLE = "Phone/phone0"
 | 
						|
 | 
						|
IAXINFO = "guest"       -- IAXtel username/password
 | 
						|
--IAXINFO = "myuser:mypass"
 | 
						|
 | 
						|
TRUNK = "DAHDI/G2"
 | 
						|
TRUNKMSD = 1
 | 
						|
-- TRUNK = "IAX2/user:pass@provider"
 | 
						|
 | 
						|
 | 
						|
--
 | 
						|
-- Extensions are expected to be defined in a global table named 'extensions'.
 | 
						|
-- The 'extensions' table should have a group of tables in it, each
 | 
						|
-- representing a context.  Extensions are defined in each context.  See below
 | 
						|
-- for examples.
 | 
						|
--
 | 
						|
-- Extension names may be numbers, letters, or combinations thereof. If
 | 
						|
-- an extension name is prefixed by a '_' character, it is interpreted as
 | 
						|
-- a pattern rather than a literal.  In patterns, some characters have
 | 
						|
-- special meanings:
 | 
						|
--
 | 
						|
--   X - any digit from 0-9
 | 
						|
--   Z - any digit from 1-9
 | 
						|
--   N - any digit from 2-9
 | 
						|
--   [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
 | 
						|
--   . - wildcard, matches anything remaining (e.g. _9011. matches
 | 
						|
--       anything starting with 9011 excluding 9011 itself)
 | 
						|
--   ! - wildcard, causes the matching process to complete as soon as
 | 
						|
--       it can unambiguously determine that no other matches are possible
 | 
						|
--
 | 
						|
-- For example the extension _NXXXXXX would match normal 7 digit
 | 
						|
-- dialings, while _1NXXNXXXXXX would represent an area code plus phone
 | 
						|
-- number preceded by a one.
 | 
						|
--
 | 
						|
-- If your extension has special characters in it such as '.' and '!' you must
 | 
						|
-- explicitly make it a string in the tabale definition:
 | 
						|
--
 | 
						|
--   ["_special."] = function;
 | 
						|
--   ["_special!"] = function;
 | 
						|
--
 | 
						|
-- There are no priorities.  All extensions to asterisk appear to have a single
 | 
						|
-- priority as if they consist of a single priority.
 | 
						|
--
 | 
						|
-- Each context is defined as a table in the extensions table.  The
 | 
						|
-- context names should be strings.
 | 
						|
--
 | 
						|
-- One context may be included in another context using the 'includes'
 | 
						|
-- extension.  This extension should be set to a table containing a list
 | 
						|
-- of context names.  Do not put references to tables in the includes
 | 
						|
-- table.
 | 
						|
--
 | 
						|
--   include = {"a", "b", "c"};
 | 
						|
--
 | 
						|
-- Channel variables can be accessed thorugh the global 'channel' table.
 | 
						|
--
 | 
						|
--   v = channel.var_name
 | 
						|
--   v = channel["var_name"]
 | 
						|
--   v.value
 | 
						|
--   v:get()
 | 
						|
--
 | 
						|
--   channel.var_name = "value"
 | 
						|
--   channel["var_name"] = "value"
 | 
						|
--   v:set("value")
 | 
						|
--
 | 
						|
--   channel.func_name(1,2,3):set("value")
 | 
						|
--   value = channel.func_name(1,2,3):get()
 | 
						|
--
 | 
						|
--   channel["func_name(1,2,3)"]:set("value")
 | 
						|
--   channel["func_name(1,2,3)"] = "value"
 | 
						|
--   value = channel["func_name(1,2,3)"]:get()
 | 
						|
--
 | 
						|
-- Note the use of the ':' operator to access the get() and set()
 | 
						|
-- methods.
 | 
						|
--
 | 
						|
-- Also notice the absence of the following constructs from the examples above:
 | 
						|
--   channel.func_name(1,2,3) = "value"  -- this will NOT work
 | 
						|
--   value = channel.func_name(1,2,3)    -- this will NOT work as expected
 | 
						|
--
 | 
						|
--
 | 
						|
-- Dialplan applications can be accessed through the global 'app' table.
 | 
						|
--
 | 
						|
--    app.Dial("DAHDI/1")
 | 
						|
--    app.dial("DAHDI/1")
 | 
						|
--
 | 
						|
-- More examples can be found below.
 | 
						|
--
 | 
						|
-- Before starting long running operations, an autoservice should be started
 | 
						|
-- using the autoservice_start() function.  This autoservice will automatically
 | 
						|
-- be stopped before executing applications and dialplan functions and will be
 | 
						|
-- restarted afterwards.  The autoservice can be stopped using
 | 
						|
-- autoservice_stop() and the autoservice_status() function will return true if
 | 
						|
-- an autoservice is currently running.
 | 
						|
--
 | 
						|
 | 
						|
function outgoing_local(c, e)
 | 
						|
	app.dial("DAHDI/1/" .. e, "", "")
 | 
						|
end
 | 
						|
 | 
						|
function demo_instruct()
 | 
						|
	app.background("demo-instruct")
 | 
						|
	app.waitexten()
 | 
						|
end
 | 
						|
 | 
						|
function demo_congrats()
 | 
						|
	app.background("demo-congrats")
 | 
						|
	demo_instruct()
 | 
						|
end
 | 
						|
 | 
						|
-- Answer the chanel and play the demo sound files
 | 
						|
function demo_start(context, exten)
 | 
						|
	app.wait(1)
 | 
						|
	app.answer()
 | 
						|
 | 
						|
	channel.TIMEOUT("digit"):set(5)
 | 
						|
	channel.TIMEOUT("response"):set(10)
 | 
						|
	-- app.set("TIMEOUT(digit)=5")
 | 
						|
	-- app.set("TIMEOUT(response)=10")
 | 
						|
 | 
						|
	demo_congrats(context, exten)
 | 
						|
end
 | 
						|
 | 
						|
function demo_hangup()
 | 
						|
	app.playback("demo-thanks")
 | 
						|
	app.hangup()
 | 
						|
end
 | 
						|
 | 
						|
extensions = {
 | 
						|
	demo = {
 | 
						|
		s = demo_start;
 | 
						|
 | 
						|
		["2"] = function()
 | 
						|
			app.background("demo-moreinfo")
 | 
						|
			demo_instruct()
 | 
						|
		end;
 | 
						|
		["3"] = function ()
 | 
						|
			channel.LANGUAGE():set("fr") -- set the language to french
 | 
						|
			demo_congrats()
 | 
						|
		end;
 | 
						|
 | 
						|
		["1000"] = function()
 | 
						|
			app.goto("default", "s", 1)
 | 
						|
		end;
 | 
						|
 | 
						|
		["1234"] = function()
 | 
						|
			app.playback("transfer", "skip")
 | 
						|
			-- do a dial here
 | 
						|
		end;
 | 
						|
 | 
						|
		["1235"] = function()
 | 
						|
			app.voicemail("1234", "u")
 | 
						|
		end;
 | 
						|
 | 
						|
		["1236"] = function()
 | 
						|
			app.dial("Console/dsp")
 | 
						|
			app.voicemail(1234, "b")
 | 
						|
		end;
 | 
						|
 | 
						|
		["#"] = demo_hangup;
 | 
						|
		t = demo_hangup;
 | 
						|
                i = function()
 | 
						|
                        app.playback("invalid")
 | 
						|
                        demo_instruct()
 | 
						|
                end;
 | 
						|
 | 
						|
		["500"] = function()
 | 
						|
			app.playback("demo-abouttotry")
 | 
						|
			app.dial("IAX2/guest@misery.digium.com/s@default")
 | 
						|
			app.playback("demo-nogo")
 | 
						|
			demo_instruct()
 | 
						|
		end;
 | 
						|
 | 
						|
		["600"] = function()
 | 
						|
			app.playback("demo-echotest")
 | 
						|
			app.echo()
 | 
						|
			app.playback("demo-echodone")
 | 
						|
			demo_instruct()
 | 
						|
		end;
 | 
						|
 | 
						|
		["8500"] = function()
 | 
						|
			app.voicemailmain()
 | 
						|
			demo_instruct()
 | 
						|
		end;
 | 
						|
 | 
						|
	};
 | 
						|
 | 
						|
	default = {
 | 
						|
		-- by default, do the demo
 | 
						|
		include = {"demo"};
 | 
						|
	};
 | 
						|
 | 
						|
	["local"] = {
 | 
						|
		["_NXXXXXX"] = outgoing_local;
 | 
						|
	};
 | 
						|
}
 | 
						|
 |