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

Revision 1615, 12.6 kB (checked in by mheydon1973, 7 years ago)

* Allow *XX<exten> on ALL de-active codes -- compliments the seperate de-activate prompting features
* Added Call Forward on No Answer / Unavailable

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