Remove a bunch of trailing whitespace in preparation for reformatting/cleanup.
[asterisk/asterisk.git] / configs / extensions.lua.sample
1
2
3 CONSOLE = "Console/dsp" -- Console interface for demo
4 --CONSOLE = "DAHDI/1"
5 --CONSOLE = "Phone/phone0"
6
7 IAXINFO = "guest"       -- IAXtel username/password
8 --IAXINFO = "myuser:mypass"
9
10 TRUNK = "DAHDI/G2"
11 TRUNKMSD = 1
12 -- TRUNK = "IAX2/user:pass@provider"
13
14
15 --
16 -- Extensions are expected to be defined in a global table named 'extensions'.
17 -- The 'extensions' table should have a group of tables in it, each
18 -- representing a context.  Extensions are defined in each context.  See below
19 -- for examples.
20 --
21 -- Extension names may be numbers, letters, or combinations thereof. If
22 -- an extension name is prefixed by a '_' character, it is interpreted as
23 -- a pattern rather than a literal.  In patterns, some characters have
24 -- special meanings:
25 --
26 --   X - any digit from 0-9
27 --   Z - any digit from 1-9
28 --   N - any digit from 2-9
29 --   [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
30 --   . - wildcard, matches anything remaining (e.g. _9011. matches
31 --       anything starting with 9011 excluding 9011 itself)
32 --   ! - wildcard, causes the matching process to complete as soon as
33 --       it can unambiguously determine that no other matches are possible
34 --
35 -- For example the extension _NXXXXXX would match normal 7 digit
36 -- dialings, while _1NXXNXXXXXX would represent an area code plus phone
37 -- number preceded by a one.
38 --
39 -- If your extension has special characters in it such as '.' and '!' you must
40 -- explicitly make it a string in the tabale definition:
41 --
42 --   ["_special."] = function;
43 --   ["_special!"] = function;
44 --
45 -- There are no priorities.  All extensions to asterisk appear to have a single
46 -- priority as if they consist of a single priority.
47 --
48 -- Each context is defined as a table in the extensions table.  The
49 -- context names should be strings.
50 --
51 -- One context may be included in another context using the 'includes'
52 -- extension.  This extension should be set to a table containing a list
53 -- of context names.  Do not put references to tables in the includes
54 -- table.
55 --
56 --   include = {"a", "b", "c"};
57 --
58 -- Channel variables can be accessed thorugh the global 'channel' table.
59 --
60 --   v = channel.var_name
61 --   v = channel["var_name"]
62 --   v.value
63 --   v:get()
64 --
65 --   channel.var_name = "value"
66 --   channel["var_name"] = "value"
67 --   v:set("value")
68 --
69 --   channel.func_name(1,2,3):set("value")
70 --   value = channel.func_name(1,2,3):get()
71 --
72 --   channel["func_name(1,2,3)"]:set("value")
73 --   channel["func_name(1,2,3)"] = "value"
74 --   value = channel["func_name(1,2,3)"]:get()
75 --
76 -- Note the use of the ':' operator to access the get() and set()
77 -- methods.
78 --
79 -- Also notice the absence of the following constructs from the examples above:
80 --   channel.func_name(1,2,3) = "value"  -- this will NOT work
81 --   value = channel.func_name(1,2,3)    -- this will NOT work as expected
82 --
83 --
84 -- Dialplan applications can be accessed through the global 'app' table.
85 --
86 --    app.Dial("DAHDI/1")
87 --    app.dial("DAHDI/1")
88 --
89 -- More examples can be found below.
90 --
91 -- Before starting long running operations, an autoservice should be started
92 -- using the autoservice_start() function.  This autoservice will automatically
93 -- be stopped before executing applications and dialplan functions and will be
94 -- restarted afterwards.  The autoservice can be stopped using
95 -- autoservice_stop() and the autoservice_status() function will return true if
96 -- an autoservice is currently running.
97 --
98
99 function outgoing_local(c, e)
100         app.dial("DAHDI/1/" .. e, "", "")
101 end
102
103 function demo_instruct()
104         app.background("demo-instruct")
105         app.waitexten()
106 end
107
108 function demo_congrats()
109         app.background("demo-congrats")
110         demo_instruct()
111 end
112
113 -- Answer the chanel and play the demo sound files
114 function demo_start(context, exten)
115         app.wait(1)
116         app.answer()
117
118         channel.TIMEOUT("digit"):set(5)
119         channel.TIMEOUT("response"):set(10)
120         -- app.set("TIMEOUT(digit)=5")
121         -- app.set("TIMEOUT(response)=10")
122
123         demo_congrats(context, exten)
124 end
125
126 function demo_hangup()
127         app.playback("demo-thanks")
128         app.hangup()
129 end
130
131 extensions = {
132         demo = {
133                 s = demo_start;
134
135                 ["2"] = function()
136                         app.background("demo-moreinfo")
137                         demo_instruct()
138                 end;
139                 ["3"] = function ()
140                         channel.LANGUAGE():set("fr") -- set the language to french
141                         demo_congrats()
142                 end;
143
144                 ["1000"] = function()
145                         app.goto("default", "s", 1)
146                 end;
147
148                 ["1234"] = function()
149                         app.playback("transfer", "skip")
150                         -- do a dial here
151                 end;
152
153                 ["1235"] = function()
154                         app.voicemail("1234", "u")
155                 end;
156
157                 ["1236"] = function()
158                         app.dial("Console/dsp")
159                         app.voicemail(1234, "b")
160                 end;
161
162                 ["#"] = demo_hangup;
163                 t = demo_hangup;
164                 i = function()
165                         app.playback("invalid")
166                         demo_instruct()
167                 end;
168
169                 ["500"] = function()
170                         app.playback("demo-abouttotry")
171                         app.dial("IAX2/guest@misery.digium.com/s@default")
172                         app.playback("demo-nogo")
173                         demo_instruct()
174                 end;
175
176                 ["600"] = function()
177                         app.playback("demo-echotest")
178                         app.echo()
179                         app.playback("demo-echodone")
180                         demo_instruct()
181                 end;
182
183                 ["8500"] = function()
184                         app.voicemailmain()
185                         demo_instruct()
186                 end;
187
188         };
189
190         default = {
191                 -- by default, do the demo
192                 include = {"demo"};
193         };
194
195         ["local"] = {
196                 ["_NXXXXXX"] = outgoing_local;
197         };
198 }
199