[tools] / trunk / Video_Conferencing_Startup_Kit_Pkg_2 / asterisk / extensions-conference-demo.conf Repository:
ViewVC logotype

Annotation of /trunk/Video_Conferencing_Startup_Kit_Pkg_2/asterisk/extensions-conference-demo.conf

Parent Directory Parent Directory | Revision Log Revision Log


Revision 124 - (view) (download)

1 : jhermanski 89 ;-------------------------------------------------------------------------------
2 :    
3 :     ; Menu for all conference demos
4 :     [conference_menu]
5 :     exten => s,1,Set(CHANNEL(language)=en_US)
6 : jhermanski 108 exten => s,2,Set(OVERLAY=id=text_box_vga&header=Video Conferencing&line1=1 Animal Conference&line2=2 PIN Conference&line3=3 Conference Record&line4=4 Controlled Conferencing&line5=5 Demo Menu&footer=Powermedia)
7 : jhermanski 89 exten => s,3,Set(TIMEOUT_CNT=0)
8 : jhermanski 108 exten => s,4,WoomeraBackground(${APPNAME}/ConferenceMenu,${APPNAME}/background_black_VGA,${OVERLAY})
9 : jhermanski 89 exten => s,5,WaitExten(21)
10 :     exten => 1,1,Goto(animal_conference,s,1)
11 :     exten => 2,1,Goto(pin_conference,s,1)
12 :     exten => 3,1,Goto(confrecord_menu,s,1)
13 :     exten => 4,1,Goto(controlled_conf_menu,s,1)
14 : jhermanski 108 exten => 5,1,Goto(conference_menu,s,1)
15 : jhermanski 89 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
16 :     exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
17 :     exten => t,n,WoomeraStop
18 :     exten => t,n,Goto(conference_menu,s,4)
19 :     exten => i,1,Goto(conference_menu,s,1)
20 :    
21 :    
22 :     [pin_conference]
23 :     ;
24 :     ; A file-based DB keeps track of the allowed conferences and the number of participants
25 :     ; in each. The caller is asked if he wants to start a new conference, in which case an ID
26 :     ; is supplied, the DB record updated accordingly and the caller is the first conferee in
27 :     ; that conference. He relays the ID to other people and they call in and enter the conference
28 :     ; by supplying the ID.
29 :    
30 :     exten => s,1,Set(CHANNEL(language)=en_US)
31 :     ;
32 :     ; Query to ask if starting new conference or joining existing
33 : jhermanski 108 exten => s,2,Set(OVERLAY=id=text_box_vga&header=PIN Conference&line1=1 Start New Conference&line2=2 Enter PIN Conference&line3=3 Demo Menu&footer=Powermedia)
34 : jhermanski 89 exten => s,3,Set(TIMEOUT_CNT=0)
35 : jhermanski 108 exten => s,4,WoomeraBackground(${APPNAME}/PinConference,${APPNAME}/background_black_VGA,${OVERLAY})
36 : jhermanski 89 exten => s,5,WaitExten(20)
37 :     exten => 1,1,Goto(new_pin_conference,s,1)
38 :     exten => 2,1,Goto(get_existing_pin,s,1)
39 : jhermanski 108 exten => 3,1,Goto(conference_menu,s,1)
40 : jhermanski 89 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
41 :     exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
42 :     exten => t,n,WoomeraStop
43 :     exten => t,n,Goto(pin_conference,s,4)
44 :     exten => i,1,Goto(pin_conference,s,1)
45 :    
46 :     [new_pin_conference]
47 :     ;
48 :     ; AGI script will check DB for next available conference ID and voice it to caller.
49 :     ; Then we put him into that conference. Conferencd ID returned in PIN_CONF_ID
50 :    
51 :     exten => s,1,Set(CHANNEL(language)=en_US)
52 : jhermanski 108 exten => s,2,Set(OVERLAY=id=text_box_vga&header=PIN Conference&line1= &line2= Starting New&line3= PIN Conference&footer=Powermedia)
53 :     exten => s,3,WoomeraBackground(${APPNAME}/NewPinConference,${APPNAME}/background_black_VGA,${OVERLAY})
54 : jhermanski 89 exten => s,4,WaitExten(10)
55 :     exten => i,1,Goto(new_pin_conference,t,1)
56 :     exten => t,1,WoomeraStop
57 :     exten => t,2,AGI(enter_new_pin_conf.agi)
58 :     ;
59 :     ; Get either the next available ID or "NONE" - all conferences in use
60 :     exten => t,3,GotoIf($["${PIN_CONF_ID}" = "NONE"]?all_confs_in_use,s,1)
61 :     ; When done with the conference [remove_from_pin_conference] context will take care
62 :     ; of DB update that marks a caller leaving the conference
63 :     exten => t,4,Dial(WOOMERA/conf:${PIN_CONF_ID}/tiles=4,30,F(remove_from_pin_conf^s^1))
64 :    
65 :     [get_existing_pin]
66 :     ;
67 :     ; AGI script will check DB to validate conference ID. If OK,
68 :     ; we put him into that conference
69 :    
70 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=PIN Conference&line1=Please enter your 3&line2=digit conference PIN&footer=Powermedia)
71 : jhermanski 89 exten => s,2,Set(TIMEOUT_CNT=0)
72 : jhermanski 108 exten => s,3,WoomeraBackground(${APPNAME}/PinEntryPrompt,${APPNAME}/background_black_VGA,${OVERLAY})
73 : jhermanski 89 exten => s,4,WaitExten(10)
74 :     ; 101-106 are valid entries
75 :     exten => _XXX,1,AGI(validate_pin_conf.agi, ${EXTEN})
76 :     exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
77 :     exten => _XXX,n,GotoIf($["${VALID_PIN}" = "T"]?join_existing_pin_conference,s,1)
78 :     exten => _XXX,n,GotoIf($["${VALID_PIN}" = "F"]?bad_pin,s,1)
79 :     exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
80 :     exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
81 :     exten => t,n,WoomeraStop
82 :     exten => t,n,Goto(get_existing_pin,s,3)
83 :     exten => i,1,Goto(get_existing_pin,s,1)
84 :    
85 :     [bad_pin]
86 :     ;
87 :     ; Deliver "Entered bad PIN" message and resolicit
88 :    
89 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=PIN Conference&line1=Invalid PIN&line2=Please re-enter PIN&footer=Powermedia)
90 :     exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/background_black_VGA,${OVERLAY})
91 : jhermanski 89 exten => s,n,WaitExten(6)
92 :     exten => t,1,WoomeraStop
93 :     exten => t,n,Goto(get_existing_pin,s,1)
94 :    
95 :    
96 :     [join_existing_pin_conference]
97 :     ;
98 :     ; Good conference PIN - can join
99 :     exten => s,1,AGI(enter_existing_pin_conf.agi,${COLLECTED_PIN})
100 :     ; When done with the conference [remove_from_pin_conference] context will take care
101 :     ; of DB update that marks a caller leaving the conference
102 :     exten => s,n,Dial(WOOMERA/conf:${PIN_CONF_ID}/tiles=4,30,F(remove_from_pin_conf^s^1))
103 :    
104 :     [remove_from_pin_conf]
105 :     ;
106 :     ; Land in this context when have left a pin conference.
107 :     ; Use AGI to decrement the pin conference database for this particular conference
108 :     exten => s,1,Set(CHANNEL(language)=en_US)
109 :     exten => s,n,AGI(leave_pin_conf.agi,${CHANNEL:13:3})
110 :     exten => s,n,Hangup
111 :    
112 :     [all_confs_in_use]
113 :     ;
114 :     ; No open conference IDs - deliver nice message and dump
115 :     ;
116 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=Conferences Busy&line1=All Conference IDs&line2=are currently in use!&line3=Please try later&footer=Powermedia)
117 :     exten => s,n,WoomeraBackground(${APPNAME}/AllConferencesInUse,${APPNAME}/background_black_VGA,${OVERLAY})
118 : jhermanski 89 exten => s,n,WaitExten(10)
119 :     exten => t,1,WoomeraStop
120 :     exten => t,n,hangup
121 :    
122 :     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
123 :     ;
124 :     ; Animal Conference
125 :     ;
126 :     ; Play an intro still with some voiceover, then kick off the 3 animals that
127 :     ; come into the conference using SIPP plays
128 :     ;
129 :     [animal_conference]
130 :     ;
131 :     ; AGI script will check DB for next available animal conference ID.
132 :     ; Then we put him into that conference. Conferencd ID returned in ANIMAL_CONF_ID
133 :    
134 :     exten => s,1,Set(CHANNEL(language)=en_US)
135 :     exten => s,n,WoomeraBackground(${APPNAME}/AnimalConference,${APPNAME}/AnimalConference)
136 :     exten => s,n,WaitExten(5)
137 :     exten => _[0123456789#*],1,Goto(start_animal_conference,s,1)
138 :     exten => t,1,WoomeraStop
139 :     exten => t,n,Goto(start_animal_conference,s,1)
140 :     exten => i,1,Goto(start_animal_conference,s,1)
141 :    
142 :     [start_animal_conference]
143 :     exten => s,1,AGI(get_new_animal_conf_id.agi)
144 :     ; Get either the next available ID or "NONE" - all conferences in use
145 :     exten => s,n,GotoIf($["${ANIMAL_CONF_ID}" = "NONE"]?all_confs_in_use,s,1)
146 : jhermanski 108 exten => s,n,System(${SIPP_LOC}/VGA/startanimalconf.sh ${ANIMAL_CONF_ID})
147 : jhermanski 89 exten => s,n,Dial(WOOMERA/conf:${ANIMAL_CONF_ID}/tiles=4,30,F(leave_animal_conf^s^1))
148 :    
149 :    
150 :     [leave_animal_conf]
151 :     ;
152 :     ; Land in this context when have left an animal conference.
153 :     ; Conference ID is embedded in the channel name
154 :     ; Use AGI to decrement the pin conference database for this particular conference
155 :     exten => s,1,Set(CHANNEL(language)=en_US)
156 :     exten => s,n,AGI(leave_animal_conf.agi,${CHANNEL:13:3})
157 :     exten => s,n,Hangup
158 :    
159 :     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
160 :     ;
161 :     ; Conference Recording
162 :     ;
163 :     [confrecord_menu]
164 :     exten => s,1,Set(CHANNEL(language)=en_US)
165 : jhermanski 108 exten => s,2,Set(OVERLAY=id=text_box_vga&header=Conference Record&line1=1 Start/Record New&line2= Conference&line3=2 Enter Existing Conference&line4=3 Replay Conference&line5=4 Demo Menu&footer=Powermedia)
166 : jhermanski 89 exten => s,3,Set(TIMEOUT_CNT=0)
167 : jhermanski 108 exten => s,4,WoomeraBackground(${APPNAME}/ConferenceRecordMenu,${APPNAME}/background_black_VGA,${OVERLAY})
168 : jhermanski 89 exten => s,5,WaitExten(30)
169 :     exten => 1,1,Goto(confrecord,1,1)
170 :     exten => 2,1,Goto(confrecord,2,1)
171 :     exten => 3,1,Goto(confrecord,3,1)
172 : jhermanski 108 exten => 4,1,Goto(conference_menu,s,1)
173 : jhermanski 89 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
174 :     exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
175 :     exten => t,n,WoomeraStop
176 :     exten => t,n,Goto(confrecord_menu,s,4)
177 :     exten => i,1,Goto(confrecord_menu,s,1)
178 :    
179 :     [confrecord]
180 :     ; This conferee enters the recorded conference, already knowing the conference PIN
181 :     ; Recording is only started and stopped by the first person who generates the conferenc PIN
182 :     ; This one enters and triggers recording
183 :     ; And ends conference record on leaving
184 :     exten => 1,1,Answer
185 :     exten => 1,n,Set(CHANNEL(language)=en_US)
186 :     exten => 1,n,AGI(enter_new_conf_record.agi)
187 :     ; Get either the next available ID or "NONE" - all conferences in use
188 :     exten => 1,n,GotoIf($["${CONF_RECORD_ID}" = "NONE"]?all_confs_in_use,s,1)
189 :     exten => 1,n,System(${AMI_SCRIPT_LOC}/confrec_originate.sh ${CONF_RECORD_ID})
190 :     exten => 1,n,Dial(WOOMERA/conf:${CONF_RECORD_ID}/tiles=2,30,F(done_with_recorded_conference^s^1))
191 :    
192 :     exten => 2,1,Answer
193 :     exten => 2,n,Set(CHANNEL(language)=en_US)
194 :     exten => 2,n,Goto(get_existing_recorded_pin,s,1)
195 :    
196 :     ; Conference recording playback -
197 :     exten => 3,1,Answer
198 :     exten => 3,n,Set(CHANNEL(language)=en_US)
199 :     exten => 3,n,Verbose(Replay conference recording)
200 :     exten => 3,n,Goto(get_pin_for_replay,s,1)
201 :    
202 :     ; Conexts to trigger conference recording. Extension and recording file name
203 :     ; corresponds to conference ID
204 :     ; Recording terminates when the originator leaves the conference
205 :     [conf_record_131]
206 :     exten => s,1,Set(CHANNEL(language)=en_US)
207 :     exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_131,${APPNAME}/conference_recording_131,${MAX_CONF_RECORD_TIME})
208 :     exten => s,n,Hangup
209 :     [conf_record_132]
210 :     exten => s,1,Set(CHANNEL(language)=en_US)
211 :     exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_132,${APPNAME}/conference_recording_132,${MAX_CONF_RECORD_TIME})
212 :     exten => s,n,Hangup
213 :     [conf_record_133]
214 :     exten => s,1,Set(CHANNEL(language)=en_US)
215 :     exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_133,${APPNAME}/conference_recording_133,${MAX_CONF_RECORD_TIME})
216 :     exten => s,n,Hangup
217 :     [conf_record_134]
218 :     exten => s,1,Set(CHANNEL(language)=en_US)
219 :     exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_134,${APPNAME}/conference_recording_134,${MAX_CONF_RECORD_TIME})
220 :     exten => s,n,Hangup
221 :     [conf_record_135]
222 :     exten => s,1,Set(CHANNEL(language)=en_US)
223 :     exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_135,${APPNAME}/conference_recording_135,${MAX_CONF_RECORD_TIME})
224 :     exten => s,n,Hangup
225 :     [conf_record_136]
226 :     exten => s,1,Set(CHANNEL(language)=en_US)
227 :     exten => s,n,WoomeraRecord(${APPNAME}/conference_recording_136,${APPNAME}/conference_recording_136,${MAX_CONF_RECORD_TIME})
228 :     exten => s,n,Hangup
229 :    
230 :     [done_with_recorded_conference]
231 :     exten => s,1,Set(CHANNEL(language)=en_US)
232 :     exten => s,n,AGI(leave_recorded_conf.agi, ${CHANNEL})
233 :     exten => s,n,System(${AMI_SCRIPT_LOC}/confrec_hangup.sh ${CHANNEL})
234 :     exten => s,n,Hangup
235 :    
236 :     ; Enter Existing Conference
237 :     ;;;;;;;;;;;;;;;;;;;;;;;;;;;
238 :    
239 :     [get_existing_recorded_pin]
240 :     ;
241 :     ; AGI script will check DB to validate conference ID. If OK,
242 :     ; we put him into that conference
243 :    
244 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=Conference Record&line1=Please enter your 3&line2=digit conference PIN&footer=Powermedia)
245 : jhermanski 89 exten => s,2,Set(TIMEOUT_CNT=0)
246 : jhermanski 108 exten => s,3,WoomeraBackground(${APPNAME}/PinEntryPrompt,${APPNAME}/background_black_VGA,${OVERLAY})
247 : jhermanski 89 exten => s,4,WaitExten(10)
248 :     ; 131-136 are valid entries
249 :     exten => _XXX,1,AGI(validate_record_pin.agi, ${EXTEN})
250 :     exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
251 :     exten => _XXX,n,GotoIf($["${VALID_RECORD_PIN}" = "T"]?join_existing_recorded_conference,s,1)
252 :     exten => _XXX,n,GotoIf($["${VALID_RECORD_PIN}" = "F"]?bad_pin_for_recorded_conf,s,1)
253 :     exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
254 :     exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
255 :    
256 :     exten => t,n,WoomeraStop
257 :     exten => t,n,Goto(get_existing_recorded_pin,s,3)
258 :     exten => i,1,Goto(get_existing_recorded_pin,s,1)
259 :    
260 :     [bad_pin_for_recorded_conf]
261 :     ;
262 :     ; Deliver "Entered bad PIN" message and resolicit
263 :    
264 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=Conference Record&line1=Invalid PIN&line2=Please re-enter PIN&footer=Powermedia)
265 :     exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/background_black_VGA,${OVERLAY})
266 : jhermanski 89 exten => s,n,WaitExten(6)
267 :     exten => t,1,WoomeraStop
268 :     exten => t,n,Goto(get_existing_recorded_pin,s,1)
269 :    
270 :     [join_existing_recorded_conference]
271 :     ;
272 :     ; Good conference PIN - can join recorded conference
273 :     exten => s,1,AGI(enter_existing_recorded_conf.agi,${COLLECTED_PIN})
274 :     ; When done with the conference [done_with_recorded_conference] context will take care
275 :     ; of DB update that marks a caller leaving the conference
276 :     exten => s,n,Dial(WOOMERA/conf:${COLLECTED_PIN}/tiles=4,30,F(done_with_recorded_conference^s^1))
277 :    
278 :     ; Replay
279 :     ;;;;;;;;
280 :    
281 :     [get_pin_for_replay]
282 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=Conference Record&line1=Please enter the 3&line2=digit conference ID&line3=to replay&footer=Powermedia)
283 :     exten => s,n,WoomeraBackground(${APPNAME}/EnterReplayID,${APPNAME}/background_black_VGA,${OVERLAY})
284 : jhermanski 89 exten => s,n,WaitExten(15)
285 :     ; 131-136 are valid entries
286 :     exten => _XXX,1,AGI(validate_record_pin_for_replay.agi, ${EXTEN})
287 :     exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
288 :     exten => _XXX,n,GotoIf($["${VALID_RECORD_PIN}" = "F"]?bad_record_pin,s,1)
289 :     ;
290 :     ; Play one of the recordings
291 :     exten => _XXX,n,WoomeraPlayback(${APPNAME}/conference_recording_${COLLECTED_PIN},${APPNAME}/conference_recording_${COLLECTED_PIN})
292 :     exten => _XXX,n,Hangup
293 :     exten => t,1,WoomeraStop
294 :     exten => t,n,Goto(get_pin_for_replay,s,1)
295 :     exten => i,1,Goto(get_pin_for_replay,s,1)
296 :    
297 :     [bad_record_pin]
298 :     ;
299 :     ; Deliver "Entered bad PIN" message and resolicit
300 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=Conference Record&line1=Invalid PIN&line2=Please re-enter PIN&footer=Powermedia)
301 :     exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/background_black_VGA,${OVERLAY})
302 : jhermanski 89 exten => s,n,WaitExten(6)
303 :     exten => t,1,WoomeraStop
304 :     exten => t,n,Goto(get_pin_for_replay,s,1)
305 :    
306 :    
307 :    
308 :     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
309 :     ;
310 :     ; Controlled Conference
311 :     ; Assumes that conference ids used are configured with "mode = controlled" on DiaStar.
312 :     ;
313 :     ; The controller's connection in managed by the dialplan by passing the 'G'
314 :     ; option to the Dial() application. This has been done to allow an image to be
315 :     ; played to conference attendees at times when no presenters are connected. The
316 :     ; controllers audio remains connected at all times and should be muted locally
317 :     ; if necessary.
318 :     ;
319 :    
320 :     [controlled_conf_menu]
321 :     ;
322 :     ; A file-based DB keeps track of the allowed conferences and the number of participants
323 :     ; in each. The caller is asked if he wants to start a new conference, in which case an ID
324 :     ; is supplied, the DB record updated accordingly and the caller is the first conferee in
325 :     ; that conference. He relays the ID to other people and they call in and enter the conference
326 :     ; by supplying the ID.
327 :    
328 :     exten => s,1,Set(CHANNEL(language)=en_US)
329 : jhermanski 108 exten => s,2,Set(OVERLAY=id=text_box_vga&header=Controlled Conf&line1=1 Start New Conference&line2= as Controller&line3=2 Enter as Presenter&line4=3 Enter as Atendee&line5=4 Demo Menu&footer=Powermedia)
330 : jhermanski 89 exten => s,3,Set(TIMEOUT_CNT=0)
331 : jhermanski 108 exten => s,4,WoomeraBackground(${APPNAME}/ControlledConference,${APPNAME}/background_black_VGA,${OVERLAY})
332 : jhermanski 89 exten => s,5,WaitExten(40)
333 :     exten => 1,1,Goto(controller,s,1)
334 :     exten => 2,1,Set(CONFEREE_TYPE=presenter)
335 :     exten => 2,n,Goto(get_controlled_pin,s,1)
336 :     exten => 3,1,Set(CONFEREE_TYPE=attendee)
337 :     exten => 3,n,Goto(get_controlled_pin,s,1)
338 : jhermanski 108 exten => 4,1,Goto(conference_menu,s,1)
339 : jhermanski 89 exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
340 :     exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
341 :     exten => t,n,WoomeraStop
342 :     exten => t,n,Goto(controlled_conf_menu,s,4)
343 :     exten => i,1,Goto(controlled_conf_menu,s,1)
344 :    
345 :    
346 :     [controller]
347 :     ; The conference controller dials into here.
348 :     ; Setting the number of tiles to 0, overrides the configuration and allows for
349 :     ; the number of tiles shown to grow and shrink dynamically along with the number
350 :     ; of presenters.
351 :     ;
352 :     ;
353 :     ; AGI script will check DB for next available conference ID and voice it to caller.
354 :     ; Then we put him into that conference. Conferencd ID returned in PIN_CONF_ID
355 :    
356 :     exten => s,1,Set(_PARENT=${CHANNEL})
357 : jhermanski 108 exten => s,2,Set(OVERLAY=id=text_box_vga&header=Controlled Conf&line1= &line2= Starting New&line3= Controlled Conference&footer=Powermedia)
358 :     exten => s,3,WoomeraBackground(${APPNAME}/NewControlledConference,${APPNAME}/background_black_VGA,${OVERLAY})
359 : jhermanski 89 exten => s,4,WaitExten(16)
360 :     exten => i,1,Goto(controller,t,1)
361 :     exten => t,1,WoomeraStop
362 :     exten => t,2,AGI(enter_new_controlled_conf.agi)
363 :     ;
364 :     ; Get either the next available ID or "NONE" - all conferences in use
365 :     exten => t,3,GotoIf($["${CONTROLLED_CONF_ID}" = "NONE"]?all_confs_in_use,s,1)
366 :     exten => t,4,Dial(WOOMERA/${WOOMERA_PROFILE}/conf:${CONTROLLED_CONF_ID}/role=controller:tiles=0,30,G(cc_connected,s,1)))
367 :     exten => t,5,Hangup
368 :    
369 :     [get_controlled_pin]
370 :     ;
371 :     ; AGI script will check DB to validate conference ID. If OK,
372 :     ; we put him into that conference
373 :    
374 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=Controlled Conference&line1=Please enter your 3&line2=digit conference PIN&footer=Powermedia)
375 : jhermanski 89 exten => s,2,Set(TIMEOUT_CNT=0)
376 : jhermanski 108 exten => s,3,WoomeraBackground(${APPNAME}/PinEntryPrompt,${APPNAME}/background_black_VGA,${OVERLAY})
377 : jhermanski 89 exten => s,4,WaitExten(10)
378 :     ; 111-116 are valid entries
379 :     exten => _XXX,1,AGI(validate_controlled_conf.agi, ${EXTEN})
380 :     exten => _XXX,n,Set(COLLECTED_PIN=${EXTEN})
381 :     exten => _XXX,n,GotoIf($["${VALID_PIN}" = "T"]?enter_existing_controlled_conf,s,1)
382 :     exten => _XXX,n,GotoIf($["${VALID_PIN}" = "F"]?bad_controlled_pin,s,1)
383 :     exten => t,1,Set(TIMEOUT_CNT=$[${TIMEOUT_CNT} + 1])
384 :     exten => t,n,GotoIf($[${TIMEOUT_CNT} > 1]?hangup,s,1)
385 :     exten => t,n,WoomeraStop
386 :     exten => t,n,Goto(get_controlled_pin,s,3)
387 :     exten => i,1,Goto(get_controlled_pin,s,1)
388 :    
389 :     [bad_controlled_pin]
390 :     ;
391 :     ; Deliver "Entered bad PIN" message and resolicit
392 :    
393 : jhermanski 108 exten => s,1,Set(OVERLAY=id=text_box_vga&header=Controlled Conference&line1=Invalid PIN&line2=Please re-enter PIN&footer=Powermedia)
394 :     exten => s,n,WoomeraBackground(${APPNAME}/BadPin,${APPNAME}/background_black_VGA,${OVERLAY})
395 : jhermanski 89 exten => s,n,WaitExten(6)
396 :     exten => t,1,WoomeraStop
397 :     exten => t,n,Goto(get_controlled_pin,s,1)
398 :    
399 :     [enter_existing_controlled_conf]
400 :     ; Presenters are full members of the conference whose
401 :     ; media are included in the output.
402 :     ;
403 :     ; Attendees are passive observers of the conference whose
404 :     ; own media are not included in the output.
405 :     ;
406 :     ; Both enter a conference here.
407 :     exten => s,1,AGI(enter_existing_controlled_conf.agi,${CONTROLLED_CONF_ID})
408 :     exten => s,n,Dial(WOOMERA/${WOOMERA_PROFILE}/conf:${CONTROLLED_CONF_ID}/role=${CONFEREE_TYPE},30)
409 :     exten => s.n,Hangup
410 :    
411 :     [remove_from_controlled_conf]
412 :     ; The conference controller lands in this context when he leaves a controlled conference.
413 :     ; Extension matches conference ID to decrement.
414 :     ; Use AGI to set the pin conference database to zer for this particular conference, since
415 :     ; everyone will be tossed out when the controller leaves
416 :     exten => s,1,Set(CHANNEL(language)=en_US)
417 :     ; Conference ID is embedded in the channel name
418 :     exten => s,n,AGI(leave_controlled_conf.agi,${CHANNEL:14:3})
419 :     exten => s,n,Hangup
420 :    
421 :     [cc_connected]
422 :     ; When the conference controller call connects to the conference, the Dial()
423 :     ; application jumps to the context.
424 :     ;
425 :     exten => s,1,Goto(cc_caller,s,1)
426 :     exten => s,2,Goto(cc_callee,s,1)
427 :    
428 :     ; Answer the original inbound call.
429 :     ;
430 :     [cc_caller]
431 :     exten => s,1,Answer
432 :     exten => t,1,NoOp
433 :     exten => h,1,Hangup
434 :    
435 :     ; The controllers own video stream can be shown instead of the image file by
436 :     ; removing the WoomeraBackround() application.
437 :     ;
438 :     [cc_callee]
439 :     exten => s,1,Set(CHANNEL(language)=en_US)
440 : jhermanski 124 ;exten => s,n,WoomeraBackground(,${APPNAME}/dialogic-controlled-conf-VGA)
441 : jhermanski 89 exten => s,n,Bridge(${PARENT})
442 :     ; After controller hangs up, we continue here and need to zero out the
443 :     ; number of people in the conference
444 :     exten => s,n,Goto(remove_from_controlled_conf,s,1)
445 :     exten => s,n,Hangup
446 :     ;-------------------------------------------------------------------------------
447 :    
448 :    

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.8