root/modules/branches/2.5/callforward/functions.inc.php

Revision 4980, 12.8 kB (checked in by p_lindheimer, 6 years ago)

#2321: fix AMPUSER(number) issue, thanks roadracer96

  • Property svn:mime-type set to text/html
  • Property svn:eol-style set to native
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($c) {
33   global $ext;
34
35   $id = "app-cf-on"; // The context to be included
36
37   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
38
39   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
40   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
41   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
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"]?${AMPUSER}:${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   $clen = strlen($c);
59   $c = "_$c.";
60   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
61   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
62   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
63   $ext->add($id, $c, '', new ext_setvar('DB(CF/${AMPUSER})', '${EXTEN:'.$clen.'}'));
64   $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
65   $ext->add($id, $c, '', new ext_saydigits('${AMPUSER}'));
66   $ext->add($id, $c, '', new ext_playback('is-set-to'));
67   $ext->add($id, $c, '', new ext_saydigits('${EXTEN:'.$clen.'}'));
68   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
69 }
70
71 function callforward_cfoff_any($c) {
72   global $ext;
73
74   $id = "app-cf-off-any"; // The context to be included
75
76   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
77
78   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
79   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
80   $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
81   $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
82   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
83   $ext->add($id, $c, '', new ext_dbdel('CF/${fromext}'));
84   $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
85   $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
86   $ext->add($id, $c, '', new ext_playback('cancelled'));
87   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
88 }
89
90 function callforward_cfoff($c) {
91   global $ext;
92
93   $id = "app-cf-off"; // The context to be included
94
95   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
96
97   // for this extension
98   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
99   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
100   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
101   $ext->add($id, $c, '', new ext_dbdel('CF/${AMPUSER}'));
102   $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&de-activated')); // $cmd,n,Playback(...)
103   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
104
105   // for any extension, dial *XX<exten>
106   $clen = strlen($c);
107   $c = "_$c.";
108   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
109   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
110   $ext->add($id, $c, '', new ext_setvar('fromext', '${EXTEN:'.$clen.'}'));
111   $ext->add($id, $c, '', new ext_dbdel('CF/${fromext}'));
112   $ext->add($id, $c, '', new ext_playback('call-fwd-unconditional&for&extension'));
113   $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
114   $ext->add($id, $c, '', new ext_playback('cancelled'));
115   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
116  
117 }
118
119 // Call Forward on Busy
120 function callforward_cfbon($c) {
121   global $ext;
122
123   $id = "app-cf-busy-on"; // The context to be included
124
125   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
126
127   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
128   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
129   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
130   $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy'));
131   $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
132   $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
133   $ext->add($id, $c, '', new ext_setvar('fromext', '${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}'));
134   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
135   $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
136   $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
137   $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
138   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
139   $ext->add($id, $c, '', new ext_setvar('DB(CFB/${fromext})', '${toext}'));
140   $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
141   $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
142   $ext->add($id, $c, '', new ext_playback('is-set-to'));
143   $ext->add($id, $c, '', new ext_saydigits('${toext}'));
144   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
145
146   $clen = strlen($c);
147   $c = "_$c.";
148   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
149   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
150   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
151   $ext->add($id, $c, '', new ext_setvar('DB(CFB/${AMPUSER})', '${EXTEN:'.$clen.'}'));
152   $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
153   $ext->add($id, $c, '', new ext_saydigits('${AMPUSER}'));
154   $ext->add($id, $c, '', new ext_playback('is-set-to'));
155   $ext->add($id, $c, '', new ext_saydigits('${EXTEN:'.$clen.'}'));
156   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
157 }
158
159 function callforward_cfboff_any($c) {
160   global $ext;
161
162   $id = "app-cf-busy-off-any"; // The context to be included
163
164   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
165
166   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
167   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
168   $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
169   $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
170   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
171   $ext->add($id, $c, '', new ext_dbdel('CFB/${fromext}'));
172   $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
173   $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
174   $ext->add($id, $c, '', new ext_playback('cancelled'));
175   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
176 }
177
178 function callforward_cfboff($c) {
179   global $ext;
180
181   $id = "app-cf-busy-off"; // The context to be included
182
183   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
184
185   // for this extension
186   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
187   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
188   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
189   $ext->add($id, $c, '', new ext_dbdel('CFB/${AMPUSER}'));
190   $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&de-activated')); // $cmd,n,Playback(...)
191   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
192
193   // for any extension, dial *XX<exten>
194   $clen = strlen($c);
195   $c = "_$c.";
196   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
197   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
198   $ext->add($id, $c, '', new ext_setvar('fromext', '${EXTEN:'.$clen.'}'));
199   $ext->add($id, $c, '', new ext_dbdel('CFB/${fromext}'));
200   $ext->add($id, $c, '', new ext_playback('call-fwd-on-busy&for&extension'));
201   $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
202   $ext->add($id, $c, '', new ext_playback('cancelled'));
203   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
204  
205 }
206
207 // Call Forward on No Answer/Unavailable (i.e. phone not registered)
208 function callforward_cfuon($c) {
209   global $ext;
210
211   $id = "app-cf-unavailable-on"; // The context to be included
212
213   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
214
215   // prompt for extension
216   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
217   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
218   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
219   $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans'));
220   $ext->add($id, $c, '', new ext_playback('please-enter-your&extension'));
221   $ext->add($id, $c, '', new ext_read('fromext', 'then-press-pound'));
222   $ext->add($id, $c, '', new ext_setvar('fromext', '${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}'));
223   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
224   $ext->add($id, $c, 'startread', new ext_playback('ent-target-attendant'));
225   $ext->add($id, $c, '', new ext_read('toext', 'then-press-pound'));
226   $ext->add($id, $c, '', new ext_gotoif('$["foo${toext}"="foo"]', 'startread'));
227   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
228   $ext->add($id, $c, '', new ext_setvar('DB(CFU/${fromext})', '${toext}'));
229   $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans&for&extension'));
230   $ext->add($id, $c, '', new ext_saydigits('${fromext}'));
231   $ext->add($id, $c, '', new ext_playback('is-set-to'));
232   $ext->add($id, $c, '', new ext_saydigits('${toext}'));
233   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
234
235   // assume this extension and forward to number after the feature code
236   $clen = strlen($c);
237   $c = "_$c.";
238   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
239   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
240   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
241   $ext->add($id, $c, '', new ext_setvar('DB(CFU/${AMPUSER})', '${EXTEN:'.$clen.'}'));
242   $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans&for&extension'));
243   $ext->add($id, $c, '', new ext_saydigits('${AMPUSER}'));
244   $ext->add($id, $c, '', new ext_playback('is-set-to'));
245   $ext->add($id, $c, '', new ext_saydigits('${EXTEN:'.$clen.'}'));
246   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
247 }
248
249 function callforward_cfuoff($c) {
250   global $ext;
251
252   $id = "app-cf-unavailable-off"; // The context to be included
253
254   $ext->addInclude('from-internal-additional', $id); // Add the include from from-internal
255
256   // for this extension
257   $ext->add($id, $c, '', new ext_answer('')); // $cmd,1,Answer
258   $ext->add($id, $c, '', new ext_wait('1')); // $cmd,n,Wait(1)
259   $ext->add($id, $c, '', new ext_macro('user-callerid')); // $cmd,n,Macro(user-callerid)
260   $ext->add($id, $c, '', new ext_dbdel('CFU/${AMPUSER}'));
261   $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans&de-activated')); // $cmd,n,Playback(...)
262   $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid)
263
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('CFU/${fromext}'));
271   $ext->add($id, $c, '', new ext_playback('call-fwd-no-ans&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 ?>
Note: See TracBrowser for help on using the browser.