Ticket #2762: functions.inc.php

File functions.inc.php, 22.5 kB (added by Nick_Lewis, 8 months ago)
Line 
1 <?php
2
3 function callforward_get_config($engine) {
4         $modulename = 'callforward';
5
6         // This generates the dialplan
7         global $ext;
8         switch($engine) {
9                 case "asterisk":
10                         if (is_array($featurelist = featurecodes_getModuleFeatures($modulename))) {
11                                 foreach($featurelist as $item) {
12                                         $featurename = $item['featurename'];
13                                         $fname = $modulename.'_'.$featurename;
14                                         if (function_exists($fname)) {
15                                                 $fcc = new featurecode($modulename, $featurename);
16                                                 $fc = $fcc->getCodeActive();
17                                                 unset($fcc);
18
19                                                 if ($fc != '')
20                                                         $fname($fc);
21                                         } else {
22                                                 $ext->add('from-internal-additional', 'debug', '', new ext_noop($modulename.": No func $fname"));
23                                                 var_dump($item);
24                                         }
25                                 }
26                         }
27                 break;
28         }
29 }
30
31 // Unconditional Call Forwarding
32 function callforward_cfon_any($c) {
33         global $ext;
34
35         $id = "app-cf-on-any"; // The context to be included
36
37         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
38
39 // Nick Lewis - moved from callforward_cfon
40         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
41         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
42         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional'));
43         $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
44         $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
45         $ext->add($id, $c, '', new ext_setvar('fromext', '${IF($["foo${fromext}"="foo"]?${CALLERID(number)}:${fromext})}'));
46         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
47         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
48         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
49         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
50         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
51         $ext->add($id, $c, '', new ext_setvar('DB(CF/${fromext})', '${toext}'));
52         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
53         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
54         $ext->add($id, $c, '', new ext_playback('is-set-to'));
55         $ext->add($id, $c, '', new ext_saydigits('${toext}'));
56         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
57
58 // Nick Lewis - added *XX<exten> shortcut
59         $clen = strlen($c);
60         $c = "_$c.";
61         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
62         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
63         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
64         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional'));
65         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
66         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
67         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
68         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
69         $ext->add($id, $c, '', new ext_setvar('DB(CF/${CALLERID(number)})', '${toext}'));
70         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
71         $ext->add($id, $c, '', new ext_saydigits('${CALLERID(number)}'));
72         $ext->add($id, $c, '', new ext_playback('is-set-to'));
73         $ext->add($id, $c, '', new ext_saydigits('${EXTEN:'.$clen.'}'));
74         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
75 }
76
77 function callforward_cfon($c) {
78         global $ext;
79
80         $id = "app-cf-on"; // The context to be included
81
82         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
83
84 // Nick Lewis - modified to assume this extension
85         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
86         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
87         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
88         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional'));
89         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
90         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
91         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
92         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
93         $ext->add($id, $c, '', new ext_setvar('DB(CF/${CALLERID(number)})', '${toext}'));
94         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
95         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
96         $ext->add($id, $c, '', new ext_playback('is-set-to'));
97         $ext->add($id, $c, '', new ext_saydigits('${toext}'));
98         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
99
100         $clen = strlen($c);
101         $c = "_$c.";
102         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
103         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
104         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
105         $ext->add($id, $c, '', new ext_setvar('DB(CF/${CALLERID(number)})', '${EXTEN:'.$clen.'}'));
106         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
107         $ext->add($id, $c, '', new ext_saydigits('${CALLERID(number)}'));
108         $ext->add($id, $c, '', new ext_playback('is-set-to'));
109         $ext->add($id, $c, '', new ext_saydigits('${EXTEN:'.$clen.'}'));
110         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
111 }
112
113 function callforward_cfoff_any($c) {
114         global $ext;
115
116         $id = "app-cf-off-any"; // The context to be included
117
118         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
119
120         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
121         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
122         $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
123         $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
124         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
125         $ext->add($id, $c, '', new ext_dbdel('CF/${fromext}'));
126         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
127         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
128         $ext->add($id, $c, '', new ext_playback('cancelled'));
129         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
130
131 //Nick Lewis - moved from callforward_cfoff
132         // for any extension, dial *XX<exten>
133         $clen = strlen($c);
134         $c = "_$c.";
135         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
136         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
137         $ext->add($id, $c, '', new ext_setvar('fromext', '${EXTEN:'.$clen.'}'));
138         $ext->add($id, $c, '', new ext_dbdel('CF/${fromext}'));
139         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
140         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
141         $ext->add($id, $c, '', new ext_playback('cancelled'));
142         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
143
144 }
145
146 function callforward_cfoff($c) {
147         global $ext;
148
149         $id = "app-cf-off"; // The context to be included
150
151         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
152
153         // for this extension
154         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
155         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
156         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
157         $ext->add($id, $c, '', new ext_dbdel('CF/${CALLERID(number)}'));
158         $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&de-activated')); // $cmd,n,Playback(...)
159         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
160
161 }
162
163 // Call Forward on Busy
164 function callforward_cfbon_any($c) {
165         global $ext;
166
167         $id = "app-cf-busy-on-any"; // The context to be included
168
169         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
170
171 // Nick Lewis - moved from callforward_cfbon
172         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
173         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
174         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy'));
175         $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
176         $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
177         $ext->add($id, $c, '', new ext_setvar('fromext', '${IF($["foo${fromext}"="foo"]?${CALLERID(number)}:${fromext})}'));
178         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
179         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
180         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
181         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
182         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
183         $ext->add($id, $c, '', new ext_setvar('DB(CFB/${fromext})', '${toext}'));
184         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
185         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
186         $ext->add($id, $c, '', new ext_playback('is-set-to'));
187         $ext->add($id, $c, '', new ext_saydigits('${toext}'));
188         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
189
190 // Nick Lewis - added *XX<exten> shortcut
191         $clen = strlen($c);
192         $c = "_$c.";
193         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
194         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
195         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
196         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy'));
197         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
198         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
199         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
200         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
201         $ext->add($id, $c, '', new ext_setvar('DB(CFB/${CALLERID(number)})', '${toext}'));
202         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
203         $ext->add($id, $c, '', new ext_saydigits('${CALLERID(number)}'));
204         $ext->add($id, $c, '', new ext_playback('is-set-to'));
205         $ext->add($id, $c, '', new ext_saydigits('${EXTEN:'.$clen.'}'));
206         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
207 }
208
209 function callforward_cfbon($c) {
210         global $ext;
211
212         $id = "app-cf-busy-on"; // The context to be included
213
214         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
215
216 // Nick Lewis - modified to assume this extension
217         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
218         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
219         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
220         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy'));
221         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
222         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
223         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
224         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
225         $ext->add($id, $c, '', new ext_setvar('DB(CFB/${fromext})', '${toext}'));
226         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
227         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
228         $ext->add($id, $c, '', new ext_playback('is-set-to'));
229         $ext->add($id, $c, '', new ext_saydigits('${toext}'));
230         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
231
232         $clen = strlen($c);
233         $c = "_$c.";
234         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
235         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
236         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
237         $ext->add($id, $c, '', new ext_setvar('DB(CFB/${CALLERID(number)})', '${EXTEN:'.$clen.'}'));
238         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
239         $ext->add($id, $c, '', new ext_saydigits('${CALLERID(number)}'));
240         $ext->add($id, $c, '', new ext_playback('is-set-to'));
241         $ext->add($id, $c, '', new ext_saydigits('${EXTEN:'.$clen.'}'));
242         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
243 }
244
245 function callforward_cfboff_any($c) {
246         global $ext;
247
248         $id = "app-cf-busy-off-any"; // The context to be included
249
250         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
251
252         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
253         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
254         $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
255         $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
256         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
257         $ext->add($id, $c, '', new ext_dbdel('CFB/${fromext}'));
258         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
259         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
260         $ext->add($id, $c, '', new ext_playback('cancelled'));
261         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
262
263 //Nick Lewis - moved from callforward_cfboff
264         // for any extension, dial *XX<exten>
265         $clen = strlen($c);
266         $c = "_$c.";
267         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
268         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
269         $ext->add($id, $c, '', new ext_setvar('fromext', '${EXTEN:'.$clen.'}'));
270         $ext->add($id, $c, '', new ext_dbdel('CFB/${fromext}'));
271         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
272         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
273         $ext->add($id, $c, '', new ext_playback('cancelled'));
274         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
275
276 }
277
278 function callforward_cfboff($c) {
279         global $ext;
280
281         $id = "app-cf-busy-off"; // The context to be included
282
283         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
284
285         // for this extension
286         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
287         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
288         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
289         $ext->add($id, $c, '', new ext_dbdel('CFB/${CALLERID(number)}'));
290         $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&de-activated')); // $cmd,n,Playback(...)
291         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
292
293 }
294
295 // Call Forward on No Answer/Unavailable (i.e. phone not registered)
296 function callforward_cfuon_any($c) {
297         global $ext;
298
299         $id = "app-cf-unavailable-on-any"; // The context to be included
300
301         $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
302
303 // Nick Lewis - moved from callforward_cfuon
304         // prompt for extension
305         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
306         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
307         $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans'));
308         $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
309         $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
310         $ext->add($id, $c, '', new ext_setvar('fromext', '${IF($["foo${fromext}"="foo"]?${CALLERID(number)}:${fromext})}'));
311         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
312         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
313         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
314         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
315         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
316         $ext->add($id, $c, '', new ext_setvar('DB(CFU/${fromext})', '${toext}'));
317         $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans&for&extension'));
318         $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
319         $ext->add($id, $c, '', new ext_playback('is-set-to'));
320         $ext->add($id, $c, '', new ext_saydigits('${toext}'));
321         $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
322
323 // Nick Lewis - added *XX<exten> shortcut
324         $clen = strlen($c);
325         $c = "_$c.";
326         $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
327         $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
328         $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
329         $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans'));
330         $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
331         $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
332         $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));</